diff --git a/src/controleur.c b/src/controleur.c index d4fe9d8fb22b57c9736899ababa2ccaa3fbf52bb..6e5b64e612c76e2ba013237e3c8f781e5d33ad7f 100644 --- a/src/controleur.c +++ b/src/controleur.c @@ -836,6 +836,53 @@ char * joueurVictorieux(){ return getNomJoueur(getCurrentJoueur(getListJoueur(partieGlobale))); } + /*! + * \fn int lancerAttaque(int numDepart, int numCible) + * \brief La fonction lance un sort du Personnage numDepart vers le Personnage numCible (entier définis dans la SDL) + * + * \param des entiers vers les personnages départs et cible (définit par la SDL) + * \return 1 si l'attaque a été correctement lancée, 0 sinon. + */ +int lancerAttaque(int numDepart, int numCible, char * nomAttaque){ + int indiceAttaque,i; + Personnage * dep=NULL; + Personnage * cible = NULL; + Joueur * actuel = getCurrentJoueur(getListJoueur(partieGlobale)); + i=-1; + + if((numDepart<=3)&&(numDepart>0)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + dep=getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numDepart-1); + } + if((numDepart<=6)&&(numDepart>3)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + nextJoueur(getListJoueur(partieGlobale)); + dep=getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numDepart-4); + } + + for(i=0;i<NB_ATTAQUES_MAX;i++){ + if((strncmp(getNomAttaques(getClasse(dep),i),nomAttaque,TAILLE_NOMS))==0){ + indiceAttaque=i; + } + } + + if(indiceAttaque==-1){ + return 0; + } + + if((numCible<=3)&&(numCible>0)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + dep=getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numCible-1); + } + if((numCible<=6)&&(numCible>3)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + nextJoueur(getListJoueur(partieGlobale)); + dep=getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numCible-4); + } + setOnJoueur(getListJoueur(partieGlobale),actuel); + return lancerSort(getCarte(partieGlobale),dep,cible,indiceAttaque); +} + // Je met ici mes tests réalisés dans le main pour éviter de les réécrire si jamais il y a un problème. // Si vous voulez tester aussi, à recopier dans le main avant l'appel à initJeu(). void testControlleurConsole(){ diff --git a/src/controleur.h b/src/controleur.h index 68cd4765c1ac8d90253b381b088e56aacdf14fef..4e49350aac6a9067c86aebcb9c1a1d26fa0cc7b1 100644 --- a/src/controleur.h +++ b/src/controleur.h @@ -60,6 +60,8 @@ int finDuTour(); void personnageSuivant(); char * joueurVictorieux(); +int lancerAttaque(int numDepart, int numCible, char * nomAttaque); + void testControlleurConsole(); #endif // CONTROLEUR_H