This commit is contained in:
Jonas Zeunert
2019-09-25 20:12:09 +02:00
4 changed files with 99 additions and 4 deletions

3
.gitignore vendored
View File

@@ -1,4 +1,3 @@
*.idea*
cmake-build-debug
.idea/*
*__pycache__/*
*__pycache__*

View File

@@ -77,7 +77,7 @@ void OutputRequestHandler::handleRequest(HTTPServerRequest &request,
try
{
boost::optional<Poco::JSON::Object> json_response = parseRequest(item_type, item_name, action, score);
json_response->stringify(std::cerr);
if(json_response)
{
std::ostream& ostr = response.send();

View File

@@ -46,4 +46,4 @@ class Networking:
self.get("/displays" + display + "/write_score/" + str(score))
def getInputEvent(self):
pass
return ''

96
cli/game.py Normal file
View 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')