Untitled
unknown
plain_text
a year ago
2.9 kB
3
Indexable
import pygame
import random
pygame.init()
pygame.display.set_caption("Snake Python")
largura, altura = 800, 600
tela = pygame.display.set_mode((largura, altura))
relogio = pygame.time.Clock()
fundo = (0, 0, 0)
cobra = (24, 201, 18)
maca = (201, 18, 18)
pontuacao = (255, 255, 255)
cor_pontu = (201, 18, 18)
tamanho_quadr = 15
velocidade_jogo = 15
def gerar_comida():
maca_x = (random.randrange(0, largura - tamanho_quadr) / 15) * 10
maca_y = (random.randrange(0, altura - tamanho_quadr) / 1) * 10
return maca_x, maca_y
def desenhar_comida(tamanho, maca_x, maca_y):
pygame.draw.rect(tela, maca, [maca_x, maca_y, tamanho, tamanho])
def desenhar_cobra(tamanho_quadr, pixels):
for pixel in pixels:
pygame.draw.rect(
tela, cobra, [pixel[0], pixel[1], tamanho_quadr, tamanho_quadr]
)
def desenhar_pontuacao(pontuacao):
fonte = pygame.font.SysFont("Helvetica", 20)
texto = fonte.render(f"PONTOS: {pontuacao}", True, cor_pontu)
tela.blit(texto, [1, 1])
def message_fim_do_jogo():
fonte = pygame.font.SysFont("Helvetica", 20)
texto = fonte.render("FIM DO JOGO", True, cor_pontu)
tela.blit(texto, [400, 400])
def selec_velocidade(tecla):
if tecla == pygame.K_DOWN:
velocidade_x = 0
velocidade_y = tamanho_quadr
elif tecla == pygame.K_UP:
velocidade_x = 0
velocidade_y = -tamanho_quadr
elif tecla == pygame.K_RIGHT:
velocidade_x = tamanho_quadr
velocidade_y = 0
elif tecla == pygame.K_LEFT:
velocidade_x = -tamanho_quadr
velocidade_y = 0
return velocidade_x, velocidade_y
def iniciar_jogo():
fim_jogo = False
x = largura / 2
y = altura / 2
velocidade_x = 0
velocidade_y = 0
tam_cobra = 1
pixels = []
maca_x, maca_y = gerar_comida()
while not fim_jogo:
tela.fill(fundo)
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
fim_jogo = True
elif evento.type == pygame.KEYDOWN:
velocidade_x, velocidade_y = selec_velocidade(evento.key)
desenhar_comida(tamanho_quadr, maca_x, maca_y)
desenhar_cobra(tamanho_quadr, pixels)
desenhar_pontuacao(tam_cobra - 1)
if x < 0 or x >= largura or y < 0 or y >= altura:
fim_jogo = True # Colocado dentro do loop principal
x += velocidade_x
y += velocidade_y
pixels.append([x, y])
if len(pixels) > tam_cobra:
del pixels[0]
for pixel in pixels[:-1]:
if pixel == [x, y]:
fim_jogo = True
pygame.display.update()
if x == maca_x and y == maca_y:
tam_cobra += 1
maca_x, maca_y = gerar_comida()
relogio.tick(velocidade_jogo)
# Chamada da função para exibir mensagem de fim do jogo após o loop
message_fim_do_jogo()
iniciar_jogo()
Editor is loading...
Leave a Comment