void gestion_temps(Carte *pCarte, Temps *gTemps, Position *positionCerise, Gestion_image gImage, SDL_Surface *ecran, Gestion_musique gMusique, short *pointsDeVie, Monde *gSerpent,enum Niveau niveau_v, short *effacePomme) { gTemps->tempsActuel = SDL_GetTicks(); if ( gTemps->tempsActuel - gTemps->tempsPrecedent > niveau_v ) // si il y a 250 ms qui est ecoul� donc on peut pass� { // Si la valeur de positionCerise est diff�rente de -1 en x et y alors if(positionCerise->x != -1 && positionCerise->y != -1 && gSerpent->changementBonus == 99) { gTemps->bonusTempsRestante -= niveau_v; // on fais descendre de 1 le tempsRestant de l'affichage du bonus } else { gTemps->tempsRestantePomme -= niveau_v; // pour chaque difficult� le temps se r�duit diff�remment ! // 255 compl�tement opaque | 0 compl�tement transparent ! | 10 000 / 40 = 255 SDL_SetAlpha(gImage.pomme, SDL_SRCALPHA,gTemps->tempsRestantePomme / 40 ); // pour l'effacement de la pomme au fur et � mesure if(gTemps->tempsRestantePomme < 1.0) { *effacePomme = 1; // pour que nous puissons effacer la pomme d�j� sur la carte } } gTemps->tempsTotalDeJeu++; deplacement_joueur(pCarte, ecran, pointsDeVie, gSerpent, gTemps, gMusique, positionCerise, gImage); gTemps->tempsPrecedent = gTemps->tempsActuel; // mise � jour du tempsPrecedent } else // Si �a fait moins de 250ms depuis le dernier tour de boucle, on endort le programme le temps qu'il faut { SDL_Delay(niveau_v - (gTemps->tempsActuel - gTemps->tempsPrecedent)); } }
/** *\fn partie (void) *\brief lance les differente fonction utile au deroulement d'une partie */ int partie (int niveau) { int win = 0; int lose = 0; int i,j; for(i = 0; i < (escouade1.nb_perso)*2; i= i + 2){ tab_pv[i] = i/2; tab_pv[i+1] = escouade1.perso[i/2].stat.HP; } init(); horde1 = generer_horde(horde1,niveau); placement(escouade1,horde1); affichage(); while(win == 0 && lose == 0){ deplacement_joueur(); attaque_allie(); resolve_attaque(); affichage(); deplacement_ennemi(); attaque_nemesis(); resolve_attaque(); affichage(); win = 1; lose = 1; for(i = 1 ; i < N ; i++) { for(j = 1 ; j < M ; j++) { if(mat[i][j] == 1){ iallie = 1; while((tab_a[iallie] != i || tab_a[iallie+1] != j)&&(iallie < 20)){ iallie = iallie + 3; } afficher_perso_uni(escouade1.perso[tab_a[iallie-1]]); printf("\n\n"); lose = 0; }else if (mat[i][j] == 2){ iennemi = 1; while((tab_e[iennemi] != i || tab_e[iennemi+1] != j)&&(iennemi < 20)){ iennemi = iennemi + 3; } afficher_perso_uni(horde1.perso[tab_e[iennemi-1]]); printf("\n\n"); win = 0; } } } } for(i = 0; i <(escouade1.nb_perso)*2; i = i + 2){ escouade1.perso[tab_pv[i]].stat.HP = tab_pv[i+1]; } system("clear"); if (win == 1){ printf("You Rock !!\n"); liste_personnage = mise_a_jour_liste(escouade1,liste_personnage); }else if (lose == 1){ printf("You Lose, try harder next time \n"); } return(EXIT_SUCCESS); }