-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsnake_python.py
More file actions
131 lines (90 loc) · 3.42 KB
/
snake_python.py
File metadata and controls
131 lines (90 loc) · 3.42 KB
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
####################################
# Jogo Snake Python
# por: Gabriela Lopes
####################################
import pygame
import random
pygame.init() #iniciar o pygame
pygame.display.set_caption('Jogo Snake Python') #nome
largura, altura = 1200, 600
tela = pygame.display.set_mode((largura, altura))
relogio = pygame.time.Clock()
# variáveis das cores - formato RGB
preta = (0, 0, 0)
branca = (255, 255, 255)
vermelha = (255, 0, 0)
verde = (0, 255, 0)
amarela = (255, 255, 0)
roxa = (128, 0, 128)
# parametros da cobrinha
tamanho_quadrado = 20
velocidade_jogo = 15
def gerar_comida():
comida_x = round(random.randrange(0, largura - tamanho_quadrado) / float(tamanho_quadrado)) * float(tamanho_quadrado)
comida_y = round(random.randrange(0, altura - tamanho_quadrado) / float(tamanho_quadrado)) * float(tamanho_quadrado)
return comida_x, comida_y
def desenhar_comida(tamanho, comida_x, comida_y):
pygame.draw.rect(tela, amarela, [comida_x, comida_y, tamanho, tamanho])
def desenhar_cobra(tamanho, pixels):
for pixel in pixels:
pygame.draw.rect(tela, branca, [pixel[0], pixel[1], tamanho, tamanho])
def desenhar_pontuação(pontuação):
fonte = pygame.font.SysFont("Helvetica", 25)
texto = fonte.render(f"Pontos: {pontuação}", True, vermelha)
tela.blit(texto, [1, 1])
def selecionar_velocidade(tecla):
if tecla == pygame.K_DOWN:
velocidade_x = 0
velocidade_y = tamanho_quadrado
elif tecla == pygame.K_UP:
velocidade_x = 0
velocidade_y = -tamanho_quadrado
elif tecla == pygame.K_RIGHT:
velocidade_x = tamanho_quadrado
velocidade_y = 0
elif tecla == pygame.K_LEFT:
velocidade_x = -tamanho_quadrado
velocidade_y = 0
return velocidade_x, velocidade_y
def rodar_jogo():
fim_jogo = False
x = largura / 2 # para a cobrinha começar no meio da tela
y = altura / 2
velocidade_x = 0 # para a cobrinha começar parada
velocidade_y = 0
tamanho_cobra = 1
pixels = []
comida_x, comida_y = gerar_comida()
while not fim_jogo:
tela.fill(preta)
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
fim_jogo = True
elif evento.type == pygame.KEYDOWN:
velocidade_x, velocidade_y = selecionar_velocidade(evento.key)
#desenhar comida
desenhar_comida(tamanho_quadrado, comida_x, comida_y)
#atualizar a posição cobra - paredes
if x < 0 or x >= largura or y < 0 or y >= altura:
fim_jogo = True
#atualizar a posição da cobra
x += velocidade_x
y += velocidade_y
#desenhar cobrinha
pixels.append([x,y])
if len(pixels) > tamanho_cobra:
del pixels[0]
#verifica se a cobrinha bateu no proprio corpo
for pixel in pixels[:-1]:
if pixel == [x,y]:
fim_jogo = True
desenhar_cobra(tamanho_quadrado, pixels)
desenhar_pontuação(tamanho_cobra - 1)
#atualização da tela
pygame.display.update()
#criar uma nova comida
if x == comida_x and y == comida_y:
tamanho_cobra += 1
comida_x, comida_y = gerar_comida()
relogio.tick(velocidade_jogo)
rodar_jogo()