88 lines
2.6 KiB
C
88 lines
2.6 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <graph.h>
|
|
#include "serpent.h"
|
|
#include "fruit.h"
|
|
|
|
#define LARGEUR_FENETRE 1600 /* Largeur de la fenêtre (60 colonnes de jeu + murs de 2 cases de chaque côté) */
|
|
#define HAUTEUR_FENETRE 1000 /* Hauteur de la fenêtre (40 lignes de jeu + murs de 2 cases en haut et en bas) */
|
|
#define TAILLE_CASE 20 /* Taille d'une case pour le jeu de Snake */
|
|
#define NB_COLONNES 60 /* Nombre de colonnes du jeu */
|
|
#define NB_LIGNES 40 /* Nombre de lignes du jeu */
|
|
#define CYCLE 100000
|
|
#define VITESSE_SERPENT 100000
|
|
#define NB_POMMES 5
|
|
|
|
|
|
int main() {
|
|
|
|
|
|
couleur couleurFond = CouleurParComposante(200, 200, 200);
|
|
int touchePressee, i;
|
|
Serpent serpent;
|
|
unsigned long tempsPrecedent = Microsecondes();
|
|
unsigned long tempsActuel;
|
|
couleur couleurMurs = CouleurParComposante(0, 0, 0);
|
|
Pomme pommes[NB_POMMES];
|
|
srand(time(NULL));
|
|
|
|
|
|
InitialiserGraphique();
|
|
CreerFenetre(10, 10, LARGEUR_FENETRE, HAUTEUR_FENETRE);
|
|
|
|
EffacerEcran(couleurFond);
|
|
|
|
AfficherFenetre();
|
|
|
|
pomme();
|
|
|
|
InitialiserSerpent(&serpent, LARGEUR_FENETRE / 2, HAUTEUR_FENETRE / 2);
|
|
|
|
while (1) {
|
|
if (ToucheEnAttente()) {
|
|
int touche = Touche();
|
|
if (touche == XK_Left && serpent.directionX != 1) {
|
|
serpent.directionX = -1;
|
|
serpent.directionY = 0;
|
|
} else if (touche == XK_Right && serpent.directionX != -1) {
|
|
serpent.directionX = 1;
|
|
serpent.directionY = 0;
|
|
} else if (touche == XK_Up && serpent.directionY != 1) {
|
|
serpent.directionX = 0;
|
|
serpent.directionY = -1;
|
|
} else if (touche == XK_Down && serpent.directionY != -1) {
|
|
serpent.directionX = 0;
|
|
serpent.directionY = 1;
|
|
} else if (touche == XK_Escape) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
tempsActuel = Microsecondes();
|
|
if (tempsActuel - tempsPrecedent >= VITESSE_SERPENT) {
|
|
DeplacerSerpent(&serpent);
|
|
if (VerifierCollision(&serpent)) {
|
|
FermerGraphique();
|
|
return EXIT_SUCCESS;
|
|
}
|
|
|
|
EffacerEcran(couleurFond);
|
|
DessinerSerpent(&serpent);
|
|
AfficherFenetre();
|
|
tempsPrecedent = tempsActuel;
|
|
ChoisirCouleurDessin(couleurMurs);
|
|
RemplirRectangle(0, HAUTEUR_FENETRE - 80, LARGEUR_FENETRE, 80);
|
|
}
|
|
}
|
|
|
|
for (i = 0; i < NB_POMMES; i++) {
|
|
LibererSprite(pommes[i].sprite);
|
|
}
|
|
|
|
FermerGraphique();
|
|
return EXIT_SUCCESS;
|
|
}
|
|
|
|
|
|
|