示例#1
0
class Projectile:
    def __init__(self, w, pos_x, pos_y, dir, targets, color, g_controller):

        self.g_controller = g_controller
        self.targets = targets
        self.col = Collider('projectile', 4, 16)

        self.pos_x = pos_x
        self.pos_y = pos_y
        self.dir = dir

        self.w = w

        self.graphic = Frame()
        self.graphic.config(bg=color, width=4, height=16)

        self.move()

        self.g_controller.projectiles.append(self)

    def move(self):

        self.pos_y += 4 * self.dir

        self.col.set_position(self.pos_x, self.pos_y)

        if self.targets is not None:
            for target in self.targets:
                if target.col.enabled is True:
                    if self.col.check_collision(target.col):
                        target.damage()
                        Shake(self.w, 5, 10)
                        self.destroy_p()
                        return

        if self.pos_y > self.w.winfo_height() or self.pos_y < 0:
            self.destroy_p()
            return

        self.graphic.place(x=self.pos_x, y=self.pos_y)

    def destroy_p(self):
        self.graphic.destroy()

        p = self.g_controller.projectiles
        for id in range(len(p)):
            if p[id] is self:
                self.g_controller.projectiles.pop(id)
                return
示例#2
0
screen.bgcolor("black")
screen.title("Snake Game")
screen.tracer(0)

snake = Snake()
screen.update()

food_spawner = FoodSpawner()
screen.update

collider = Collider(snake=snake, food_spawner=food_spawner)

game_manager = GameManager(snake=snake,
                           food_spawner=food_spawner,
                           collider=collider)
collider.ref_game_manager(game_manager)

screen.listen()
screen.onkey(key="Left", fun=snake.turn_left)
screen.onkey(key="Right", fun=snake.turn_right)
screen.onkey(key="Up", fun=snake.turn_up)
screen.onkey(key="Down", fun=snake.turn_down)

# write game logic below
while game_manager.game_is_on:
    screen.update()
    time.sleep(0.1)
    snake.move()
    collider.check_collision()

screen.exitonclick()