diff options
author | Olivier Gayot <duskcoder@gmail.com> | 2014-10-26 18:20:28 +0000 |
---|---|---|
committer | Olivier Gayot <duskcoder@gmail.com> | 2014-10-26 18:20:54 +0000 |
commit | e816f16a5007798968f4c9003b3159a45485e88f (patch) | |
tree | 86be1ca571b383ba1d532fa655991d099903732a /jouer.c | |
parent | f290b8cd7e40ed8688175fba312697f7da96a34e (diff) |
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 <duskcoder@gmail.com>
Diffstat (limited to 'jouer.c')
-rw-r--r-- | jouer.c | 444 |
1 files changed, 222 insertions, 222 deletions
@@ -1,222 +1,222 @@ -#include <stdlib.h>
-#include <stdio.h>
-#include <SDL/SDL.h>
-#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(Vtourennemi<Vnbennemis)
- Vtourennemi++;
- else if(Vtourennemi=Vnbennemis)
- Vtourennemi=0;
- }
- Factionennemi(&Vtourennemi,surfaces,positions,ennemis,persos,Vnbennemis,&Vtour,Vtourallie);
- } // les actions sont faites
-
-
- // on vérifie à présent si on a gagné ou si on a perdu !
- gagne=1;
- perdu=1;
- for(i=0;i<=Vnbennemis;i++)
- {
- if(ennemis[i].etat==VIE)
- gagne=0;
- }
- for(i=0;i<3;i++)
- {
- if(persos[i].etat==VIE)
- perdu=0;
- }
-
- // la y'a des trucs a mettre pour si on gagne ou on perd parce que sa fait assez pitié :p
- if(perdu)
- {
- SDL_Delay(2000);
- continuer=0;
- }
- else if(gagne)
- {
- SDL_Delay(2000);
- continuer=0;
- }
- }
- return 0;
-}
-
-void Fchoisirtypeennemis (PERSONNAGES persos[],SURFACES *surfaces,ENNEMIS ennemis[],int Vnbennemis)
-{
- int moyenne=0;
- int i;
- for (i=0;i<3;i++)
- moyenne+=persos[i].nv;
- moyenne/=3;
- if(moyenne<5)
- {
- for (i=0;i<=Vnbennemis;i++)
- ennemis[i].classe=GUERRIER_GOBELIN; // pour l'instant pas d'autres choix xD
- }
-}
-
-void Finitialiserpositionspersos (SURFACES *surfaces,POSITIONS *positions)
-{
- int i;
-
- for (i=0;i<3;i++)
- positions->Vpositionpersos[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 <stdlib.h> +#include <stdio.h> +#include <SDL/SDL.h> +#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(Vtourennemi<Vnbennemis) + Vtourennemi++; + else if(Vtourennemi=Vnbennemis) + Vtourennemi=0; + } + Factionennemi(&Vtourennemi,surfaces,positions,ennemis,persos,Vnbennemis,&Vtour,Vtourallie); + } // les actions sont faites + + + // on vérifie à présent si on a gagné ou si on a perdu ! + gagne=1; + perdu=1; + for(i=0;i<=Vnbennemis;i++) + { + if(ennemis[i].etat==VIE) + gagne=0; + } + for(i=0;i<3;i++) + { + if(persos[i].etat==VIE) + perdu=0; + } + + // la y'a des trucs a mettre pour si on gagne ou on perd parce que sa fait assez pitié :p + if(perdu) + { + SDL_Delay(2000); + continuer=0; + } + else if(gagne) + { + SDL_Delay(2000); + continuer=0; + } + } + return 0; +} + +void Fchoisirtypeennemis (PERSONNAGES persos[],SURFACES *surfaces,ENNEMIS ennemis[],int Vnbennemis) +{ + int moyenne=0; + int i; + for (i=0;i<3;i++) + moyenne+=persos[i].nv; + moyenne/=3; + if(moyenne<5) + { + for (i=0;i<=Vnbennemis;i++) + ennemis[i].classe=GUERRIER_GOBELIN; // pour l'instant pas d'autres choix xD + } +} + +void Finitialiserpositionspersos (SURFACES *surfaces,POSITIONS *positions) +{ + int i; + + for (i=0;i<3;i++) + positions->Vpositionpersos[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; +} + + + + |