-
Notifications
You must be signed in to change notification settings - Fork 0
/
snake.cpp
87 lines (77 loc) · 1.87 KB
/
snake.cpp
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
#include <iostream>
#include <conio.h>
#include <windows.h>
// Définir les dimensions de la grille
const int WIDTH = 20;
const int HEIGHT = 20;
// Définir la position de départ de la tête du serpent
int x = WIDTH / 2;
int y = HEIGHT / 2;
// Définir la direction du serpent
int direction = 0; // 0 = droite, 1 = haut, 2 = gauche, 3 = bas
// Définir la queue du serpent
int tailX[100];
int tailY[100];
int tailLength = 0;
// Définir la position de la pomme
int appleX;
int appleY;
// Fonction pour déplacer le serpent
void Move()
{
// Enregistrer la position actuelle de la queue
int prevX = tailX[0];
int prevY = tailY[0];
int prev2X, prev2Y;
tailX[0] = x;
tailY[0] = y;
for (int i = 1; i < tailLength; i++)
{
prev2X = tailX[i];
prev2Y = tailY[i];
tailX[i] = prevX;
tailY[i] = prevY;
prevX = prev2X;
prevY = prev2Y;
}
switch (direction)
{
case 0:
x++;
break;
case 1:
y--;
break;
case 2:
x--;
break;
case 3:
y++;
break;
}
// Gérer les collisions avec les bords de la grille
if (x >= WIDTH) x = 0; else if (x < 0) x = WIDTH - 1;
if (y >= HEIGHT) y = 0; else if (y < 0) y = HEIGHT - 1;
// Vérifier si le serpent mange une pomme
if (x == appleX && y == appleY)
{
// Incrémenter la longueur de la queue
tailLength++;
// Choisir une nouvelle position aléatoire pour la pomme
appleX = rand() % WIDTH;
appleY = rand() % HEIGHT;
}
// Vérifier si le serpent se mord la queue
for (int i = 0; i < tailLength; i++)
{
if (tailX[i] == x && tailY[i] == y)
{
// Réinitialiser le serpent et la pomme
x = WIDTH / 2;
y = HEIGHT / 2;
direction = 0;
tailLength = 0;
appleX = rand() % WIDTH;
appleY = rand() % HEIGHT;
}
}