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