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
49ea9c31
There was a problem fetching the pipeline summary.
Commit
49ea9c31
authored
8 years ago
by
Montjoie Henri
Browse files
Options
Downloads
Patches
Plain Diff
fonctions du moteur pour verifier les cases accessibles
parent
cd727081
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/controleur.c
+15
-11
15 additions, 11 deletions
src/controleur.c
src/deplacements.c
+77
-13
77 additions, 13 deletions
src/deplacements.c
src/deplacements.h
+8
-0
8 additions, 0 deletions
src/deplacements.h
with
100 additions
and
24 deletions
src/controleur.c
+
15
−
11
View file @
49ea9c31
...
...
@@ -470,7 +470,7 @@ void obtenirPositionPersonnage(int numero, int * x, int * y){
/*!
* \fn Personnage * trouverPersonnage(Case * c)
* \brief La fonction renvoie un pointeur vers le personnage présent sur la case en par
ram
metre.
* \brief La fonction renvoie un pointeur vers le personnage présent sur la case en par
a
metre.
*
* \param Les coordonnées de la Case à tester
* \return Un pointeur vers un personnage, NULL, s'il n'y a pas de personnage sur la case.
...
...
@@ -504,18 +504,13 @@ Personnage * trouverPersonnage(Case * c){
return
NULL
;
}
/*!
* \fn char * obtenirNomJoueurCourant()
* \brief La fonction renvoie le nom du Joueur dont c'est le tour.
/*!
* \fn void deplacement_personnage(int numPerso, int x_pixel, int y_pixel)
* \brief La fonction permet de deplacer un personnage
*
* \
return Un char * v
er
s
le
nom du joueur dont c'est le tour.
* \
param Le numero du personnage a deplac
er
,
le
s coordonnees ou l'utilisateur a clique
*/
char
*
obtenirNomJoueurCourant
(){
return
getNomJoueur
(
getCurrentJoueur
(
getListJoueur
(
partieGlobale
)));
}
void
deplacement_personnage
(
int
numPerso
,
int
x_pixel
,
int
y_pixel
){
int
x
=
x_case_cliquee
(
x_pixel
,
y_pixel
);
int
y
=
y_case_cliquee
(
x_pixel
,
y_pixel
);
...
...
@@ -528,6 +523,15 @@ void deplacement_personnage(int numPerso, int x_pixel, int y_pixel){
}
/*!
* \fn char * obtenirNomJoueurCourant()
* \brief La fonction renvoie le nom du Joueur dont c'est le tour.
*
* \return Un char * vers le nom du joueur dont c'est le tour.
*/
char
*
obtenirNomJoueurCourant
(){
return
getNomJoueur
(
getCurrentJoueur
(
getListJoueur
(
partieGlobale
)));
}
/*!
* \fn char * obtenirNomClassePersonnage(int numero)
...
...
This diff is collapsed.
Click to expand it.
src/deplacements.c
+
77
−
13
View file @
49ea9c31
...
...
@@ -37,7 +37,7 @@ boolean case_a_cote(Personnage * perso, Case * destination){
* \brief déplace un personnage sur une case située à côté de la sienne, si cela est possible
*
* \param Un personnage, une case
* \return
Un entier.
* \return
0 si le deplacement est possible et a ete effectue, 1 si il n'est pas possible ou n'a pas fonctionne
*/
int
deplacement_unitaire
(
Personnage
*
perso
,
Case
*
destination
){
if
(
est_occupee
(
destination
)
==
vrai
){
...
...
@@ -62,21 +62,85 @@ int deplacement_unitaire(Personnage *perso,Case * destination){
return
1
;
}
/* Cette fonction devrait plutot renvoyer un tableau ou une liste de cases ou le
deplacement est possible, pour la surbrillance on verra ca plus tard avec une
fonction d'affichage specifique. */
int
affichage_deplacements_possibles
(
Personnage
*
perso
,
Carte
*
c
){
/* Met en surbrillance les cases disponibles pour un déplacement */
/*!
* \fn boolean case_a_cote_case(Case * depart, Case * destination)
* \brief verifie si deux cases sont cote-a-cote
*
* \param la case de depart, la case d'arrivee
* \return vrai ou faux
*/
boolean
case_a_cote_case
(
Case
*
depart
,
Case
*
destination
){
int
i
;
int
pd_max_x
=
get_PD
(
perso
);
// int pd_max_y = get_PD(perso);
if
(
get_x
(
depart
)
>
get_x
(
destination
)
+
1
||
get_x
(
depart
)
<
get_x
(
destination
)
-
1
||
get_y
(
depart
)
>
get_y
(
destination
)
+
1
||
get_y
(
depart
)
<
get_y
(
destination
)
-
1
){
return
faux
;
}
for
(
i
=
0
;
i
<
LARG_MAX_CARTE
;
i
+=
2
){
if
(
get_y
(
depart
)
==
get_y
(
destination
)
+
1
&&
get_x
(
depart
)
!=
get_x
(
destination
)
&&
get_x
(
depart
)
==
i
+
1
)
return
faux
;
if
(
get_y
(
depart
)
==
get_y
(
destination
)
-
1
&&
get_x
(
depart
)
!=
get_x
(
destination
)
&&
get_x
(
depart
)
==
i
)
return
faux
;
}
return
vrai
;
}
/*!
* \fn boolean deplacement_unitaire_possible(Case* depart,Case* destination)
* \brief verifie si on peut de deplacer d'une cas e a une autre
*
* \param la case de depart, la case d'arrivee
* \return vrai si le deplacement est possible, faux si il n'est pas possible
*/
boolean
deplacement_unitaire_possible
(
Case
*
depart
,
Case
*
destination
){
if
(
est_occupee
(
destination
)
==
vrai
){
return
faux
;
}
if
(
case_franchissable
(
destination
)
==
faux
){
return
faux
;
}
if
(
case_a_cote_case
(
depart
,
destination
)
==
vrai
){
return
vrai
;
}
return
faux
;
}
for
(
i
=
0
;
i
<
pd_max_x
;
i
++
){
if
(
1
!=
0
){
/* ??? */
/*!
* \fn boolean deplacement_possible(Personnage* perso, Case* c, Carte_Jeu* carte)
* \brief verifie si un personnage peut se rendre sur une case distante en fonction de ses points de mouvement
*
* \param le personnage, la case d'arrivee, la carte
* \return vrai si le deplacement est possible, faux si il n'est pas possible
*/
boolean
deplacement_possible
(
Personnage
*
perso
,
Case
*
c
,
Carte_Jeu
*
carte
){
int
pts_mvt
=
perso
->
points_deplacement
;
Case
*
depart
=
perso
->
position
;
int
x
,
y
;
for
(
x
=
0
;
x
<
LARG_MAX_CARTE
;
x
++
){
for
(
y
=
0
;
y
<
HAUT_MAX_CARTE
;
y
++
){
if
(
deplacement_unitaire_possible
(
depart
,
&
carte
->
Tab_Cases
[
x
][
y
])
==
vrai
){
return
deplacement_possible_recursif
(
&
carte
->
Tab_Cases
[
x
][
y
],
c
,
carte
,
pts_mvt
-
carte
->
Tab_Cases
[
x
][
y
].
terrain
->
PD_requis
);
}
}
}
return
0
;
return
faux
;
}
/*!
* \fn boolean deplacement_possible_recursif(Case* dep, Case* dest, Carte_Jeu* carte, int pts_restants)
* \brief fonction recursive appellee par deplacement_possible, elle a le meme role
*
* \param une case depart, une case arrivee, la carte, les points de mouvement du personnage
* \return vrai si le deplacement est possible, faux si il n'est pas possible
*/
boolean
deplacement_possible_recursif
(
Case
*
dep
,
Case
*
dest
,
Carte_Jeu
*
carte
,
int
pts_restants
){
int
x
,
y
;
if
(
dep
==
dest
)
return
vrai
;
if
(
pts_restants
<
1
)
return
faux
;
for
(
x
=
0
;
x
<
LARG_MAX_CARTE
;
x
++
){
for
(
y
=
0
;
y
<
HAUT_MAX_CARTE
;
y
++
){
if
(
deplacement_unitaire_possible
(
dep
,
&
carte
->
Tab_Cases
[
x
][
y
])
==
vrai
){
return
deplacement_possible_recursif
(
&
carte
->
Tab_Cases
[
x
][
y
],
dest
,
carte
,
pts_restants
-
1
);
}
}
}
return
faux
;
}
This diff is collapsed.
Click to expand it.
src/deplacements.h
+
8
−
0
View file @
49ea9c31
...
...
@@ -10,5 +10,13 @@ boolean case_a_cote(Personnage *perso,Case *destination);
int
deplacement_unitaire
(
Personnage
*
perso
,
Case
*
destination
);
boolean
case_a_cote_case
(
Case
*
depart
,
Case
*
destination
);
boolean
deplacement_unitaire_possible
(
Case
*
depart
,
Case
*
destination
);
boolean
deplacement_possible
(
Personnage
*
perso
,
Case
*
c
,
Carte_Jeu
*
carte
);
boolean
deplacement_possible_recursif
(
Case
*
dep
,
Case
*
dest
,
Carte_Jeu
*
carte
,
int
pts_restants
);
#endif
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