SAE11_2023/JEUX_SERPENT/main.c

108 lines
2.7 KiB
C
Raw Permalink Normal View History

2023-11-30 09:54:00 +01:00
#include <stdlib.h>
#include <stdio.h>
#include <graph.h>
2023-12-07 14:02:18 +01:00
#include "fonction.h"
2023-12-22 11:44:28 +01:00
#define CYCLE 10000L
2023-11-30 09:54:00 +01:00
2023-12-22 11:44:28 +01:00
/*variables gestion du timer*/
unsigned long int suivant;
unsigned long int old_seconde=0;
2023-12-04 17:01:52 +01:00
2023-12-22 11:44:28 +01:00
/*variables pour gerer les menus + la pause*/
int go_menu2=1;
2023-12-04 17:01:52 +01:00
int go_on=1;
2023-12-10 13:11:43 +01:00
int go_menu=1;
2023-12-17 12:58:38 +01:00
int pause=1;
2023-12-19 13:09:01 +01:00
2023-12-22 11:44:28 +01:00
/*variables gestion score*/
2023-12-19 15:44:28 +01:00
int Nbr;
2023-12-22 11:44:28 +01:00
/*variables gestion serpent + pomme*/
2023-12-19 15:44:28 +01:00
int segment=10;
2023-12-22 11:44:28 +01:00
int tete_up, tete_down, tete_right, tete_left, fond, pomme, serpent;
/*1 : vers le haut, 2 : vers le bas, 3 vers la gauche, 4 vers la droite*/
int direction=4;
/*vitesse d'acualisation du serpent*/
2023-12-19 13:09:01 +01:00
long int vitesse=100000;
2023-12-22 11:44:28 +01:00
/*variables gestion input*/
2023-12-18 17:05:44 +01:00
int t;
2023-12-10 13:11:43 +01:00
int t2;
2023-12-10 14:52:16 +01:00
int t3;
2023-12-18 13:36:17 +01:00
2023-11-30 09:59:11 +01:00
/*Fonction Principale*/
int main(){
2023-12-10 13:11:43 +01:00
/* paramétrage de la fenêtre + chargement première scène */
2023-11-30 09:54:00 +01:00
InitialiserGraphique();
2023-11-30 09:59:11 +01:00
CreerFenetre(350,100,1200,800);
2023-12-10 14:52:16 +01:00
2023-12-19 15:44:28 +01:00
/*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*/
2023-12-10 14:52:16 +01:00
MenuDebut();
2023-12-19 15:44:28 +01:00
/*choix dans le menu*/
2023-12-10 14:52:16 +01:00
while(go_menu2){
while(ToucheEnAttente()){
t3 = Touche();
switch(t3){
case XK_q :
FermerGraphique();
return EXIT_SUCCESS;
break;
case XK_Right:
go_menu2=0;
break;
}
}
}
2023-12-19 15:44:28 +01:00
/*creation de la scene du jeu*/
2023-11-30 09:59:11 +01:00
EffacerEcran(CouleurParComposante(0,0,0));
2023-12-21 11:33:41 +01:00
DessinerScene(segment, serpent, pomme);
2023-12-04 17:01:52 +01:00
suivant=Microsecondes()+CYCLE;
2023-12-22 11:44:28 +01:00
old_seconde=(suivant/100000)%10;
2023-11-30 09:59:11 +01:00
2023-12-04 17:01:52 +01:00
/*Boucle Principale du Programme*/
2023-11-30 09:59:11 +01:00
while(go_on){
2023-12-19 11:52:06 +01:00
direction = Controle(direction);
2023-12-17 12:58:38 +01:00
if (pause==1){
2023-12-22 11:44:28 +01:00
old_seconde = Timer(suivant, old_seconde);
2023-12-19 13:09:01 +01:00
Collision(segment);
2023-12-22 11:44:28 +01:00
vitesse = Update_Vitesse(vitesse);
segment = Update_Segment(segment);
2023-12-19 15:44:28 +01:00
Serpent(direction, segment, tete_up, tete_down, tete_right, tete_left, serpent, fond);
2023-12-22 11:44:28 +01:00
Nbr = Score(segment, Nbr);
2023-12-19 15:44:28 +01:00
Pomme(pomme);
2023-12-19 12:46:10 +01:00
Attendre(vitesse);
2023-12-22 11:44:28 +01:00
CollisionTerrain();
2023-12-17 12:58:38 +01:00
}
2023-11-30 09:59:11 +01:00
}
2023-12-10 13:11:43 +01:00
/* fermeture de la fenêtre si ECHAP pressé + Menu de Fin*/
2023-12-19 15:44:28 +01:00
MenuDeFin(Nbr);
2023-12-10 13:11:43 +01:00
while(go_menu){
while(ToucheEnAttente()){
t2 = Touche();
switch(t2){
case XK_q :
go_menu=0;
break;
}
}
}
2023-12-19 15:44:28 +01:00
/*fermeture du programme*/
2023-11-30 09:54:00 +01:00
FermerGraphique();
2023-11-30 09:59:11 +01:00
return EXIT_SUCCESS;
2023-12-04 17:01:52 +01:00
}