Untitled
unknown
plain_text
a year ago
2.9 kB
2
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