From e816f16a5007798968f4c9003b3159a45485e88f Mon Sep 17 00:00:00 2001 From: Olivier Gayot Date: Sun, 26 Oct 2014 18:20:28 +0000 Subject: game: remove useless checks it is safe to pass a null pointer to SDL_FreeSurface() BTW: change the format of the files from dos to unix Signed-off-by: Olivier Gayot --- jouer.c | 444 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 222 insertions(+), 222 deletions(-) (limited to 'jouer.c') diff --git a/jouer.c b/jouer.c index 8ef1377..f1efab7 100644 --- a/jouer.c +++ b/jouer.c @@ -1,222 +1,222 @@ -#include -#include -#include -#include "structures.h" -#include "constantes.h" -#include "prototypes.h" - -int Fjouer (SURFACES *surfaces, POSITIONS *positions, PERSONNAGES persos[],ENNEMIS ennemis[]) -{ - OBJET objets; - unsigned int continuer=1; - int selection=0; - int i; - SDL_Event event; - int Vtourallie=0; - int Vtourennemi=0; - int Vtour; - int Vnbennemis=0; - int page=0; - int nbactions=5; - unsigned int gagne,perdu; - if(surfaces->Pfondjeu!=NULL) - { - SDL_FreeSurface(surfaces->Pfondjeu); - surfaces->Pfondjeu=NULL; - } - Finitialiserpositionspersos(surfaces,positions); - Fblitterfond(surfaces); // on blit le fond du jeu - Fremplirobjets(&objets); // on monte les variables potions ether, etc - Fremplircompetencesallie(persos); // on initialise les pv, pm, xp etc DES PERSOS - Vnbennemis=Fcalculernbennemis(); // on tire aléatoirement le nombre d'ennemis présents dans le combat - Fchoisirtypeennemis(persos,surfaces,ennemis,Vnbennemis); // on choisit la classe des ennemis comme guerrier gobelin etc - Fremplirennemis(surfaces,Vnbennemis,ennemis); - Fblitterpersos(surfaces,positions,persos); // on blit les persos sur l'ecran - Fblitterennemis(surfaces,positions,ennemis,Vnbennemis); // idem pour les ennemis - Fremplircompetencesennemis(ennemis,Vnbennemis); // on initialise les pv, pm, exp, etc DES ENNEMIS - Vtour=(rand()%(1-0+1)+0); // on détermine aléatoirement si c'est les ennemis ou les persos qui tapent en premier - Fcolourselection(surfaces,persos,Vtourallie,positions); // on créé les surfaces rouges (pour le tour) - if(Vtour==ALLIE) - Fblitcoloredselection(surfaces,positions,Vtourallie,persos); - while (continuer) - { - if(Vtour==ALLIE) //si un player joue - { - while (persos[Vtourallie].etat==MORT) //si le perso selectionné est mort - { - if(Vtourallie<2) // si ce n'est pas le dernier - Vtourallie++; // on prend le perso suivant - else // sinon si c'est le dernier - Vtourallie=0; // on reprend le 1er - } - Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,ACTIONS,NULL); - SDL_WaitEvent(&event); - switch(event.type) - { - case SDL_KEYDOWN: - switch(event.key.keysym.unicode) - { - case SDLK_ESCAPE: - continuer=0; - break; - } - switch (event.key.keysym.sym) - { - case SDLK_UP: - if (selection!=0) - selection--; - else - selection=nbactions-1; - page=selection/3; - Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,ACTIONS,NULL); - break; - case SDLK_DOWN: - if (selection!=nbactions-1) - selection++; - else - selection=0; - page=selection/3; - Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,ACTIONS,NULL); - break; - case SDLK_RETURN: - if(selection==ATTAQUE) - Fattaquer(surfaces,positions,persos,&Vtourallie,ennemis,Vnbennemis,&Vtour); - else if(selection==MAGIE_BLANCHE) - Fselectionnermagieblanche (surfaces,positions,persos,&Vtourallie,ennemis,Vnbennemis,&Vtour); - else if(selection==MAGIE_NOIRE) - Fselectionnermagienoire (surfaces,positions,persos,&Vtourallie,ennemis,Vnbennemis,&Vtour); - else if(selection==TECHNIQUES){} - else if(selection==OBJETS) - Fselectionnerobjet(surfaces,positions,persos,&Vtourallie,ennemis,Vnbennemis,&objets,&Vtour); - break; - } - break; - } - } - else if(Vtour==ENNEMI) // sinon si c'est le cpu qui joue - { - while(ennemis[Vtourennemi].etat==MORT) - { - if(VtourennemiVpositionpersos[i].x=20; - positions->Vpositionpersos[1].y=YWIN/2-(surfaces->Tperso[1]->h/2); - positions->Vpositionpersos[0].y=positions->Vpositionpersos[1].y/2-surfaces->Tperso[0]->h/2; - positions->Vpositionpersos[2].y=YWIN-(20+surfaces->Tperso[2]->h); -} - -void Finitialiserpositionsennemis(SURFACES *surfaces,POSITIONS *positions,int Vnbennemis) -{ - if (Vnbennemis==0) - { - positions->Vpositionennemis[0].x=XWIN-20-surfaces->Tennemi[0]->w; - positions->Vpositionennemis[0].y=YWIN/2-surfaces->Tennemi[0]->h/2; - } - if (Vnbennemis==1) - { - positions->Vpositionennemis[0].x = XWIN - 20 - surfaces->Tennemi[0]->w; - positions->Vpositionennemis[0].y = YWIN/3 - surfaces->Tennemi[0]->h/2; - positions->Vpositionennemis[1].x = XWIN - 20 - surfaces->Tennemi[2]->w; - positions->Vpositionennemis[1].y = YWIN/3*2 - surfaces->Tennemi[1]->h/2; - } - else if (Vnbennemis==2) - { - positions->Vpositionennemis[1].x = XWIN - 20 - surfaces->Tennemi[1]->w; - positions->Vpositionennemis[1].y = YWIN/2 - surfaces->Tennemi[1]->h/2; - positions->Vpositionennemis[0].x = XWIN - 20 - surfaces->Tennemi[0]->w; - positions->Vpositionennemis[0].y = YWIN/4 - surfaces->Tennemi[1]->h/2; - positions->Vpositionennemis[2].x = XWIN - 20 - surfaces->Tennemi[2]->w; - positions->Vpositionennemis[2].y = YWIN/4*3 - surfaces->Tennemi[2]->h/2; - } - else if (Vnbennemis==3) - { - positions->Vpositionennemis[1].x = XWIN - 20 - surfaces->Tennemi[1]->w; - positions->Vpositionennemis[1].y = YWIN/5*2 - surfaces->Tennemi[1]->h/2; - positions->Vpositionennemis[2].x = XWIN - 20 - surfaces->Tennemi[2]->w; - positions->Vpositionennemis[2].y = YWIN/5*3 - surfaces->Tennemi[2]->h/2; - positions->Vpositionennemis[0].x = XWIN - surfaces->Tennemi[1]->w - surfaces->Tennemi[0]->w/2; - positions->Vpositionennemis[0].y = YWIN/5 -surfaces->Tennemi[0]->h/2; - positions->Vpositionennemis[3].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[3]->w/2; - positions->Vpositionennemis[3].y = YWIN/5*4 - surfaces->Tennemi[3]->h/2; - } - else if (Vnbennemis==4) - { - positions->Vpositionennemis[2].x = XWIN - 20 - surfaces->Tennemi[2]->w; - positions->Vpositionennemis[2].y = YWIN/2 - surfaces->Tennemi[2]->h/2; - positions->Vpositionennemis[1].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[1]->w/2; - positions->Vpositionennemis[1].y = YWIN/6*2 - surfaces->Tennemi[1]->h/2; - positions->Vpositionennemis[3].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[3]->w/2; - positions->Vpositionennemis[3].y = YWIN/6*4 - surfaces->Tennemi[3]->h/2; - positions->Vpositionennemis[0].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[1]->w - surfaces->Tennemi[0]->w/2; - positions->Vpositionennemis[0].y = YWIN/6 - surfaces->Tennemi[0]->h/2; - positions->Vpositionennemis[4].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[3]->w - surfaces->Tennemi[4]->w/2; - positions->Vpositionennemis[4].y = YWIN/6*5 - surfaces->Tennemi[4]->h/2; - } -} - -void Fremplirobjets(OBJET *objets) -{ - objets->potions=10; - objets->ethers=10; - objets->potionsplus=5; - objets->ethersplus=5; -} - - - - +#include +#include +#include +#include "structures.h" +#include "constantes.h" +#include "prototypes.h" + +int Fjouer (SURFACES *surfaces, POSITIONS *positions, PERSONNAGES persos[],ENNEMIS ennemis[]) +{ + OBJET objets; + unsigned int continuer=1; + int selection=0; + int i; + SDL_Event event; + int Vtourallie=0; + int Vtourennemi=0; + int Vtour; + int Vnbennemis=0; + int page=0; + int nbactions=5; + unsigned int gagne,perdu; + if(surfaces->Pfondjeu!=NULL) + { + SDL_FreeSurface(surfaces->Pfondjeu); + surfaces->Pfondjeu=NULL; + } + Finitialiserpositionspersos(surfaces,positions); + Fblitterfond(surfaces); // on blit le fond du jeu + Fremplirobjets(&objets); // on monte les variables potions ether, etc + Fremplircompetencesallie(persos); // on initialise les pv, pm, xp etc DES PERSOS + Vnbennemis=Fcalculernbennemis(); // on tire aléatoirement le nombre d'ennemis présents dans le combat + Fchoisirtypeennemis(persos,surfaces,ennemis,Vnbennemis); // on choisit la classe des ennemis comme guerrier gobelin etc + Fremplirennemis(surfaces,Vnbennemis,ennemis); + Fblitterpersos(surfaces,positions,persos); // on blit les persos sur l'ecran + Fblitterennemis(surfaces,positions,ennemis,Vnbennemis); // idem pour les ennemis + Fremplircompetencesennemis(ennemis,Vnbennemis); // on initialise les pv, pm, exp, etc DES ENNEMIS + Vtour=(rand()%(1-0+1)+0); // on détermine aléatoirement si c'est les ennemis ou les persos qui tapent en premier + Fcolourselection(surfaces,persos,Vtourallie,positions); // on créé les surfaces rouges (pour le tour) + if(Vtour==ALLIE) + Fblitcoloredselection(surfaces,positions,Vtourallie,persos); + while (continuer) + { + if(Vtour==ALLIE) //si un player joue + { + while (persos[Vtourallie].etat==MORT) //si le perso selectionné est mort + { + if(Vtourallie<2) // si ce n'est pas le dernier + Vtourallie++; // on prend le perso suivant + else // sinon si c'est le dernier + Vtourallie=0; // on reprend le 1er + } + Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,ACTIONS,NULL); + SDL_WaitEvent(&event); + switch(event.type) + { + case SDL_KEYDOWN: + switch(event.key.keysym.unicode) + { + case SDLK_ESCAPE: + continuer=0; + break; + } + switch (event.key.keysym.sym) + { + case SDLK_UP: + if (selection!=0) + selection--; + else + selection=nbactions-1; + page=selection/3; + Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,ACTIONS,NULL); + break; + case SDLK_DOWN: + if (selection!=nbactions-1) + selection++; + else + selection=0; + page=selection/3; + Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,ACTIONS,NULL); + break; + case SDLK_RETURN: + if(selection==ATTAQUE) + Fattaquer(surfaces,positions,persos,&Vtourallie,ennemis,Vnbennemis,&Vtour); + else if(selection==MAGIE_BLANCHE) + Fselectionnermagieblanche (surfaces,positions,persos,&Vtourallie,ennemis,Vnbennemis,&Vtour); + else if(selection==MAGIE_NOIRE) + Fselectionnermagienoire (surfaces,positions,persos,&Vtourallie,ennemis,Vnbennemis,&Vtour); + else if(selection==TECHNIQUES){} + else if(selection==OBJETS) + Fselectionnerobjet(surfaces,positions,persos,&Vtourallie,ennemis,Vnbennemis,&objets,&Vtour); + break; + } + break; + } + } + else if(Vtour==ENNEMI) // sinon si c'est le cpu qui joue + { + while(ennemis[Vtourennemi].etat==MORT) + { + if(VtourennemiVpositionpersos[i].x=20; + positions->Vpositionpersos[1].y=YWIN/2-(surfaces->Tperso[1]->h/2); + positions->Vpositionpersos[0].y=positions->Vpositionpersos[1].y/2-surfaces->Tperso[0]->h/2; + positions->Vpositionpersos[2].y=YWIN-(20+surfaces->Tperso[2]->h); +} + +void Finitialiserpositionsennemis(SURFACES *surfaces,POSITIONS *positions,int Vnbennemis) +{ + if (Vnbennemis==0) + { + positions->Vpositionennemis[0].x=XWIN-20-surfaces->Tennemi[0]->w; + positions->Vpositionennemis[0].y=YWIN/2-surfaces->Tennemi[0]->h/2; + } + if (Vnbennemis==1) + { + positions->Vpositionennemis[0].x = XWIN - 20 - surfaces->Tennemi[0]->w; + positions->Vpositionennemis[0].y = YWIN/3 - surfaces->Tennemi[0]->h/2; + positions->Vpositionennemis[1].x = XWIN - 20 - surfaces->Tennemi[2]->w; + positions->Vpositionennemis[1].y = YWIN/3*2 - surfaces->Tennemi[1]->h/2; + } + else if (Vnbennemis==2) + { + positions->Vpositionennemis[1].x = XWIN - 20 - surfaces->Tennemi[1]->w; + positions->Vpositionennemis[1].y = YWIN/2 - surfaces->Tennemi[1]->h/2; + positions->Vpositionennemis[0].x = XWIN - 20 - surfaces->Tennemi[0]->w; + positions->Vpositionennemis[0].y = YWIN/4 - surfaces->Tennemi[1]->h/2; + positions->Vpositionennemis[2].x = XWIN - 20 - surfaces->Tennemi[2]->w; + positions->Vpositionennemis[2].y = YWIN/4*3 - surfaces->Tennemi[2]->h/2; + } + else if (Vnbennemis==3) + { + positions->Vpositionennemis[1].x = XWIN - 20 - surfaces->Tennemi[1]->w; + positions->Vpositionennemis[1].y = YWIN/5*2 - surfaces->Tennemi[1]->h/2; + positions->Vpositionennemis[2].x = XWIN - 20 - surfaces->Tennemi[2]->w; + positions->Vpositionennemis[2].y = YWIN/5*3 - surfaces->Tennemi[2]->h/2; + positions->Vpositionennemis[0].x = XWIN - surfaces->Tennemi[1]->w - surfaces->Tennemi[0]->w/2; + positions->Vpositionennemis[0].y = YWIN/5 -surfaces->Tennemi[0]->h/2; + positions->Vpositionennemis[3].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[3]->w/2; + positions->Vpositionennemis[3].y = YWIN/5*4 - surfaces->Tennemi[3]->h/2; + } + else if (Vnbennemis==4) + { + positions->Vpositionennemis[2].x = XWIN - 20 - surfaces->Tennemi[2]->w; + positions->Vpositionennemis[2].y = YWIN/2 - surfaces->Tennemi[2]->h/2; + positions->Vpositionennemis[1].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[1]->w/2; + positions->Vpositionennemis[1].y = YWIN/6*2 - surfaces->Tennemi[1]->h/2; + positions->Vpositionennemis[3].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[3]->w/2; + positions->Vpositionennemis[3].y = YWIN/6*4 - surfaces->Tennemi[3]->h/2; + positions->Vpositionennemis[0].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[1]->w - surfaces->Tennemi[0]->w/2; + positions->Vpositionennemis[0].y = YWIN/6 - surfaces->Tennemi[0]->h/2; + positions->Vpositionennemis[4].x = XWIN - surfaces->Tennemi[2]->w - surfaces->Tennemi[3]->w - surfaces->Tennemi[4]->w/2; + positions->Vpositionennemis[4].y = YWIN/6*5 - surfaces->Tennemi[4]->h/2; + } +} + +void Fremplirobjets(OBJET *objets) +{ + objets->potions=10; + objets->ethers=10; + objets->potionsplus=5; + objets->ethersplus=5; +} + + + + -- cgit v1.2.3