class TaLaLapWindow(arcade.Window): def __init__(self, width, height): super().__init__(width, height, "TaLaLap") self.world = World(SCREEN_WIDTH, SCREEN_HEIGHT) self.coin_list = self.world.coin_list self.plus_dam = arcade.Sprite("images/DoubleDam.png", scale=0.7) self.double_dam = arcade.Sprite("images/DoubleDamT.png", scale=0.7) self.plus_dam.set_position(SCREEN_WIDTH - 40, SCREEN_HEIGHT - 385) self.double_dam.set_position(SCREEN_WIDTH - 100, SCREEN_HEIGHT - 385) def update(self, delta): self.world.update(delta) self.player = ModelSprite( "images/stand.png" if self.world.player.player_frame == 0 else "images/hit.png", scale=0.4, model=self.world.player) self.monster = ModelSprite( "images/monster/" + str(self.world.monster.monster_folder) + "/" + self.world.monster.monster_frame, scale=0.5, model=self.world.monster) def display_information(self): arcade.draw_text("Coin: " + str(self.world.coin), self.width - 590, self.height - 60, FONT_COLOR, 20) arcade.draw_text("HP: " + str(self.world.monster.hp), self.width - 590, self.height - 30, FONT_COLOR, 20) arcade.draw_text("Damage: " + str(self.world.player.damage), self.width - 590, self.height - 410, FONT_COLOR, 20) arcade.draw_text("Level: " + str(self.world.world_level), self.width - 350, self.height - 20, FONT_COLOR, 20) if self.world.item.item_time > 0: arcade.draw_text("Item_time: " + str(self.world.item.item_time), self.width - 590, self.height - 90, FONT_COLOR, 20) if self.world.world_stage == "Fight": arcade.draw_text("Time: " + str(self.world.stage_time), self.width - 106, self.height - 20, FONT_COLOR, 20) def on_draw(self): arcade.draw_texture_rectangle(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2, SCREEN_WIDTH, SCREEN_HEIGHT, arcade.load_texture("images/bg2.jpg")) self.display_information() if self.world.on_fight_stage(): self.monster.draw() self.double_dam.draw() self.plus_dam.draw() else: self.coin_list.coin.draw() self.player.draw() def on_key_press(self, key, key_modifiers): self.world.on_key_press(key, key_modifiers) def on_key_release(self, key, key_modifiers): self.world.on_key_release(key, key_modifiers) def on_mouse_press(self, x: float, y: float, button: int, modifiers: int): self.world.on_mouse_press(x, y, button, modifiers)
class GameWindow(arcade.Window): def __init__(self, width, height): super().__init__(width, height, title="Throw your knives!") self.world = World(SCREEN_WIDTH, SCREEN_HEIGHT) self.knife_sprite = None self.knife_sprite2 = None self.knife_sprite3 = None self.knife_sprite4 = None self.knife_sprite5 = None self.knife_sprite6 = None self.knife_sprite7 = None self.knife_sprite8 = None self.knife_sprite9 = None self.knife_sprite10 = None self.target_sprite = ModelSprite('images/target.png', model=self.world.target) self.total_time = 0.0 def setup(self): arcade.set_background_color(arcade.color.BLACK) self.total_time = 0.0 self.world = World(SCREEN_WIDTH, SCREEN_HEIGHT) self.knife_sprite = ModelSprite('images/knife.png', model=self.world.knife) self.knife_sprite2 = ModelSprite('images/knife.png', model=self.world.knife2) self.knife_sprite3 = ModelSprite('images/knife.png', model=self.world.knife3) self.knife_sprite4 = ModelSprite('images/knife.png', model=self.world.knife4) self.knife_sprite5 = ModelSprite('images/knife.png', model=self.world.knife5) self.knife_sprite6 = ModelSprite('images/knife.png', model=self.world.knife6) self.knife_sprite7 = ModelSprite('images/knife.png', model=self.world.knife7) self.knife_sprite8 = ModelSprite('images/knife.png', model=self.world.knife8) self.knife_sprite9 = ModelSprite('images/knife.png', model=self.world.knife9) self.knife_sprite10 = ModelSprite('images/knife.png', model=self.world.knife10) self.target_sprite = ModelSprite('images/target.png', model=self.world.target) def update(self, delta): self.world.update(delta) self.total_time += delta def on_draw(self): arcade.start_render() self.target_sprite.draw() if self.world.is_menued(): start = "Press P to start" intruction = "Press Spacebar to throw a knife" caution = "Don't hit other knives on the target" arcade.draw_text("Throw your knives !" + "\n" + start + "\n" + intruction + "\n" + caution, 400, 500, arcade.color.WHITE, 18, align="center", anchor_x="center", anchor_y="center") if self.world.is_started(): minutes = int(self.total_time) // 60 seconds = int(self.total_time) % 60 timer = f"Timer: {minutes:02d}:{seconds:02d}" arcade.draw_text("Press P to pause" + "\n" + "Press R to restart" + "\n" + "Score: " + str(self.world.score) + "\n" + timer, 400, 500, arcade.color.WHITE, 18, align="center", anchor_x="center", anchor_y="center") self.knife_sprite.draw() self.knife_sprite2.draw() self.knife_sprite3.draw() self.knife_sprite4.draw() self.knife_sprite5.draw() self.knife_sprite6.draw() self.knife_sprite7.draw() self.knife_sprite8.draw() self.knife_sprite9.draw() self.knife_sprite10.draw() if self.world.is_frozened(): start = "Press P to play" intruction = "Press Spacebar to throw a knife" caution = "Don't hit other knives on the target" arcade.draw_text("Paused" + "\n" + start + "\n" + intruction + "\n" + caution, 400, 500, arcade.color.WHITE, 18, align="center", anchor_x="center", anchor_y="center") if self.world.is_overed(): minutes = int(self.total_time) // 60 seconds = int(self.total_time) % 60 timer = f"Timer: {minutes:02d}:{seconds:02d}" arcade.draw_text("Game Over" + "\n" + "Press P to play again" + "\n" + "Score: " + str(self.world.score - 1), 400, 500, arcade.color.WHITE, 18, align="center", anchor_x="center", anchor_y="center") if self.world.is_win(): minutes = int(self.total_time) // 60 seconds = int(self.total_time) % 60 timer = f"Timer: {minutes:02d}:{seconds:02d}" arcade.draw_text("You win !!" + "\n" + "Press P to play again" + "\n" + "Score: " + str(self.world.score), 400, 500, arcade.color.WHITE, 18, align="center", anchor_x="center", anchor_y="center") def on_key_press(self, key, key_modifiers): self.world.on_key_press(key, key_modifiers) if key == arcade.key.P: if self.world.state == self.world.STATE_MENU: self.setup() self.world.start() elif self.world.state == self.world.STATE_STARTED: self.world.freeze() elif self.world.state == self.world.STATE_FROZEN: self.world.start() elif self.world.state == self.world.STATE_OVER: self.setup() self.world.start() elif self.world.state == self.world.STATE_WIN: self.setup() self.world.start() if key == arcade.key.R: if self.world.state == self.world.STATE_STARTED: self.setup() self.world.start() def on_mouse_press(self, x, y, button, modifiers): self.world.on_mouse_press(x, y, button, modifiers)