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)