Untitled

mail@pastecode.io avatar
unknown
plain_text
13 days ago
2.9 kB
0
Indexable
Never
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()
Leave a Comment