Extended game model

This commit is contained in:
Johannes Wendel
2019-09-20 09:38:48 +02:00
parent 81c87a50ea
commit 0f24926ab9

View File

@@ -1,3 +1,4 @@
from observable import Observable
from FlippR_Networking import Networking from FlippR_Networking import Networking
output_server_address = '' output_server_address = ''
@@ -24,11 +25,68 @@ class LeftFlapEventHandler(EventHandler):
# do stuff... # do stuff...
pass 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): def snake_to_camel(word):
return ''.join(x.capitalize() or '' for x in word.split('_')) return ''.join(x.capitalize() or '' for x in word.split('_'))
handler = EventHandler(network) handler = EventHandler(network)
# handler.handle(snake_to_camel('left_flap') + 'EventHandler') handler.handle(snake_to_camel('left_flap') + 'EventHandler')
# while True: # while True:
# event_name = snake_to_camel(network.getInputEvent()) # event_name = snake_to_camel(network.getInputEvent())