Example #1
0
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)
Example #2
0
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)