def main(): Log.Main("Gritty App").State("Init").call() pygame.init() pygame.display.set_caption("GRITTY") screen = pygame.display.set_mode((800, 600)) clock = pygame.time.Clock() ghandler = GameHandler(screen, clock) gscene = GameScene(screen) glog = GTextBox("Log Activity", 32, 320 + 64, 320, 192, logger=True) glog.messages = "Log Activity" gscene.add_gobject(glog) ghandler.add_scene(gscene) ghandler.hscene.active(gscene) while True: clock.tick(30) # for event in pygame.event.get(): # if event.type == pygame.QUIT: # pygame.quit() # sys.exit(0) ghandler.event_handler() # -> update objects ghandler.update() # <- # -> render objects screen.fill(Color.WHITE) ghandler.render() # pygame.display.flip() # <- Log.Main("Gritty App").State("End").call()
def action_attack(self, source=None, target=None): Log.Scene(self.name).Source(source.name).Attack(target.name).call() event = GEvent.new_event(GEvent.APP_DEFINED, self.event_battle_attack, self, GEvent.SCENE, {"source": self.battle_source, "target": self.battle_target}, ) return event
def attack(self, other): """attack implements the battle attack against the given actor. """ damage = self.pstr = other.pdef other.life -= damage if other.life < 0: other.life = 0 Log.GameActor(self.name).Attach(other.name).Damage(damage).call() return damage
def main(): Log.Main("Tiled App").State("Init").call() pygame.init() pygame.display.set_caption("Tiled App") screen = pygame.display.set_mode((WIDTH, HEIGHT)) clock = pygame.time.Clock() ghandler = GameHandler(screen, clock) gscene = GameScene(screen) ghandler.add_scene(gscene) ghandler.hscene.active(gscene) while True: clock.tick(FPS) ghandler.event_handler() # -> update objects ghandler.update() # <- # -> render objects screen.fill(Color.WHITE) ghandler.render() # pygame.display.flip() # <- Log.Main("Tiled App").State("End").call()
def move_player_to(self, direction): """move_player_to moves the player to the given direction. """ if self.catch_keyboard_gobject and self.player_turn: if direction == GameBoard.LEFT: ok, collision = self.move_it_gobject(self.catch_keyboard_gobject, -self.g_cell_size.x, 0) elif direction == GameBoard.RIGHT: ok, collision = self.move_it_gobject(self.catch_keyboard_gobject, self.g_cell_size.x, 0) elif direction == GameBoard.UP: ok, collision = self.move_it_gobject(self.catch_keyboard_gobject, 0, -self.g_cell_size.y) elif direction == GameBoard.DOWN: ok, collision = self.move_it_gobject(self.catch_keyboard_gobject, 0, self.g_cell_size.y) else: return False, None if ok: self.player_turn = False Log.Board(self.name).EndPlayerTurn().call() return ok, collision return True, None
def update(self, surface, **kwargs): """update provides any functionality to be done every tick. """ if not self.player_turn: self.off_player_counter += 1 if self.off_player_counter >= 2: self.off_player_counter = 0 self.player_turn = True Log.Board(self.name).StartPlayerTurn().call() super(GameBoard, self).update(surface, **kwargs) event_bucket = kwargs["event-bucket"] bucket = [] while len(event_bucket): event = event_bucket.pop(0) # Log.Scene(self.name).EventUpdateBucket(event).call() if event.type == GEvent.ENGINE and event.subtype == GEvent.DELETE and event.destination == GEvent.BOARD: self.del_gobject(event.source) event.destination = GEvent.SCENE bucket.append(event) event_bucket.extend(bucket)
def update(self, surface, **kwargs): """update updates object. """ super(GTimed, self).update(surface, **kwargs) if self.timed_counter == 0 or self.timed_counter > self.timed_tick_counter: if self.timed_tick == sys.maxsize: self.timed_tick = 0 if self.timed_tick_counter == sys.maxsize: self.timed_tick_counter = 0 self.timed_tick += 1 if self.timed_tick % self.timed_threshold == 0: self.timed_tick_counter += 1 Log.Update(self.name).Counter(self.timed_tick).call() GEvent.post_event( self.timed_event_type, self.timed_event_subtype, self, self.timed_event_destination, { "callback": self.timed_callback(self.dx, self.dy), "validation": lambda: (self.dx, self.dy) })
def action_pass(self, source=None, target=None): Log.Scene(self.name).Source(source.name).Pass(target.name).call() return None
def action_defend(self, source=None, target=None): Log.Scene(self.name).Source(source.name).Defend(target.name).call() return None