-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.py
More file actions
136 lines (96 loc) · 4.35 KB
/
Copy pathMain.py
File metadata and controls
136 lines (96 loc) · 4.35 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
132
133
134
135
136
import pygame # importanto a biblioteca pygame
import random # importanto a biblioteca pygame
pygame.init() # iniciando a biblioteca pygame
pygame.display.set_caption("Jogo Snake Python") # Determinando nome da tela
largura, altura = 1200, 800 # Determinando largura e altura da tela
tela = pygame.display.set_mode((largura, altura)) # criando a tela
relogio = pygame.time.Clock()
# Cores
preta = (0, 0, 0)
branca = (255, 255, 255)
vermelho = (255, 0, 0)
verde = (0, 255, 0)
# Constantes
tamanho_quadrado = 20
velocidade_jogo = 10
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, verde, [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_pontuacao(pontuacao):
fonte = pygame.font.SysFont("Arial", 20)
texto = fonte.render(f"pontos: {pontuacao}", True, vermelho)
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
# Corpo do jogo
def jogo():
fim_jogo = False
X = largura / 2
Y = altura / 2
velocidade_X = 0 # quantos pixels as partes da cobra se movem
velocidade_Y = 0 # quantos pixels as partes da cobra se movem
tamanho_cobra = 1 # Quantidade de quadrados inicias da cobra
pixels = []
comidaX, comidaY = gerar_comida() # Pega as coordenadas para gerar uma comida
while not fim_jogo:
tela.fill(preta) # preenchendo a tela com a cor 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(tamanho_quadrado, comidaX, comidaY) # Desenha a comida na tela
# atualiza a posição da cobra
if X < 0 or X>= largura or Y < 0 or Y >= altura:
fim_jogo = True
X += velocidade_X # movimenta a cobra
Y += velocidade_Y # movimenta a cobra
# Desenhar a cobra
pixels.append([X, Y])
if len(pixels) > tamanho_cobra:
del pixels[0]
# verifica se a cobra bateu no próprio corpo
for pixel in pixels[:-1]:
if pixel == [X, Y]:
fim_jogo = True
desenhar_cobra(tamanho_quadrado, pixels)
# Desenhar a pontuação
desenhar_pontuacao(tamanho_cobra - 1)
pygame.display.update() # atualização da tela
# criar nova comida
if X == comidaX and Y == comidaY:
tamanho_cobra += 1
comidaX, comidaY = gerar_comida()
relogio.tick(velocidade_jogo) # FPS do jogo
jogo() # Chamando a função aonde está todo o código do jogo
# pygame.quit() # fechando a biblioteca pygame
# Lógica jogo da cobrinha:
# configurações inicias
# Criar um loop infinito
# Desenhar os objetos do jogo na tela
# pontuação
# cobrinha
# comida
# criar a lógica de terminar o jogo
# o que acontece:
# cobra bateu na parede
# cobra bateu na própria cobra
# pegar as interações do usuário