Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
lemeilleurjeudumonde
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tacticalrpg
lemeilleurjeudumonde
Commits
9941fd20
There was a problem fetching the pipeline summary.
Commit
9941fd20
authored
8 years ago
by
Montjoie Henri
Browse files
Options
Downloads
Plain Diff
merge
parents
55a75fe0
d73aaf1a
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/attaques.c
+27
-2
27 additions, 2 deletions
src/attaques.c
src/controleur.c
+125
-2
125 additions, 2 deletions
src/controleur.c
src/controleur.h
+5
-0
5 additions, 0 deletions
src/controleur.h
src/structures.h
+3
-1
3 additions, 1 deletion
src/structures.h
with
160 additions
and
5 deletions
src/attaques.c
+
27
−
2
View file @
9941fd20
...
...
@@ -32,7 +32,13 @@ int attaquer(Personnage *attaquant, Attaque *attaque_select, Personnage *cible)
*/
int
ajouter_effet_perso
(
Effet
*
effet_select
,
Personnage
*
cible
)
{
int
numero_effet
=
0
;
while
((
cible
->
effets
[
numero_effet
].
utilise
)
!=
0
)
{
numero_effet
++
;
}
effet_select
->
utilise
=
1
;
cible
->
effets
[
numero_effet
]
=
*
effet_select
;
return
0
;
}
...
...
@@ -47,8 +53,27 @@ int ajouter_effet_perso(Effet *effet_select, Personnage *cible)
*/
int
appliquer_effet
(
Effet
*
effet_select
,
Personnage
*
cible
)
{
(
cible
->
PV
)
-=
(
effet_select
->
valeur_degats
);
if
((
effet_select
->
nb_tours
)
!=
0
)
{
(
cible
->
PV
)
-=
(
effet_select
->
valeur_degats_duree
);
(
cible
->
PV
)
+=
(
effet_select
->
valeur_soin_duree
);
(
cible
->
gele
)
=
(
effet_select
->
paralysie
);
}
/* A terminer */
return
0
;
}
int
declencher_effets_tour
(
Personnage
*
liste_perso
)
{
int
num_perso
=
0
;
/* */
return
0
;
}
...
...
This diff is collapsed.
Click to expand it.
src/controleur.c
+
125
−
2
View file @
9941fd20
...
...
@@ -218,7 +218,7 @@ char ** obtenirDescriptionCarte(){
}
/*!
* \fn Case * trouverCase(Carte c, int x, int y)
* \fn Case * trouverCase(Carte
_Jeu *
c, int x, int y)
* \brief La fonction retourne un pointeur vers la case de coordonnées x,y
*
* \param les coordonnées x et y d'une case (pas en pixels mais bien en colonne et ligne), ainsi que la carte utilisée
...
...
@@ -282,7 +282,6 @@ int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur){
* \fn int selectionnerCarte(char * nomCarte)
* \brief La fonction ajoute la Carte dont le nom est en parrametre à la Partie.
* Les Terrains de la Carte sont initialisé à partir des cartes décrites en XML
* Les Personnages sont placés à leur position de départ sur la carte.
*
* \param Le nom de la Carte décrite en XML.
* \return 1 si la carte est correctement initialisée, 0 sinon.
...
...
@@ -305,6 +304,11 @@ int selectionnerCarte(char * nomCarte){
return
1
;
}
/*!
* \fn void initPositions()
* \brief La fonction initialise les positions des personnages sur la Carte.
* La carte de jeu doit être initialisée avant l'appel à cette fonction.
*/
void
initPositions
(){
// Positionnement des Personnages sur la Carte_Jeu.
int
i
;
...
...
@@ -320,6 +324,125 @@ void initPositions(){
}
}
/*!
* \fn char * ObtenirRessourceTerrain(int x, int y)
* \brief La fonction teste le type d'un Terrain aux coordonnées données et renvoie la ressource à afficher.
* L'utilisation de cette fonction pourrait se faire dans une boucle dans la SDL pour afficher la carte Case par Case.
* Il est d'abbord nécessaire de convertir les coordonnées "pixels" en coordonnées de cases de jeu.
* La carte doit être initialisées avant l'appel à cette fonction.
*
* \param Les coordonnées de la Case à tester
* \return un char * vers la ressource du Terrain de la case.
*/
char
*
ObtenirRessourceTerrain
(
int
x
,
int
y
){
return
get_terrain
(
trouverCase
(
getCarte
(
partieGlobale
),
x
,
y
))
->
skin_default
;
}
/*!
* \fn int personnagePresent(int x, int y)
* \brief La fonction teste si un Personnage est présent aux coordonnées à tester.
* Les coordonnées doivent être convertir des "pixels" de la SDL en Cases de Jeu.
*
* \param Les coordonnées de la Case à tester
* \return 1 si un Personnage est présent aux coordonnées, 0 sinon.
*/
int
personnagePresent
(
int
x
,
int
y
){
return
est_occupee
(
trouverCase
(
getCarte
(
partieGlobale
),
x
,
y
));
}
/*!
* \fn char * obtenirRessourcePersonnage(int x, int y)
* \brief La fonction renvoie la ressource d'un Personnage présent aux coordonnées.
*
* \param Les coordonnées de la Case à tester
* \return la ressource du personnage sur la case, NULL s'il n'y a pas de personnage sur la case ou si le Personnage n'est pas trouvé.
*/
char
*
obtenirRessourcePersonnage
(
int
x
,
int
y
){
int
i
;
Joueur
*
actuel
=
NULL
;
char
*
ressource
=
malloc
(
TAILLE_CHEMIN
*
sizeof
(
char
));
ressource
=
NULL
;
//Test Personnage sur la case.
if
(
!
personnagePresent
(
x
,
y
)){
return
NULL
;
}
else
{
//sauvegarde du Joueur dont c'est le tour.
actuel
=
getCurrentJoueur
(
getListJoueur
(
partieGlobale
));
//recherche du Personnage sur la case pour le premier Joueur.
setOnFirstJoueur
(
getListJoueur
(
partieGlobale
));
for
(
i
=
0
;
i
<
TAILLE_MAX_GROUPE
;
i
++
){
if
(
get_x
(
getPosition
(
getPersonnage
(
getCurrentJoueur
(
getListJoueur
(
partieGlobale
)),
i
)))
==
x
){
if
(
get_y
(
getPosition
(
getPersonnage
(
getCurrentJoueur
(
getListJoueur
(
partieGlobale
)),
i
)))
==
y
){
//sauvegarde de la ressource du Personnage.
ressource
=
(
getClasse
(
getPersonnage
(
getCurrentJoueur
(
getListJoueur
(
partieGlobale
)),
i
)))
->
skins
.
charac_default
;
// On remet le pointeur courant sur le personnage dont c'est le tour.
setOnJoueur
(
getListJoueur
(
partieGlobale
),
actuel
);
//retour de la ressource du personnage.
return
ressource
;
}
}
}
//recherche du Personnage sur la case pour le premier Joueur.
nextJoueur
(
getListJoueur
(
partieGlobale
));
for
(
i
=
0
;
i
<
TAILLE_MAX_GROUPE
;
i
++
){
if
(
get_x
(
getPosition
(
getPersonnage
(
getCurrentJoueur
(
getListJoueur
(
partieGlobale
)),
i
)))
==
x
){
if
(
get_y
(
getPosition
(
getPersonnage
(
getCurrentJoueur
(
getListJoueur
(
partieGlobale
)),
i
)))
==
y
){
ressource
=
(
getClasse
(
getPersonnage
(
getCurrentJoueur
(
getListJoueur
(
partieGlobale
)),
i
)))
->
skins
.
charac_default
;
setOnJoueur
(
getListJoueur
(
partieGlobale
),
actuel
);
return
ressource
;
}
}
}
//Si aucun personnage trouvé.
return
NULL
;
}
}
// 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
(){
int
i
,
j
;
EtatsJeu
state
=
SAISIE_JOUEURS
;
extern
Partie
*
partieGlobale
;
extern
Game_Package
packGlobal
;
initJeu
();
ajouterUnJoueur
(
"Joueur1"
,
&
state
);
ajouterUnJoueur
(
"Joueur2"
,
&
state
);
ajouterPersonnage
(
packGlobal
.
Classes_Package
[
0
].
nom
,
0
,
1
);
ajouterPersonnage
(
packGlobal
.
Classes_Package
[
1
].
nom
,
1
,
1
);
ajouterPersonnage
(
packGlobal
.
Classes_Package
[
2
].
nom
,
2
,
1
);
ajouterPersonnage
(
packGlobal
.
Classes_Package
[
3
].
nom
,
0
,
2
);
ajouterPersonnage
(
packGlobal
.
Classes_Package
[
4
].
nom
,
1
,
2
);
ajouterPersonnage
(
packGlobal
.
Classes_Package
[
0
].
nom
,
2
,
2
);
selectionnerCarte
(
packGlobal
.
Cartes_Package
[
1
].
nom
);
initPositions
();
for
(
i
=
0
;
i
<
LARG_MAX_CARTE
;
i
++
){
for
(
j
=
0
;
j
<
HAUT_MAX_CARTE
;
j
++
){
printf
(
"%s
\n
"
,
ObtenirRessourceTerrain
(
i
,
j
));
}
}
for
(
i
=
0
;
i
<
LARG_MAX_CARTE
;
i
++
){
for
(
j
=
0
;
j
<
HAUT_MAX_CARTE
;
j
++
){
printf
(
"%d "
,
personnagePresent
(
i
,
j
));
}
printf
(
"
\n
"
);
}
for
(
i
=
0
;
i
<
LARG_MAX_CARTE
;
i
++
){
for
(
j
=
0
;
j
<
HAUT_MAX_CARTE
;
j
++
){
printf
(
"%s : Position : %d/%d
\n
"
,
obtenirRessourcePersonnage
(
i
,
j
),
i
,
j
);
}
}
}
...
...
This diff is collapsed.
Click to expand it.
src/controleur.h
+
5
−
0
View file @
9941fd20
...
...
@@ -32,6 +32,11 @@ int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur);
int
selectionnerCarte
(
char
*
nomCarte
);
void
initPositions
();
char
*
ObtenirRessourceTerrain
(
int
x
,
int
y
);
int
personnagePresent
(
int
x
,
int
y
);
char
*
obtenirRessourcePersonnage
(
int
x
,
int
y
);
void
testControlleurConsole
();
#endif // CONTROLEUR_H
This diff is collapsed.
Click to expand it.
src/structures.h
+
3
−
1
View file @
9941fd20
...
...
@@ -142,6 +142,7 @@ typedef Case Carte[TAILLE_MAX_CARTE];
typedef
struct
Effet
{
char
id
[
TAILLE_ID
];
/*!< ID de l'effet de taille TAILLE_ID*/
char
nom
[
TAILLE_NOMS
];
/*!< Nom de l'effet de taille TAILLE_NOMS*/
unsigned
int
utilise
;
unsigned
int
nb_tours
;
/*!< Le nombre de tours restant avant que l'effet ne s'estompe*/
unsigned
int
valeur_degats
;
/*!< Le nombre de degats subis */
unsigned
int
valeur_soin
;
/*!< Le nombre PV regeneres */
...
...
@@ -186,7 +187,8 @@ typedef struct Personnage{
unsigned
short
int
PV
;
/*!< Les PV actuels du personnage*/
unsigned
short
int
mana
;
/*!< Le mana actuel du personnage*/
Case
*
position
;
/*!< La case representant la position actuelle du personnage*/
Effet
effets
[];
/*!< Un tableau d'effets representant les effets affectant le personnage*/
Effet
effets
[
10
];
/*!< Un tableau d'effets representant les effets affectant le personnage*/
int
gele
;
}
Personnage
;
/*! \struct Competence structures.h
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment