-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgame.py
62 lines (50 loc) · 2.14 KB
/
game.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import pygame
from sys import exit
from snake_body import Snake, Food
from score import Score
from random import randint
class Game:
def __init__(self, screen):
self.screen = screen
self.snake = Snake()
self.food = Food()
self.score = Score()
self.eat_sound = pygame.mixer.Sound('sounds/eat_sound.wav')
self.game_over_sound = pygame.mixer.Sound('sounds/game_over_sound.wav')
def update(self):
# Processar entrada do teclado
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and not self.snake.y == -10:
self.snake.y = -10
self.snake.x = 0
if keys[pygame.K_DOWN] and not self.snake.y == self.screen.get_height() - self.snake.size:
self.snake.y = 10
self.snake.x = 0
if keys[pygame.K_LEFT] and not self.snake.x == -10:
self.snake.x = -10
self.snake.y = 0
if keys[pygame.K_RIGHT] and not self.snake.x == self.screen.get_width() - self.snake.size:
self.snake.x = 10
self.snake.y = 0
# Mover o cobra
self.snake.move()
# Verificar colisão
for segment in self.snake.body:
if (segment.x < 0 or segment.x >= self.screen.get_width() or segment.y < 0 or segment.y >= self.screen.get_height()):
pygame.mixer.Sound.play(self.game_over_sound)
pygame.time.wait(1000)
exit()
# Verificar colisão com Alimento
if self.food.x - 5 <= segment.x <= self.food.x + 5 and self.food.y - 5 <= segment.y <= self.food.y + 5:
pygame.mixer.Sound.play(self.eat_sound)
self.food.bate() # Respawn da comida em um novo local
self.snake.grow()
self.score.update(10)
def draw(self, screen):
# Desenhar a cobra e seu corpo
for segment in self.snake.body:
pygame.draw.rect(screen, (0, 255, 0), (segment.x, segment.y, self.snake.size, self.snake.size))
# Desenhar o Alimento
pygame.draw.rect(screen, (255, 0, 0), (self.food.x, self.food.y, self.food.size, self.food.size))
# Desenhar o placar
self.score.draw(screen)