diff --git a/snake.v0.py b/snake.v0.py new file mode 100644 index 0000000..67a9210 --- /dev/null +++ b/snake.v0.py @@ -0,0 +1,125 @@ +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()