示例#1
0
    def on_update(self, delta_time):
        if not self.in_menu and self.slayer.health <= 0:
            self.in_menu = True
            self.handler.set_menu(menuHandler.GAME_OVER)
            sound_manager.play_sound(sound_manager.PLAYER_DEATH, .15)
        if self.in_menu:
            self.handler.draw_menu()
        else:
            self.physics_engine.update()

            new_pos = self.rooms[self.current_room].check_move_room(
                self.rooms[self.current_room], self.player_sprite.position,
                self, self.difficulty)
            if not new_pos == None:
                self.player_sprite.position = new_pos

            item_hit_list = arcade.check_for_collision_with_list(
                self.player_sprite, self.rooms[self.current_room].item_list)

            for hit_item in item_hit_list:
                hit_item.pickup(self.slayer)
                self.rooms[self.current_room].item_list.remove(hit_item)

            if self.player_sprite.change_y == 0 and (
                (self.w_pressed and not self.s_pressed) or
                (self.s_pressed and not self.w_pressed)):
                if self.w_pressed:
                    self.player_sprite.change_y = self.slayer.movespeed
                elif self.s_pressed:
                    self.player_sprite.change_y = -self.slayer.movespeed

            if self.player_sprite.change_x == 0 and (
                (self.a_pressed and not self.d_pressed) or
                (self.d_pressed and not self.a_pressed)):
                if self.a_pressed:
                    self.player_sprite.change_x = -self.slayer.movespeed
                elif self.d_pressed:
                    self.player_sprite.change_x = self.slayer.movespeed

            self.slayer.update_position(self.player_sprite.center_x,
                                        self.player_sprite.center_y)

            if self.attack_cooldown > 0:
                self.attack_cooldown -= 1

            room_setup.update_player_attacks(self.rooms[self.current_room],
                                             self.difficulty)
            room_setup.update_fog(self.rooms[self.current_room],
                                  self.player_sprite.position,
                                  self.slayer.sight)
            room_setup.update_enemies(self.rooms[self.current_room],
                                      self.player_sprite.position,
                                      self.difficulty)
            room_setup.update_enemy_attacks(self.rooms[self.current_room],
                                            self.player_sprite, self.slayer)

            position = self.music_handler.music.get_stream_position()
            if position == 0.0:
                self.music_handler.play_music(0)
示例#2
0
 def die(self, room, left, bottom):
     blood_splatter = arcade.Sprite("resources/images/blood.png", .7)
     blood_splatter.left = left
     blood_splatter.bottom = bottom
     room.accent_list.append(blood_splatter)
     if self.type == GOBLIN:
         sound_manager.play_sound(sound_manager.GOBLIN_DEATH, .15)
     else:
         sound_manager.play_sound(sound_manager.HOBGOBLIN_DEATH, .15)
         arcade.window_commands.pause(1.5)
示例#3
0
 def update(self, slayer_position, room, sprite):
     self.x = sprite.center_x
     self.y = sprite.center_y
     self.attack_cooldown -= 1
     if arcade.has_line_of_sight(
             slayer_position,
         (self.x, self.y), room.wall_list) and not arcade.has_line_of_sight(
             slayer_position, (self.x, self.y), room.wall_list, 50):
         if slayer_position[0] - (self.x, self.y)[0] <= -6:
             sprite.change_x = -self.movespeed
         elif slayer_position[0] - (self.x, self.y)[0] >= 6:
             sprite.change_x = self.movespeed
         else:
             sprite.change_x = 0
         if slayer_position[1] - (self.x, self.y)[1] <= -6:
             sprite.change_y = -self.movespeed
         elif slayer_position[1] - (self.x, self.y)[1] >= 6:
             sprite.change_y = self.movespeed
         else:
             sprite.change_y = 0
     if arcade.has_line_of_sight(slayer_position, (self.x, self.y),
                                 room.wall_list, 50):
         if sprite.change_x != 0:
             sprite.change_x = 0
         if sprite.change_y != 0:
             sprite.change_y = 0
         if self.attack_cooldown <= 0:
             spawn_x = self.x
             spawn_y = self.y
             connect_vector = [
                 slayer_position[0] - spawn_x, slayer_position[1] - spawn_y
             ]
             connect_vector = connect_vector / LA.norm(connect_vector)
             angle = math.degrees(np.arccos(connect_vector)[0])
             if slayer_position[1] < spawn_y:
                 angle = -angle
             connect_vector = np.multiply(connect_vector, self.attack_range)
             spawn_vector = np.add(connect_vector, [spawn_x, spawn_y])
             room_setup.add_enemy_attack(room, spawn_vector[0],
                                         spawn_vector[1], angle,
                                         self.damage)
             if self.type == GOBLIN:
                 self.attack_cooldown = 20
                 sound_manager.play_sound(sound_manager.GOBLIN_ATTACK, .15)
             else:
                 self.attack_cooldown = 45
                 sound_manager.play_sound(sound_manager.HOBGOBLIN_ATTACK,
                                          .15)
示例#4
0
 def on_mouse_press(self, x, y, button, modifiers):
     if not self.in_menu:
         if self.attack_cooldown == 0:
             spawn_x = self.player_sprite.center_x
             spawn_y = self.player_sprite.center_y
             connect_vector = [x - spawn_x, y - spawn_y]
             connect_vector = connect_vector / LA.norm(connect_vector)
             angle = math.degrees(np.arccos(connect_vector)[0])
             if y < spawn_y:
                 angle = -angle
             connect_vector = np.multiply(connect_vector,
                                          self.slayer.attack_range)
             spawn_vector = np.add(connect_vector, [spawn_x, spawn_y])
             room_setup.add_player_attack(self.rooms[self.current_room],
                                          spawn_vector[0], spawn_vector[1],
                                          angle, self.slayer.damage)
             sound_manager.play_sound(sound_manager.PLAYER_ATTACK, .15)
             self.attack_cooldown = 15
     else:
         self.check_mouse_press_for_buttons(
             x, y, self.handler.menu_list[self.handler.menu].buttons)
示例#5
0
def room_6_move_room(room, slayer_pos, gm, difficulty):
    if (difficulty == game.EASY and len(room.easy_enemy_list) == 0) or (
            difficulty == game.MODERATE and len(room.moderate_enemy_list)
            == 0) or (difficulty == game.HARD
                      and len(room.hard_enemy_list) == 0):
        gm.win_game()
    elif slayer_pos[1] > SPRITE_SIZE * 15:
        if slayer_pos[0] < SPRITE_SIZE * 4 and slayer_pos[0] > SPRITE_SIZE * 2:
            gm.update_room(2)
            return (SPRITE_SIZE * 23, 5)
        elif slayer_pos[0] > SPRITE_SIZE * 12 and slayer_pos[
                0] < SPRITE_SIZE * 14:
            gm.update_room(3)
            return (SPRITE_SIZE * 7, 5)
    elif (not room.boss_fight) and slayer_pos[1] < SPRITE_SIZE * 11:
        add_wall(room, 7, 11)
        add_wall(room, 8, 11)
        for fog in room.fog_list:
            for wall in room.wall_list:
                if wall.position == fog.position:
                    fog.is_wall = True
        sound_manager.play_sound(sound_manager.CLOSE_DOOR, .15)
        room.boss_fight = True
    return None
def sword_get_picked_up(slayer):
    slayer.change_damage(1)
    sound_manager.play_sound(sound_manager.SWORD_PICKUP, .15)
def torch_get_picked_up(slayer):
    slayer.change_sight(.5)
    sound_manager.play_sound(sound_manager.TORCH_PICKUP, .15)
def heal_get_picked_up(slayer):
    slayer.heal(3)
    sound_manager.play_sound(sound_manager.HEAL, .15)
def shield_get_picked_up(slayer):
    slayer.change_armor(1)
    sound_manager.play_sound(sound_manager.SHIELD_PICKUP, .15)
示例#10
0
 def win_game(self):
     self.in_menu = True
     self.handler.set_menu(menuHandler.WIN)
     sound_manager.play_sound(sound_manager.GAME_WIN, .15)
示例#11
0
 def command_display_next_topic(self):
     sound_manager.play_sound()
     todays_reminder = hint_manager.get_next_topic()
     self.label.config(fg=random_color_generator.get_random_color(),
                       text=todays_reminder)
示例#12
0
 def command_display_next_hint(self, data_file_path):
     sound_manager.play_sound()
     todays_reminder = hint_manager.get_next_hint(data_file_path)
     self.label.config(fg=random_color_generator.get_random_color(),
                       text=todays_reminder)
示例#13
0
        # built in quit function
        self.quitButton = Button(frame,
                                 text="finish and close",
                                 bg='blue',
                                 font="Arial 25",
                                 command=frame.quit)
        self.quitButton.pack(side=TOP, fill=X)

    def display_finish_button(self):
        self.quitButton.pack(side=TOP, fill=X)

    def command_display_next_hint(self, data_file_path):
        sound_manager.play_sound()
        todays_reminder = hint_manager.get_next_hint(data_file_path)
        self.label.config(fg=random_color_generator.get_random_color(),
                          text=todays_reminder)

    def command_display_next_topic(self):
        sound_manager.play_sound()
        todays_reminder = hint_manager.get_next_topic()
        self.label.config(fg=random_color_generator.get_random_color(),
                          text=todays_reminder)


sound_manager.play_sound()
guiToolKit = Tk()
guiToolKit.title("daily hint - 每日提醒 - momento zilnic")
reminderUi = dailyHintUi(guiToolKit)

guiToolKit.mainloop()