1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#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 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_boolean(*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);
}
/* TODO re-enable */
#if 0
Fafficherdegats(surfaces,positions,degats,ALLIE,target,persos);
#endif
SDL_Delay(1000);
SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats);
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;
}
|