int main(void) { srand((unsigned int)time(NULL)); int snake[TAILLE_SNAKE][2], len_snake=10, pommes[TAILLE_POMME][2], len_pommes=5, direction[2]={0,-1}, score=0, done=0; const unsigned long int tempsDepart=Microsecondes(); unsigned long int prochainAffichage=0,prochainDeplacement=0; initSnake(snake,len_snake); initPommes(pommes, len_pommes, snake, len_snake); InitialiserGraphique(); CreerFenetre(BORD,BORD,60*TAILLE_CASE+2*BORD,40*TAILLE_CASE+BORD+40); ChoisirEcran(1); /*EffacerEcran(CouleurParNom("black")); */ while(!done){ if(Microsecondes()>prochainAffichage){ printScreen(snake, len_snake, pommes, len_pommes, tempsDepart, score); prochainAffichage=Microsecondes()+CYCLE; } GestionTouche(snake, direction, &done); if(Microsecondes()>prochainDeplacement){ DeplacementSnake(snake, len_snake, direction); CheckCollisionBord(snake); CheckCollisionPomme(len_pommes, pommes, snake, len_snake, &score); prochainDeplacement=Microsecondes()+100000; } } }
int main(void) { int snake[300][2], len_snake=10, pommes[20][2], len_pommes=5, i; unsigned long int temps = Microsecondes(); initSnake(snake); initPommes(pommes); srand(time(NULL)); InitialiserGraphique(); CreerFenetre(BORD,BORD,600+2*BORD,400+BORD+40); printTerrain(snake, len_snake, pommes, len_pommes); printTime(temps); Touche(); FermerGraphique(); return EXIT_SUCCESS; }
int main(void) { srand((unsigned int)time(NULL)); int snake[TAILLE_SNAKE][2], len_snake=10, pommes[TAILLE_POMME][2], len_pommes=5, direction[2]={0,-1}, score=0, done=0; unsigned long int tempsDepart=Microsecondes(), tempsActuel,tempsTmp; unsigned long int prochainAffichage=0,prochainDeplacement=0; initSnake(snake,len_snake); initPommes(pommes, len_pommes, snake, len_snake); InitialiserGraphique(); CreerFenetre(BORD,BORD,60*TAILLE_CASE+2*BORD,40*TAILLE_CASE+BORD+40); ChoisirEcran(1);/*on dessine tout dans un ecran virtuel (cela joue le role de buffer) puis dans la fonction printScreen on copie l'ecran virtuel sur l'ecran reel*/ while(!done){ tempsActuel=Microsecondes(); if(Microsecondes()>prochainAffichage){ printScreen(snake, len_snake, pommes, len_pommes, tempsDepart,tempsActuel, score); prochainAffichage=Microsecondes()+CYCLE; } tempsTmp=Microsecondes(); GestionTouche(snake, direction, &done); tempsDepart+=Microsecondes()-tempsTmp; if(Microsecondes()>prochainDeplacement){ DeplacementSnake(snake, len_snake, direction); CheckCollisionBord(snake, &done); CheckCollisionQueue(snake,len_snake,&done); CheckCollisionPomme(len_pommes, pommes, snake, &len_snake, &score); prochainDeplacement=Microsecondes()+50000; } } FermerGraphique(); return EXIT_SUCCESS; }
int main(void) { srand((unsigned int)time(NULL)); int snake[TAILLE_SNAKE][2], len_snake=10, pommes[20][2], len_pommes=10, direction[2]={0,-1}; const unsigned long int tempsDepart=Microsecondes(); unsigned long int prochainAffichage=0,prochainDeplacement=0; initSnake(snake); initPommes(pommes); InitialiserGraphique(); CreerFenetre(BORD,BORD,60*TAILLE_CASE+2*BORD,40*TAILLE_CASE+BORD+40); ChoisirEcran(1); /*EffacerEcran(CouleurParNom("black")); */ while(1){ if(Microsecondes()>prochainAffichage){ printScreen(snake, len_snake, pommes, len_pommes, tempsDepart, 45 ); prochainAffichage=Microsecondes()+CYCLE; } GestionTouche(snake,direction); VerificationBords(snake); if(Microsecondes()>prochainDeplacement){ DeplacementSnake(snake,len_snake,direction); prochainDeplacement=Microsecondes()+100000; } if(ToucheEnAttente()==1 && Touche()==XK_Escape){ FermerGraphique(); return EXIT_SUCCESS; } } }
// Initialiser tout l'environnement graphique int affichage_initialiser (void) { int i; if( InitialiserGraphique() ) return PROBLEME_AFFICHAGE; if( CreerFenetre( (Maxx()-W_FENETRE)/2, (Maxy()-W_FENETRE)/2, W_FENETRE, H_FENETRE ) ) return PROBLEME_AFFICHAGE; EcrireTexte(300,H_FENETRE/2,"Chargement en cours...",2); liste_el=NULL; for(i=0;i<MAX_ELEMENT;i++) element[i] = 0; for(i=0;i<MAX_COULEUR;i++) palette[i] = 0; // On charge toutes les images /* mode d'emploi: * - On ajoute le NOM_DE_MON_ELEMENT dans le 'enum element_nom' de graphique.h * - on charge l'image avec cette commande : * element[NOM_DE_MON_ELEMENT] = charger_image_en_element ("LIEN_VERS_MON_ELEMENT",X_sur_l_image,Y_sur_l_image,LARGEUR,HAUTEUR); * - A l'avenir nous utiliserons NOM_DE_MON_ELEMENT pour utiliser notre element */ element[EL_CASE_P0_BOMB] = charger_image_en_element ("gfx/mine_bleu.xpm",0,0,12,8); element[EL_CASE_P1_BOMB] = charger_image_en_element ("gfx/mine_rouge.xpm",0,0,12,8); element[EL_CASE_P0_VAR] = charger_image_en_element ("gfx/var_bleu.xpm",0,0,12,8); element[EL_CASE_P1_VAR] = charger_image_en_element ("gfx/var_rouge.xpm",0,0,12,8); element[EL_CASE_P0_KILL] = charger_image_en_element ("gfx/kill_bleu.xpm",0,0,12,8); element[EL_CASE_P1_KILL] = charger_image_en_element ("gfx/kill_rouge.xpm",0,0,12,8); element[EL_IND_G] = charger_image_en_element ("gfx/ind_g.xpm",0,0,30,28); element[EL_IND_D] = charger_image_en_element ("gfx/ind_d.xpm",0,0,30,28); element[EL_CHIFFRES] = charger_image_en_element ("gfx/chiffres.xpm",0,0,220,32); element[EL_CHIFFRES_BLEU] = charger_image_en_element ("gfx/chiffres_bleu.xpm",0,0,220,32); element[EL_CHIFFRES_ROUGE] = charger_image_en_element ("gfx/chiffres_rouge.xpm",0,0,220,32); element[EL_FLECHE_B] = charger_image_en_element ("gfx/fleche_b.xpm",0,0,50,50); element[EL_FLECHE_H] = charger_image_en_element ("gfx/fleche_h.xpm",0,0,50,50); element[EL_FLECHE_G] = charger_image_en_element ("gfx/fleche_g.xpm",0,0,50,50); element[EL_FLECHE_D] = charger_image_en_element ("gfx/fleche_d.xpm",0,0,50,50); element[EL_MODE1] = charger_image_en_element ("gfx/mode1.xpm",0,0,50,50); element[EL_MODE2] = charger_image_en_element ("gfx/mode2.xpm",0,0,50,50); element[EL_MODE3] = charger_image_en_element ("gfx/mode3.xpm",0,0,50,50); element[EL_RANK1] = charger_image_en_element ("gfx/r1.xpm",0,0,30,30); element[EL_RANK2] = charger_image_en_element ("gfx/r2.xpm",0,0,30,30); element[EL_RANK3] = charger_image_en_element ("gfx/r3.xpm",0,0,30,30); element[EL_VS] = charger_image_en_element ("gfx/vs.xpm",0,0,100,67); element[EL_LOGO] = charger_image_en_element ("gfx/logo.xpm",0,0,400,80); // On charge toutes les couleurs dans la palette /* mode d'emploi: * - On ajoute le NOM_DE_MA_COULEUR dans le 'couleur_role' de graphique.h * - on charge la couleur avec cette commande : * palette[NOM_DE_MA_COULEUR] = CouleurParComposante(...); // ou CouleurParNom(...); * - A l'avenir nous utiliserons NOM_DE_MA_COULEUR pour utiliser notre couleur */ palette[CLR_BACKGROUND] = hexa2couleur (0xFFFFFF); palette[CLR_TEXTE_DEFAUT] = hexa2couleur (0x9a662f); palette[CLR_TEXTE_INACTIF] = hexa2couleur(0xfac68f); palette[CLR_PROG0] = hexa2couleur(0x0000FF); palette[CLR_PROG1] = hexa2couleur(0xFF0000); palette[CLR_CASE_VIDE] = hexa2couleur(0xF0F0F0); palette[CLR_CASE_VIDE_CONTOUR] = hexa2couleur(0xdFdFdF); palette[CLR_CASE_P0] = hexa2couleur(0x9090FF); palette[CLR_CASE_P0_CONTOUR] = hexa2couleur(0x7070FF); palette[CLR_CASE_P1] = hexa2couleur(0xFF9090); palette[CLR_CASE_P1_CONTOUR] = hexa2couleur(0xFF7070); palette[CLR_CASE_IP0] = hexa2couleur(0x0000FF); palette[CLR_CASE_IP1] = hexa2couleur(0xFF0000); palette[CLR_TEXTE_INFO] = hexa2couleur(0x5a9a2f); palette[CLR_STEPBAR] = hexa2couleur (0x9a662f); palette[CLR_STEPBAR_BACK] = hexa2couleur (0xDEB080); palette[CLR_LISTE_COMBATTANT_BACK] = hexa2couleur (0xEAE1D0); palette[CLR_LISTE_COMBATTANT_CONTOUR] = hexa2couleur (0xC8AC89); palette[CLR_TEXTE_COMBATTANT] = hexa2couleur (0xB27B55); for(i=0;i<MAX_ELEMENT;i++) if(element[i]==0) fprintf(stderr,"attention: l'image de l'element %d n'a pas chargee\n",i); ChoisirCurseur (0); return 0; }
int main() // Fonction principale { int carre = NB_PIXEL_X_JEU/60; unsigned long suivant; suivant= Microsecondes()+delta; int i = 0; int etatJeu = 1; int score = 0; int direction = 0; int seconde = 0; int minute = 0; int tailleSerpent = 10; Coordonnees serpent[20]; serpent[0].x = CENTRE_X_GRILLE; serpent[0].y = CENTRE_Y_GRILLE; Coordonnees queue; Pomme tabPomme[NB_POMME] = {}; Obstacles tabObstacle[NB_OBSTACLE] = {}; Coordonnees tete; InitialiserGraphique(); CreerFenetre(10,10,NB_PIXEL_X_FENETRE,NB_PIXEL_Y_FENETRE); while(etatJeu){ InitialiserVariable(&score,&direction,&tailleSerpent,&seconde,&minute,serpent); for (i = 0 ; i < NB_POMME; i++) // Initialisation du serpent { tabPomme[i].x = -1; tabPomme[i].y = -1; tabPomme[i].flagP = 0; } for (i = 1 ; i < TAILLE_MAX_SNAKE; i++) // Initialisation du serpent { serpent[i].x = -1; serpent[i].y = -1; } NettoyerEcran(); RemplirRectangle(0,NB_PIXEL_Y_JEU,1080,carre*3); // Bande noir en bas for(i = 0; i < tailleSerpent; i++) { ChoisirCouleurDessin(CouleurParComposante(27,94,32)); RemplirRectangle(serpent[i].x*carre,serpent[i].y*carre,carre,carre); } AfficherScore(score); AfficherTemps(seconde,minute,carre,&score); CreerObstacles(carre,tabObstacle); while(ToucheEnAttente() != 1) { } while(1)//Boucle principale { // DessinerGrille(carre); direction = DirectionSerpent(direction); if (Microsecondes()>suivant) // Si une seconde est passé { suivant=Microsecondes()+delta; seconde++; if(seconde == 60){ seconde = 0; minute++; } AfficherTemps(seconde,minute,carre,&score); } queue = DeplacerSerpent(carre,direction,serpent,tailleSerpent); tete = serpent[0]; tailleSerpent = VerifieManger(&score,tete,tabPomme,tailleSerpent); CreerPomme(carre,tabPomme,tabObstacle,tailleSerpent,serpent); if(VerifieCollisionSerpent(tete,serpent,tailleSerpent,tabObstacle)){// Touche un mur => GAME OVER break; } AfficherSerpent(serpent,tailleSerpent,carre,queue); } while(ToucheEnAttente() != 1) { ChoisirCouleurDessin(CouleurParNom("red")); EcrireTexte(340,260,"Vous avez perdu !",2); EcrireTexte(120,290,"Appuyez sur n'importe quelle touche pour recommencer",2); EcrireTexte(260,320,"Appuyez sur Echap pour quitter",2); } if(Touche() == XK_Escape) { break; } } FermerGraphique(); return EXIT_SUCCESS; }