Blame view

snake.v0.py 3.9 KB
d4c39135c   Jourlin Pierre   1ère version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  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()
   
e4e6005c2   Jourlin Pierre   +can change bloc ...
23
  taille_bloc = 20
d4c39135c   Jourlin Pierre   1ère version
24
25
26
27
28
29
30
31
32
33
  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])
   
e4e6005c2   Jourlin Pierre   +can change bloc ...
34
  def notre_serpent(taille_bloc, corps_serpent):
d4c39135c   Jourlin Pierre   1ère version
35
      for x in corps_serpent:
e4e6005c2   Jourlin Pierre   +can change bloc ...
36
          pygame.draw.rect(plateau, noir, [x[0], x[1], taille_bloc, taille_bloc])
d4c39135c   Jourlin Pierre   1ère version
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
   
  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
   
e4e6005c2   Jourlin Pierre   +can change bloc ...
55
56
      repas_x = round(random.randrange(0, largeur_plateau - taille_bloc) / taille_bloc) * taille_bloc
      repas_y = round(random.randrange(0, hauteur_plateau - taille_bloc) / taille_bloc) * taille_bloc
d4c39135c   Jourlin Pierre   1ère version
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
   
      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:
e4e6005c2   Jourlin Pierre   +can change bloc ...
81
                      x1_change = -taille_bloc
d4c39135c   Jourlin Pierre   1ère version
82
83
                      y1_change = 0
                  elif évènement.key == pygame.K_RIGHT:
e4e6005c2   Jourlin Pierre   +can change bloc ...
84
                      x1_change = taille_bloc
d4c39135c   Jourlin Pierre   1ère version
85
86
                      y1_change = 0
                  elif évènement.key == pygame.K_UP:
e4e6005c2   Jourlin Pierre   +can change bloc ...
87
                      y1_change = -taille_bloc
d4c39135c   Jourlin Pierre   1ère version
88
89
                      x1_change = 0
                  elif évènement.key == pygame.K_DOWN:
e4e6005c2   Jourlin Pierre   +can change bloc ...
90
                      y1_change = taille_bloc
d4c39135c   Jourlin Pierre   1ère version
91
92
93
94
95
96
97
                      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)
e4e6005c2   Jourlin Pierre   +can change bloc ...
98
          pygame.draw.rect(plateau, vert, [repas_x, repas_y, taille_bloc, taille_bloc])
d4c39135c   Jourlin Pierre   1ère version
99
100
101
102
103
104
105
106
107
108
109
          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
   
e4e6005c2   Jourlin Pierre   +can change bloc ...
110
          notre_serpent(taille_bloc, corps_serpent)
d4c39135c   Jourlin Pierre   1ère version
111
112
113
114
115
          votre_score(longueur_serpent - 1)
   
          pygame.display.update()
   
          if x1 == repas_x and y1 == repas_y:
e4e6005c2   Jourlin Pierre   +can change bloc ...
116
117
              repas_x = round(random.randrange(0, largeur_plateau - taille_bloc) / taille_bloc) * taille_bloc
              repas_y = round(random.randrange(0, hauteur_plateau - taille_bloc) / taille_bloc) * taille_bloc
d4c39135c   Jourlin Pierre   1ère version
118
119
120
121
122
123
124
125
              longueur_serpent += 1
   
          horloge.tick(vitesse_serpent)
   
      pygame.quit()
      quit()
   
  boucle_jeu()