Commit d4c39135cb5b8eae9defdb2d441126cda35718f3

Authored by Jourlin Pierre
1 parent 92c295ad5f
Exists in master

1ère version

Showing 1 changed file with 125 additions and 0 deletions Side-by-side Diff

  1 +import pygame
  2 +import time
  3 +import random
  4 +
  5 +pygame.init()
  6 +
  7 +# Définition des couleurs en composante (Rouge, Vert, Bleu)
  8 +blanc = (255, 255, 255)
  9 +jaune = (255, 255, 102)
  10 +noir = (0, 0, 0)
  11 +rouge = (213, 50, 80)
  12 +vert = (0, 255, 0)
  13 +bleu = (50, 153, 213)
  14 +
  15 +largeur_plateau = 600
  16 +hauteur_plateau = 400
  17 +
  18 +plateau = pygame.display.set_mode((largeur_plateau, hauteur_plateau))
  19 +pygame.display.set_caption("Le Serpent Numérique du LIA")
  20 +
  21 +horloge = pygame.time.Clock()
  22 +
  23 +bloc_serpent = 10
  24 +vitesse_serpent = 5
  25 +
  26 +style_caractères = pygame.font.SysFont("bahnschrift", 25)
  27 +style_scores = pygame.font.SysFont("comicsansms", 35)
  28 +
  29 +
  30 +def votre_score(score):
  31 + valeur = style_scores.render("Votre Score: " + str(score), True, jaune)
  32 + plateau.blit(valeur, [0, 0])
  33 +
  34 +def notre_serpent(bloc_serpent, corps_serpent):
  35 + for x in corps_serpent:
  36 + pygame.draw.rect(plateau, noir, [x[0], x[1], bloc_serpent, bloc_serpent])
  37 +
  38 +def message(msg, color, décalage=0):
  39 + mesg = style_caractères.render(msg, True, color)
  40 + plateau.blit(mesg, [largeur_plateau / 6, hauteur_plateau / 3+décalage])
  41 +
  42 +def boucle_jeu():
  43 + fin_jeu = False
  44 + ferme_jeu = False
  45 +
  46 + x1 = largeur_plateau / 2
  47 + y1 = hauteur_plateau / 2
  48 +
  49 + x1_change = 0
  50 + y1_change = 0
  51 +
  52 + corps_serpent = []
  53 + longueur_serpent = 1
  54 +
  55 + repas_x = round(random.randrange(0, largeur_plateau - bloc_serpent) / 10.0) * 10.0
  56 + repas_y = round(random.randrange(0, hauteur_plateau - bloc_serpent) / 10.0) * 10.0
  57 +
  58 + while not fin_jeu:
  59 +
  60 + while ferme_jeu == True:
  61 + plateau.fill(bleu)
  62 + message("Zut ! Vous avez perdu !", rouge)
  63 + message("Appuyez sur J pour jouer encore", jaune, 20)
  64 + message("ou sur Q pour quitter le jeu.", jaune, 40)
  65 + votre_score(longueur_serpent - 1)
  66 + pygame.display.update()
  67 +
  68 + for évènement in pygame.event.get():
  69 + if évènement.type == pygame.KEYDOWN:
  70 + if évènement.key == pygame.K_q:
  71 + fin_jeu = True
  72 + ferme_jeu = False
  73 + if évènement.key == pygame.K_j:
  74 + boucle_jeu()
  75 +
  76 + for évènement in pygame.event.get():
  77 + if évènement.type == pygame.QUIT:
  78 + fin_jeu = True
  79 + if évènement.type == pygame.KEYDOWN:
  80 + if évènement.key == pygame.K_LEFT:
  81 + x1_change = -bloc_serpent
  82 + y1_change = 0
  83 + elif évènement.key == pygame.K_RIGHT:
  84 + x1_change = bloc_serpent
  85 + y1_change = 0
  86 + elif évènement.key == pygame.K_UP:
  87 + y1_change = -bloc_serpent
  88 + x1_change = 0
  89 + elif évènement.key == pygame.K_DOWN:
  90 + y1_change = bloc_serpent
  91 + x1_change = 0
  92 +
  93 + if x1 >= largeur_plateau or x1 < 0 or y1 >= hauteur_plateau or y1 < 0:
  94 + ferme_jeu = True
  95 + x1 += x1_change
  96 + y1 += y1_change
  97 + plateau.fill(bleu)
  98 + pygame.draw.rect(plateau, vert, [repas_x, repas_y, bloc_serpent, bloc_serpent])
  99 + tête_serpent = []
  100 + tête_serpent.append(x1)
  101 + tête_serpent.append(y1)
  102 + corps_serpent.append(tête_serpent)
  103 + if len(corps_serpent) > longueur_serpent:
  104 + del corps_serpent[0]
  105 +
  106 + for x in corps_serpent[:-1]:
  107 + if x == tête_serpent:
  108 + ferme_jeu = True
  109 +
  110 + notre_serpent(bloc_serpent, corps_serpent)
  111 + votre_score(longueur_serpent - 1)
  112 +
  113 + pygame.display.update()
  114 +
  115 + if x1 == repas_x and y1 == repas_y:
  116 + repas_x = round(random.randrange(0, largeur_plateau - bloc_serpent) / 10.0) * 10.0
  117 + repas_y = round(random.randrange(0, hauteur_plateau - bloc_serpent) / 10.0) * 10.0
  118 + longueur_serpent += 1
  119 +
  120 + horloge.tick(vitesse_serpent)
  121 +
  122 + pygame.quit()
  123 + quit()
  124 +
  125 +boucle_jeu()