From d52b597f883d2f62b6cfe0d965874e6172abd73d Mon Sep 17 00:00:00 2001 From: andi Date: Thu, 12 Sep 2019 22:48:55 +0200 Subject: [PATCH 1/4] first steps towards game logic --- .gitignore | 3 +-- cli/FlippR_Networking.py | 2 +- cli/game.py | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 cli/game.py diff --git a/.gitignore b/.gitignore index 704ad01..0b5ff62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ *.idea* cmake-build-debug -.idea/* -*__pycache__/* +*__pycache__* diff --git a/cli/FlippR_Networking.py b/cli/FlippR_Networking.py index 875269e..2732b93 100644 --- a/cli/FlippR_Networking.py +++ b/cli/FlippR_Networking.py @@ -46,4 +46,4 @@ class Networking: self.get("/displays" + display + "/write_score/" + str(score)) def getInputEvent(self): - pass + return '' diff --git a/cli/game.py b/cli/game.py new file mode 100644 index 0000000..7dcefe1 --- /dev/null +++ b/cli/game.py @@ -0,0 +1,38 @@ +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): + self.subclasses = {subcls.__name__: subcls for subcls in self.__class__.__subclasses__()} + self.network = network + + def handle(self, name): + # brace yourselves, python incoming + 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 + +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') + + + From eb09b227b110f8446dfa94b91859b73ae2081519 Mon Sep 17 00:00:00 2001 From: andi Date: Thu, 12 Sep 2019 22:51:35 +0200 Subject: [PATCH 2/4] minor changes to game.py --- cli/game.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/game.py b/cli/game.py index 7dcefe1..a0e8dcc 100644 --- a/cli/game.py +++ b/cli/game.py @@ -8,11 +8,11 @@ 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): - # brace yourselves, python incoming self.subclasses[name](network) class LeftFlapEventHandler(EventHandler): From a5da39c15519081a90f9f52595697315e332e7da Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Fri, 13 Sep 2019 11:17:14 +0200 Subject: [PATCH 3/4] changes? --- FlippR-Driver/networking/output/OutputRequestHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FlippR-Driver/networking/output/OutputRequestHandler.cpp b/FlippR-Driver/networking/output/OutputRequestHandler.cpp index f75866a..301bdbf 100644 --- a/FlippR-Driver/networking/output/OutputRequestHandler.cpp +++ b/FlippR-Driver/networking/output/OutputRequestHandler.cpp @@ -77,7 +77,7 @@ void OutputRequestHandler::handleRequest(HTTPServerRequest &request, try { boost::optional json_response = parseRequest(item_type, item_name, action, score); - json_response->stringify(std::cerr); + if(json_response) { std::ostream& ostr = response.send(); From 5f2eb4fbdc8589044473b4381985678d3d3d7997 Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Fri, 20 Sep 2019 09:38:48 +0200 Subject: [PATCH 4/4] Extended game model --- cli/game.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/cli/game.py b/cli/game.py index a0e8dcc..7d973cb 100644 --- a/cli/game.py +++ b/cli/game.py @@ -1,3 +1,4 @@ +from observable import Observable from FlippR_Networking import Networking output_server_address = '' @@ -24,11 +25,68 @@ class LeftFlapEventHandler(EventHandler): # 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') +handler.handle(snake_to_camel('left_flap') + 'EventHandler') # while True: # event_name = snake_to_camel(network.getInputEvent())