Merge branch 'master' of https://github.com/swinginbird/flippr-code
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,3 @@
|
|||||||
*.idea*
|
*.idea*
|
||||||
cmake-build-debug
|
cmake-build-debug
|
||||||
.idea/*
|
*__pycache__*
|
||||||
*__pycache__/*
|
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ void OutputRequestHandler::handleRequest(HTTPServerRequest &request,
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
boost::optional<Poco::JSON::Object> json_response = parseRequest(item_type, item_name, action, score);
|
boost::optional<Poco::JSON::Object> json_response = parseRequest(item_type, item_name, action, score);
|
||||||
json_response->stringify(std::cerr);
|
|
||||||
if(json_response)
|
if(json_response)
|
||||||
{
|
{
|
||||||
std::ostream& ostr = response.send();
|
std::ostream& ostr = response.send();
|
||||||
|
|||||||
@@ -46,4 +46,4 @@ class Networking:
|
|||||||
self.get("/displays" + display + "/write_score/" + str(score))
|
self.get("/displays" + display + "/write_score/" + str(score))
|
||||||
|
|
||||||
def getInputEvent(self):
|
def getInputEvent(self):
|
||||||
pass
|
return ''
|
||||||
|
|||||||
96
cli/game.py
Normal file
96
cli/game.py
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
from observable import Observable
|
||||||
|
from FlippR_Networking import Networking
|
||||||
|
|
||||||
|
output_server_address = ''
|
||||||
|
input_server_address = ''
|
||||||
|
|
||||||
|
#network = Networking(output_server_address, input_server_address)
|
||||||
|
network = ''
|
||||||
|
|
||||||
|
class EventHandler():
|
||||||
|
def __init__(self, network):
|
||||||
|
# brace yourselves, python incoming
|
||||||
|
self.subclasses = {subcls.__name__: subcls for subcls in self.__class__.__subclasses__()}
|
||||||
|
self.network = network
|
||||||
|
|
||||||
|
def handle(self, name):
|
||||||
|
self.subclasses[name](network)
|
||||||
|
|
||||||
|
class LeftFlapEventHandler(EventHandler):
|
||||||
|
def __init__(self, network):
|
||||||
|
print('Left Flap Event gets handled')
|
||||||
|
self.handle()
|
||||||
|
|
||||||
|
def handle(self):
|
||||||
|
# do stuff...
|
||||||
|
pass
|
||||||
|
|
||||||
|
class Bank(Target):
|
||||||
|
def __init__(self, targets):
|
||||||
|
self.targets = targets
|
||||||
|
self.__register_targets__()
|
||||||
|
|
||||||
|
def __target_hit__(self, target):
|
||||||
|
if all(target.is_hit for target in self.targets):
|
||||||
|
self.__all_targets_hit__()
|
||||||
|
|
||||||
|
def __all_targets_hit__(self):
|
||||||
|
self.__reset_all_targets__()
|
||||||
|
super.hit()
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __reset_all_targets__(self):
|
||||||
|
for target in self.targets:
|
||||||
|
target.reset()
|
||||||
|
|
||||||
|
def __register_targets__(self):
|
||||||
|
for target in self.targets:
|
||||||
|
target.on(target.hit_key, self.__target_hit__)
|
||||||
|
|
||||||
|
class Target(Observable):#is observable
|
||||||
|
def __init__(self, points, name):
|
||||||
|
self.points = points
|
||||||
|
self.name = name
|
||||||
|
self.hit_key = "hit"
|
||||||
|
|
||||||
|
def hit(self):
|
||||||
|
#notify Observers
|
||||||
|
#notify Gamestate
|
||||||
|
self.trigger(self.hit_key, self)
|
||||||
|
|
||||||
|
class BankTarget(Target):
|
||||||
|
def __init__(self, points):
|
||||||
|
super(points)
|
||||||
|
self.is_hit = False
|
||||||
|
|
||||||
|
def hit(self):
|
||||||
|
self.is_hit = True
|
||||||
|
super.hit()
|
||||||
|
#notify Bank
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.is_hit = False
|
||||||
|
|
||||||
|
|
||||||
|
class GameState:
|
||||||
|
def __init__(self, targets):
|
||||||
|
self.score = 0
|
||||||
|
self.targets = targets
|
||||||
|
for target in self.targets:
|
||||||
|
target.on(target.hit_key, self.__target_hit__)
|
||||||
|
|
||||||
|
def __target_hit__(self, target):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def snake_to_camel(word):
|
||||||
|
return ''.join(x.capitalize() or '' for x in word.split('_'))
|
||||||
|
|
||||||
|
handler = EventHandler(network)
|
||||||
|
handler.handle(snake_to_camel('left_flap') + 'EventHandler')
|
||||||
|
|
||||||
|
# while True:
|
||||||
|
# event_name = snake_to_camel(network.getInputEvent())
|
||||||
|
# handler.handle(event_name + 'EventHandler')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user