SAE11_2023/JEUX_SERPENT/main.c

107 lines
2.7 KiB
C

#include <stdlib.h>
#include <stdio.h>
#include <graph.h>
#include "fonction.h"
#define CYCLE 10000L
int seconde=0, minute=0, seconde_actuel, old_seconde;
char timer[6];
int pos_x[2400], pos_y[2400], old_x[2400], old_y[2400];
int pommex[5], pommey[5];
char score[4];
int go_on=1;
int go_menu=1;
int pause=1;
int go_menu2=1;
unsigned long int suivant;
int tete_up, tete_down, tete_right, tete_left, fond, pomme, serpent;
int Nbr;
int segment=10;
int direction=4; /*1 : vers le haut, 2 : vers le bas, 3 vers la gauche, 4 vers la droite*/
long int vitesse=100000;
int t;
int t2;
int t3;
/*Fonction Principale*/
int main(){
/* paramétrage de la fenêtre + chargement première scène */
InitialiserGraphique();
CreerFenetre(350,100,1200,800);
/*chargement des sprites nécessaire pour le jeu*/
serpent=ChargerSprite("IMG/serpent.png");
fond=ChargerSprite("IMG/fond.png");
tete_up = ChargerSprite("IMG/tete_up.png");
tete_down =ChargerSprite("IMG/tete_down.png");
tete_left = ChargerSprite("IMG/tete_left.png");
tete_right = ChargerSprite("IMG/tete_right.png");
pomme=ChargerSprite("IMG/pomme.png");
/*creation du menu du début*/
MenuDebut();
/*choix dans le menu*/
while(go_menu2){
while(ToucheEnAttente()){
t3 = Touche();
switch(t3){
case XK_q :
FermerGraphique();
return EXIT_SUCCESS;
break;
case XK_Right:
go_menu2=0;
break;
}
}
}
/*creation de la scene du jeu*/
EffacerEcran(CouleurParComposante(0,0,0));
suivant=Microsecondes()+CYCLE;
old_seconde=(suivant/1000000)%10;
DessinerScene(segment, serpent, pomme);
/*Boucle Principale du Programme*/
while(go_on){
direction = Controle(direction);
vitesse = Update_Vitesse(vitesse);
segment = Update_Segment(segment);
Nbr= Score(segment, Nbr);
Controle(direction);
if (pause==1){
Timer(suivant);
Collision(segment);
Update_Vitesse(vitesse);
Update_Segment(segment);
Serpent(direction, segment, tete_up, tete_down, tete_right, tete_left, serpent, fond);
Score(segment, Nbr);
Pomme(pomme);
Attendre(vitesse);
}
}
/* fermeture de la fenêtre si ECHAP pressé + Menu de Fin*/
MenuDeFin(Nbr);
while(go_menu){
while(ToucheEnAttente()){
t2 = Touche();
switch(t2){
case XK_q :
go_menu=0;
break;
}
}
}
/*fermeture du programme*/
FermerGraphique();
return EXIT_SUCCESS;
}