def setup(self): # Set up game here. Call this fn to restart game self.setup_ground() if self.state == State.MAIN_MENU: self.start_screen_sprite_list = arcade.SpriteList() self.bee_sprite = Bee.setup_bee() self.start_screen_sprite_list.append(self.bee_sprite) # initiate & place starting screen self.start_screen = arcade.Sprite("sprites/start_screen.png", 1) self.start_screen.center_x = SCREEN_WIDTH / 2 self.start_screen.center_y = SCREEN_HEIGHT / 2 self.start_screen_sprite_list.append(self.start_screen) elif self.state == State.PLAYING: #initiate sprite lists self.bottom_obstacles_list = arcade.SpriteList() self.top_obstacles_list = arcade.SpriteList() self.flowers_list = arcade.SpriteList() self.player_sprite_list = arcade.SpriteList() #set up bee self.bee_sprite = Bee.setup_bee() self.player_sprite_list.append(self.bee_sprite) #set up bottom and top obstacles self.bottom_obstacles_list, self.top_obstacles_list = Obstacle.setup_obstacles( self.bottom_obstacles_list, self.top_obstacles_list) #place flowers for points self.flowers_list = Flower.setup(self.flowers_list, self.bottom_obstacles_list, self.top_obstacles_list) #set up score self.score = 0 self.physics_engine = arcade.PhysicsEnginePlatformer( self.bee_sprite, self.ground_list, gravity_constant=GRAVITY) elif self.state == State.GAME_OVER: self.end_screen_sprite_list = arcade.SpriteList() self.end_screen = arcade.Sprite("sprites/game_over_screen.png", 1) self.end_screen.center_x = SCREEN_WIDTH / 2 self.end_screen.center_y = SCREEN_HEIGHT / 2 self.end_screen_sprite_list.append(self.end_screen)
def update(self, delta_time): if self.state == State.MAIN_MENU: if self.space_pressed: self.state = State.PLAYING self.setup() elif self.state == State.PLAYING: #game movement self.bee_sprite.change_x = 0 self.bee_sprite.change_y = 0 if self.space_pressed: self.bee_sprite.change_x = PLAYER_JUMP_SPEED self.bee_sprite.change_y = PLAYER_JUMP_DISTANCE else: self.bee_sprite.change_x = PLAYER_MOVEMENT_SPEED #check if bee has a flower flower_hit_list = arcade.check_for_collision_with_list( self.bee_sprite, self.flowers_list) for flower in flower_hit_list: flower.remove_from_sprite_lists() self.score = self.score + 1 #check if bee hit an obstacle bottom_obstacle_hit_list = arcade.check_for_collision_with_list( self.bee_sprite, self.bottom_obstacles_list) top_obstacle_hit_list = arcade.check_for_collision_with_list( self.bee_sprite, self.top_obstacles_list) if len(bottom_obstacle_hit_list) != 0 or len( top_obstacle_hit_list) != 0: self.bee_sprite.angle = -90 self.bee_sprite.change_y = 0 self.state = State.GAME_OVER self.setup() #kill obstacles & flowers and then make new ones so that it gives "scrolling" effect if self.bee_sprite.center_x >= SCREEN_WIDTH: self.bee_sprite.center_x = bee.SPRITE_STARTING_X Obstacle.kill_obstacles(self.bottom_obstacles_list) Obstacle.kill_obstacles(self.top_obstacles_list) Obstacle.kill_obstacles(self.flowers_list) if len(self.bottom_obstacles_list) == 0 and len( self.top_obstacles_list) == 0: self.bottom_obstacles_list, self.top_obstacles_list = Obstacle.setup_obstacles( self.bottom_obstacles_list, self.top_obstacles_list) self.flower = Flower.setup(self.flowers_list, self.bottom_obstacles_list, self.top_obstacles_list) self.physics_engine.update() elif self.state == State.GAME_OVER: if self.n_pressed: arcade.close_window() if self.y_pressed: self.state = State.MAIN_MENU self.setup()