-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsnake.py
123 lines (94 loc) · 3.24 KB
/
snake.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
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
import pygame, random
from pygame.locals import *
bloco = 10
max_tentativas = 5
def posicao_maca():
""" Gera uma posição aleatória para a maçã"""
return (random.randint(0, 59) * 10, random.randint(0, 59) * 10)
# Cria as direções para onde a cobra pode andar
CIMA = 'CIMA'
BAIXO = 'BAIXO'
DIREITA = 'DIREITA'
ESQUERDA = 'ESQUERDA'
# Inicia a tela
pygame.init()
tela = pygame.display.set_mode((600,600))
pygame.display.set_caption('Snake')
# Cria a cobra
cobra_inicio = [(200, 200), (200, 200 + bloco), (200, 200 + 2 * bloco)]
cobra = cobra_inicio[:]
textura_cobra = pygame.Surface((bloco, bloco))
textura_cobra.fill((255, 255, 255))
direcao_cobra = DIREITA
# Cria a Maçã
maca = posicao_maca()
textura_maca = pygame.Surface((bloco, bloco))
textura_maca.fill((255, 0, 0))
# Cria a contagem de pontos e de tentativas
pontos = 0
tentativas = 1
temporizador = pygame.time.Clock()
# Inicia a fonte
pygame.font.init()
fonte_padrao = pygame.font.get_default_font()
fonte = pygame.font.SysFont(fonte_padrao, 60)
for i in range(3, -1, -1):
texto = fonte.render(f'O jogo vai começar em {i}...', 1, (255, 255, 255))
tela.blit(texto, (40, 270))
pygame.display.update()
pygame.time.delay(1000)
tela.fill((0, 0, 0))
contador = 0
while True:
temporizador.tick(30)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
if event.type == KEYDOWN:
if event.key == K_UP:
direcao_cobra = CIMA
if event.key == K_DOWN:
direcao_cobra = BAIXO
if event.key == K_RIGHT:
direcao_cobra = DIREITA
if event.key == K_LEFT:
direcao_cobra = ESQUERDA
# Movimento
for pos in range(len(cobra) - 1, 0, -1):
cobra[pos] = (cobra[pos - 1][0], cobra[pos - 1][1])
if direcao_cobra == CIMA:
cobra[0] = (cobra[0][0], cobra[0][1] - bloco)
if direcao_cobra == BAIXO:
cobra[0] = (cobra[0][0], cobra[0][1] + bloco)
if direcao_cobra == DIREITA:
cobra[0] = (cobra[0][0] + bloco, cobra[0][1])
if direcao_cobra == ESQUERDA:
cobra[0] = (cobra[0][0] - bloco, cobra[0][1])
# Ponto
if cobra[0] == maca:
cobra.append(cobra[len(cobra) - 1])
maca = posicao_maca()
pontos += 1
# Morte
if cobra[0][0] < 0 or cobra[0][0] > (600 - bloco) or cobra[0][1] < 0 or cobra[0][1] > (600 - bloco):
cobra = cobra_inicio[:]
direcao_cobra = DIREITA
maca = posicao_maca()
pontos = 0
tentativas += 1
pygame.time.delay(1000)
# Fim do Jogo
if tentativas == max_tentativas + 1:
texto = fonte.render(f'Fim de Jogo!', 1, (255, 255, 255))
tela.blit(texto, (170, 270))
pygame.display.update()
pygame.time.delay(2000)
pygame.quit()
tela.fill((0, 0, 0))
# Atualização movimento da cobra
for pos in cobra:
tela.blit(textura_cobra, pos)
tela.blit(textura_maca, maca)
texto = fonte.render(f'Pontos: {pontos}, Tentativas: {tentativas}', 1, (255, 255, 255))
tela.blit(texto, (0, 0))
pygame.display.update()