summaryrefslogtreecommitdiff
path: root/ia.c
blob: 6f11cb9c54a677699307fe63f02039a4989dbfd0 (plain)
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
#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_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);
    }
    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;
}