Ejemplo n.º 1
0
class Game(object):
    def __init__(self, _states_manager):
        self.road = Road()
        self.player = Player()
        self.enemies = Enemies()
        self.ui = UI()

    def update(self, _dt):
        self.ui.update(_dt)
        self.road.update(_dt, self.ui)
        self.player.update(_dt, self.road.road)
        self.enemies.update(_dt, self.player, self.ui)

        if not self.player.alive:
            self.road.stop()

    def render(self, _screen):
        self.road.render(_screen)
        self.player.render(_screen)
        self.enemies.render(_screen)
        self.ui.render(_screen)
Ejemplo n.º 2
0
class Game:
    def __init__(self):
        self.map = Map()
        self.towers = Towers(self.map)
        self.enemies = Enemies(self.map, self.towers)
        self.menu = Menu(self.map, self.towers, self.enemies, screen_width,
                         screen_height)

        self.dragging_tower = False
        self.round = 1
        self.start_round()

    def start_round(self, round=0):
        difficulty = round + 3
        self.enemies.new_round(difficulty=difficulty)

    def round_traker(self):
        if all([
                enemy.deprecated == True or enemy.in_the_end == True
                for enemy in self.enemies.enemies
        ]):
            self.round += 1
            self.start_round(round=self.round)

    def on_mouse_motion(self, x, y, dx, dy):
        self.map.on_mouse_motion(x, y, dx, dy)

    def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
        self.menu.on_mouse_drag(x, y, dx, dy, buttons, modifiers)

    def update(self, dt):
        self.round_traker()
        self.towers.update(dt, self.enemies)
        self.enemies.update(dt, self.towers)

    def user_text_draw(self):
        self.enemies_left = pyglet.text.Label(
            f'{len([enemy for enemy in self.enemies.enemies if not enemy.deprecated or enemy.in_the_end])} over {len(self.enemies.enemies)} enemies left',
            font_name='Helvetica',
            font_size=12,
            x=window.width - 200,
            y=window.height - 100,
            anchor_x='center',
            anchor_y='center')
        self.enemies_left.draw()

        self.round_nb = pyglet.text.Label(f'round {self.round}',
                                          font_name='Helvetica',
                                          font_size=12,
                                          x=window.width - 200,
                                          y=window.height - 120,
                                          anchor_x='center',
                                          anchor_y='center')
        self.round_nb.draw()

    def draw(self):
        window.clear()
        self.map.draw()
        self.towers.draw()
        self.enemies.draw()
        self.menu.draw()
        self.user_text_draw()

    def on_mouse_press(self, x, y, button, modifiers):
        self.menu.on_mouse_press(x, y)

    def on_mouse_release(self, x, y, button, modifiers):
        self.menu.on_mouse_release(x, y)