diff options
Diffstat (limited to 'ia.c')
-rw-r--r-- | ia.c | 66 |
1 files changed, 66 insertions, 0 deletions
@@ -0,0 +1,66 @@ +#include <stdio.h>
+#include <stdlib.h>
+#include <SDL/SDL.h>
+#include "constantes.h"
+#include "structures.h"
+#include "prototypes.h"
+#include <time.h>
+
+void Factionennemi(int* Vtourennemi,SURFACES* surfaces,POSITIONS* positions, ENNEMIS ennemis[], PERSONNAGES persos[],int Vnbennemis,int*Vtour,int Vtourallie)
+{
+ int target,degats;
+
+ target=Fchoosetargetallie(persos);
+ degats=Fgeneratedegats(persos, ennemis,*Vtourennemi,target);
+ persos[target].pv=persos[target].pv-degats;
+ do
+ {
+ if(*Vtourennemi<Vnbennemis)
+ (*Vtourennemi)++;
+ else if(*Vtourennemi==Vnbennemis)
+ {
+ *Vtourennemi=0;
+ inverse(Vtour);
+ }
+ }while(ennemis[*Vtourennemi].etat==MORT);
+ if(persos[target].pv<=0)
+ {
+ persos[target].pv=0;
+ persos[target].etat=MORT;
+ positions->Vpositionmort.x=positions->Vpositionpersos[target].x+surfaces->Tperso[target]->w/2-surfaces->Pmort->w/2;
+ positions->Vpositionmort.y=positions->Vpositionpersos[target].y+surfaces->Tperso[target]->h/2-surfaces->Pmort->h/2;
+ SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort);
+ }
+ Fafficherdegats(surfaces,positions,degats,ALLIE,target,persos);
+ SDL_Delay(1000);
+ SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats);
+ if(*Vtour==ALLIE)
+ Fblitcoloredselection(surfaces,positions,Vtourallie,persos);
+ SDL_Flip(surfaces->Pecran);
+}
+
+int Fchoosetargetallie(PERSONNAGES persos[])
+{
+ int min=0,max=2,target;
+
+ do
+ {
+ target=(rand()%(max-min+1)+min);
+ }while(persos[target].etat==MORT);
+ return target;
+}
+
+int Fgeneratedegats(PERSONNAGES persos[],ENNEMIS ennemis[],int Vtourennemi,int target)
+{
+ int degats,taux,min,max;
+
+ degats=ennemis[Vtourennemi].force*60-persos[target].defense*50;
+ taux=degats/4;
+ min=degats-taux;
+ max=degats+taux;
+ degats=(rand()%(max-min+1)+min);
+ if(degats<0)
+ degats=0;
+
+ return degats;
+}
|