Example #1
0
    def game_loop(self):
        # Creating game objects
        snake = Snake(self.display_resolution, self.block_size)
        apple = Apple(self.display_resolution, self.block_size)
        snake.current_direction = Directions.RIGHT
        apple.generate(snake)
        self.score = 0

        game_exit = False

        while not game_exit:
            for event in pg.event.get():
                if event.type == pg.QUIT:
                    game_exit = True
                    sys.exit()
                if event.type == pg.K_ESCAPE:
                    pg.quit()
                    game_exit = True
                    sys.exit()

                if event.type == pg.KEYDOWN:
                    if event.key == pg.K_LEFT:
                        snake.move_left()
                    if event.key == pg.K_RIGHT:
                        snake.move_right()
                    if event.key == pg.K_UP:
                        snake.move_up()
                    if event.key == pg.K_DOWN:
                        snake.move_down()

            snake.update(self)

            if snake.head.x == apple.coords.x and snake.head.y == apple.coords.y:
                snake.tail_extend()
                self.score += 1
                apple.generate(snake)

            # Filling background with color (default white)
            self.screen.fill(self.white)
            self.show_score(self.screen, self.score)
            self.screen.fill(self.background_color,
                             (20, 20, self.display_resolution[0],
                              self.display_resolution[1]))

            # Drawing snakes head
            pg.draw.rect(
                self.screen, self.snake_color,
                (snake.head.x, snake.head.y, self.block_size, self.block_size))

            # Drawing snakes tail
            for elem in snake.tail_coords:
                pg.draw.rect(
                    self.screen, self.snake_color,
                    (elem.x, elem.y, self.block_size, self.block_size))

            # Drawing walls
            # Upper wall
            pg.draw.rect(self.screen, self.walls_color,
                         (0, 20, self.display_resolution[0], 20))
            # Left wall
            pg.draw.rect(self.screen, self.walls_color,
                         (0, 20, 20, self.display_resolution[1]))
            # Bottom wall
            pg.draw.rect(self.screen, self.walls_color,
                         (0, self.display_resolution[1] - 20,
                          self.display_resolution[0], 20))
            # Right wall
            pg.draw.rect(self.screen, self.walls_color,
                         (self.display_resolution[0] - 20, 20, 20,
                          self.display_resolution[1]))

            # Drawing apple
            pg.draw.rect(self.screen, self.apple_color,
                         (apple.coords.x, apple.coords.y, self.block_size,
                          self.block_size))

            pg.display.update()
            self.clock.tick(self.fps)