def update(self, delta): self.time += delta self.delta = delta self.current_squares = self.getsquares(self.camera.rect) for obj in self.objects: obj.update(delta) self.player.update(delta) self.camera.update(delta) self.space.step(delta) if len(self.destroyed) > 0: for obj in self.destroyed: obj.destroy() self.destroyed = [] if game.get_key_pressed(pygame.K_ESCAPE): game.set_state(MenuState()) for message in self.messages: message[1] -= delta if message[1] < 0: self.messages.remove(message)
def handle_event(self, event): from game import Overworld State.handle_event(self, event) if event.type == pygame.KEYDOWN: old_cur_x_index, old_cur_y_index = Overworld.cur_x_index, Overworld.cur_y_index if event.key == pygame.K_UP: Overworld.cur_y_index -= 1 self.refresh_screen = True elif event.key == pygame.K_DOWN: Overworld.cur_y_index += 1 self.refresh_screen = True elif event.key == pygame.K_LEFT: Overworld.cur_x_index -= 1 self.refresh_screen = True elif event.key == pygame.K_RIGHT: Overworld.cur_x_index += 1 self.refresh_screen = True if self._level.isWall(Overworld.center_x_index(), Overworld.center_y_index()): Overworld.cur_x_index = old_cur_x_index Overworld.cur_y_index = old_cur_y_index elif self._level.isLadder(Overworld.center_x_index(), Overworld.center_y_index()): self._level = self._level.load_level(Overworld.center_x_index(), Overworld.center_y_index()) self.refresh_screen = True elif self._level.isMonster(Overworld.center_x_index(), Overworld.center_y_index()): from game import set_state from battle_state import BattleState from battle import Skeleton new_state = BattleState(Skeleton()) set_state(new_state) new_state.play_music() return
def draw(self, screen): gui.draw_image(screen, resources.splash) with gui.Box(screen, "Main Menu", (450, 300, 220, 240)): if gui.Button(screen, "play", "play", (10, 10, 200, 50)): game.set_state(GameState()) if gui.Button(screen, "help", "help", (10, 70, 200, 50)): game.set_state(HelpState()) if gui.Button(screen, "quit", "quit", (10, 130, 200, 50)): game.quit()
def main(initial_state = None): game.initialize() if initial_state: game.set_state(initial_state) state = game.state() state.play_music() while True: for event in pygame.event.get(): state.handle_event(event) state.update() if state.refresh_screen: state.draw_to_screen() game.refresh_screen() state.refresh_screen = False state = game.state() game.tick() return
def main_loop(initial_state): game.set_state(initial_state) state = game.state() while True: for event in pygame.event.get(): state.handle_event(event) state.update() if state.refresh_screen: state.draw(game.screen()) game.refresh_screen() state.refresh_screen = False elif state.dirty_list: state.draw(game.screen()) game.refresh_subscreen(state.dirty_list) state.dirty_list = [] state = game.state() game.tick() return
def handle_event(self, event): State.handle_event(self, event) if event.type == pygame.KEYDOWN: if event.key == pygame.K_DOWN: if self._current_choice < self._number_of_choices - 1: self._current_choice += 1 self.refresh_screen = True elif event.key == pygame.K_UP: if self._current_choice > 0: self._current_choice -= 1 self.refresh_screen = True elif event.key == pygame.K_RETURN: if self._current_choice == 0: from level_state import LevelState from game import set_state state = LevelState("tower_entrance.txt") set_state(state) state.play_music() return
def update(self, delta): self.leafy = pygame.image.load("data\\Environment\\Sky.png") self.flower = pygame.image.load("data\\Environment\\flower.png") self.wasp_body = pygame.image.load("data\\Characters\\Enemies\\Jalapeno\\Body.png") self.wasp_wing = pygame.image.load("data\\Characters\\Enemies\\Jalapeno\\Wing Front.png") self.broccoli_body = pygame.image.load("data\\Characters\\Enemies\\Onion\\Onion.png") self.player_body = pygame.image.load("data\\Characters\\Main Character\\Body.png") self.player_leg = pygame.image.load("data\\Characters\\Main Character\\Leg Front.png") self.player_wing = pygame.image.load("data\\Characters\\Main Character\\Wing Front.png") self.player_jaw_upper = pygame.image.load("data\\Characters\\Main Character\\Jaw Upper.png") self.player_jaw_lower = pygame.image.load("data\\Characters\\Main Character\\Jaw Lower.png") self.player_dead = pygame.image.load("data\\Characters\\Main Character\\Dead.png") self.bullet = pygame.image.load("data\\Characters\\Main Character\\Bullet.png") self.splash = pygame.image.load("data\\Menu\\SplashScreen.png") self.help = pygame.image.load("data\\Menu\\help.png") self.attack_icon = pygame.image.load("data\\Menu\\Attack.png") self.utility_icon = pygame.image.load("data\\Menu\\Utility.png") self.movement_icon = pygame.image.load("data\\Menu\\Movement.png") for i in range(len(GroundShapes)): GroundShapes[i] = (pygame.image.load(GroundShapes[i][0]), GroundShapes[i][1]) game.set_state(MenuState())
def cancelClicked(self, element, event): game.set_state(SelectCharacterState())
def createClicked(self, element, event): name = self.gui.find('name')[0].text game.connection.send(message.make_create(name)) game.set_state(SelectCharacterState())
def characterNameClicked(self, element, event): print('Selected', element.text) game.connection.send(message.make_select(element.text)) game.set_state(InGameState())
def createClicked(self, element, event): game.set_state(CreateCharacterState())
def handleLoginResponseMessage(self, successful): if successful: print("Login OK") game.set_state(SelectCharacterState()) else: print("Login refused")
def draw(self, screen): gui.draw_image(screen, resources.help) if gui.Button(screen, "back", "back", (300, 540, 200, 50)): game.set_state(MenuState())