Extended game model
This commit is contained in:
60
cli/game.py
60
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())
|
||||
|
||||
Reference in New Issue
Block a user