snake.v0.py 3.86 KB
import pygame
import time
import random
 
pygame.init()
 
# Définition des couleurs en composante (Rouge, Vert, Bleu) 
blanc = (255, 255, 255)
jaune = (255, 255, 102)
noir = (0, 0, 0)
rouge = (213, 50, 80)
vert = (0, 255, 0)
bleu = (50, 153, 213)
 
largeur_plateau = 600
hauteur_plateau = 400
 
plateau = pygame.display.set_mode((largeur_plateau, hauteur_plateau))
pygame.display.set_caption("Le Serpent Numérique du LIA")
 
horloge = pygame.time.Clock()
 
bloc_serpent = 10
vitesse_serpent = 5
 
style_caractères = pygame.font.SysFont("bahnschrift", 25)
style_scores = pygame.font.SysFont("comicsansms", 35)
 
 
def votre_score(score):
    valeur = style_scores.render("Votre Score: " + str(score), True, jaune)
    plateau.blit(valeur, [0, 0])
 
def notre_serpent(bloc_serpent, corps_serpent):
    for x in corps_serpent:
        pygame.draw.rect(plateau, noir, [x[0], x[1], bloc_serpent, bloc_serpent])
 
def message(msg, color, décalage=0):
    mesg = style_caractères.render(msg, True, color)
    plateau.blit(mesg, [largeur_plateau / 6, hauteur_plateau / 3+décalage])
 
def boucle_jeu():
    fin_jeu = False
    ferme_jeu = False
 
    x1 = largeur_plateau / 2
    y1 = hauteur_plateau / 2
 
    x1_change = 0
    y1_change = 0
 
    corps_serpent = []
    longueur_serpent = 1
 
    repas_x = round(random.randrange(0, largeur_plateau - bloc_serpent) / 10.0) * 10.0
    repas_y = round(random.randrange(0, hauteur_plateau - bloc_serpent) / 10.0) * 10.0
 
    while not fin_jeu:
 
        while ferme_jeu == True:
            plateau.fill(bleu)
            message("Zut ! Vous avez perdu !", rouge)
            message("Appuyez sur J pour jouer encore", jaune, 20)
            message("ou sur Q pour quitter le jeu.", jaune, 40)
            votre_score(longueur_serpent - 1)
            pygame.display.update()
 
            for évènement in pygame.event.get():
                if évènement.type == pygame.KEYDOWN:
                    if évènement.key == pygame.K_q:
                        fin_jeu = True
                        ferme_jeu = False
                    if évènement.key == pygame.K_j:
                        boucle_jeu()
 
        for évènement in pygame.event.get():
            if évènement.type == pygame.QUIT:
                fin_jeu = True
            if évènement.type == pygame.KEYDOWN:
                if évènement.key == pygame.K_LEFT:
                    x1_change = -bloc_serpent
                    y1_change = 0
                elif évènement.key == pygame.K_RIGHT:
                    x1_change = bloc_serpent
                    y1_change = 0
                elif évènement.key == pygame.K_UP:
                    y1_change = -bloc_serpent
                    x1_change = 0
                elif évènement.key == pygame.K_DOWN:
                    y1_change = bloc_serpent
                    x1_change = 0
 
        if x1 >= largeur_plateau or x1 < 0 or y1 >= hauteur_plateau or y1 < 0:
            ferme_jeu = True
        x1 += x1_change
        y1 += y1_change
        plateau.fill(bleu)
        pygame.draw.rect(plateau, vert, [repas_x, repas_y, bloc_serpent, bloc_serpent])
        tête_serpent = []
        tête_serpent.append(x1)
        tête_serpent.append(y1)
        corps_serpent.append(tête_serpent)
        if len(corps_serpent) > longueur_serpent:
            del corps_serpent[0]
 
        for x in corps_serpent[:-1]:
            if x == tête_serpent:
                ferme_jeu = True
 
        notre_serpent(bloc_serpent, corps_serpent)
        votre_score(longueur_serpent - 1)
 
        pygame.display.update()
 
        if x1 == repas_x and y1 == repas_y:
            repas_x = round(random.randrange(0, largeur_plateau - bloc_serpent) / 10.0) * 10.0
            repas_y = round(random.randrange(0, hauteur_plateau - bloc_serpent) / 10.0) * 10.0
            longueur_serpent += 1
 
        horloge.tick(vitesse_serpent)
 
    pygame.quit()
    quit()
 
boucle_jeu()