
Réalisation d'un petit jeu de stratégie
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
J'ai arrêter ce jeu, je me suis lancé dans beaucoup plus gros et plus dur.
Je ne sais si j'arriverais à le finir.
J'ai finis le moteur d'affichage. L'éditeur de carte à 50%. Il faut que je fasse la gestion du personnage.
Dès que j'ai ça, je ferrais un poste avec démo.
Avant c'est pas la peine, ça ne ressemble à rien.
Je ne sais si j'arriverais à le finir.
J'ai finis le moteur d'affichage. L'éditeur de carte à 50%. Il faut que je fasse la gestion du personnage.
Dès que j'ai ça, je ferrais un poste avec démo.
Avant c'est pas la peine, ça ne ressemble à rien.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Ac
A propos de gestion de personnage...
Actuellement j'ai fini mon affichage de carte en isometrique, le losange, avec trois couches.
J'en suis aussi à la gestion des personnages.
Ce que j'ai fait c'est d'intégrer à chaque perso du joueur une liste de 10 actions. Et pour l'ennemi idem mais avec une liste beaucoup plus longue.C'est un genre de programme simplifié.
J'ai implanté une variante du pathfinding de comtois en thread //.
Je suis en train de lister les types d'actions élémentaires possible pour les personnages:
répétition d'action(s), déplacement de A à B, construire un batiment type X, récolter des ressources, chercher des ressources autour du personnage si la case contenant la ressource exploitée est vide....
Donc ça donne pour un perso qui doit ramener du bois:
1) déplacement jusqu'a l'emplacement indiqué par le joueur
2) vérifier si il a toujours la ressource sinon lancer une recherche aux alentour et revenir en 1
3)récolter le bois
4) déplacement jusqu'au dépot
5) recommencer jusqu'a ce qu'il n'y ait plus de ressource ou qu'une autre action soit donnée par le joueur
Bon au lieu de faire
je voudrais lancer la fonction dont le nom est dans action$(1) directement
ca donne quoi en purebasic, c'est faisable ?
Actuellement j'ai fini mon affichage de carte en isometrique, le losange, avec trois couches.
J'en suis aussi à la gestion des personnages.
Ce que j'ai fait c'est d'intégrer à chaque perso du joueur une liste de 10 actions. Et pour l'ennemi idem mais avec une liste beaucoup plus longue.C'est un genre de programme simplifié.
J'ai implanté une variante du pathfinding de comtois en thread //.
Je suis en train de lister les types d'actions élémentaires possible pour les personnages:
répétition d'action(s), déplacement de A à B, construire un batiment type X, récolter des ressources, chercher des ressources autour du personnage si la case contenant la ressource exploitée est vide....
Donc ça donne pour un perso qui doit ramener du bois:
1) déplacement jusqu'a l'emplacement indiqué par le joueur
2) vérifier si il a toujours la ressource sinon lancer une recherche aux alentour et revenir en 1
3)récolter le bois
4) déplacement jusqu'au dépot
5) recommencer jusqu'a ce qu'il n'y ait plus de ressource ou qu'une autre action soit donnée par le joueur
Bon au lieu de faire
Code : Tout sélectionner
si liste d'action$(1)="déplacement X,Y"
alors fonction déplacement
... etc
ca donne quoi en purebasic, c'est faisable ?
Bah , tu gères pour chaque personnage une liste d'action à réalisé
status = te permet d' interrogé l'action
ex :
id = l'action a éffectué
Code : Tout sélectionner
Structure ACTION
status.l
id.l
endstructure
status = te permet d' interrogé l'action
ex :
Code : Tout sélectionner
\status = #ACTION_PAS_COMMENCER
\status = #ACTION_EN_COUR
\status = #ACTION_INTEROMPUE
\status = #ACTION_FINIE
Code : Tout sélectionner
\id = #MOVE_TO
\id = #FOLLOW_UNIT
Code : Tout sélectionner
structure ACTION
status.l
id.l
endstructure
structure PERSONNAGE
liste_action.ACTION[10]
position.coordonne
cible.coordonne
endstructure
MonHero.PERSONNAGE
MonHero\liste_action[0]\status = #ACTION_PAS_COMMENCER
MonHero\liste_action[0]\id = #MOVE_TO
MonHero\Cible\x = 100
MonHero\Cible\y = 100
if MonHero\liste_action[0]\status = #ACTION_PAS_COMMENCER
MonHero\liste_action[0]\status = #ACTION_EN_COUR
if MonHero\liste_action[0]\id = #MOVE_TO
BougeTonHero(MonHero\Cible\x,MonHero\Cible\y)
endif
endif
etc...
Merci pour la réponse !! 
Je me suis mal expliqué je n'ai pas un problème d'organisation de mes données
je simplifie, ce n'est évidemment pas la structure que j'utilise pour les personnages :p
j'ai une procédure du nom de
j'ai une variable a$="jefaisuneaction(10,12)"
j'ai un "interpréteur" qui interprète le contenu de a$ et lance la procédure adéquate
Donc je veux remplacer le code ci-dessus par:

Je me suis mal expliqué je n'ai pas un problème d'organisation de mes données

je simplifie, ce n'est évidemment pas la structure que j'utilise pour les personnages :p
j'ai une procédure du nom de
Code : Tout sélectionner
procedure jefaisuneaction(x,y)
...
endprocedure
Code : Tout sélectionner
a$="jefaisuneaction(10,12)"
Code : Tout sélectionner
if FindString(a$, "jefaisuneaction",1)
X=val(mid(a$,17;2)
Y=val(mid(a$,20;2)
jefaisuneaction(X,Y) ;notez que c'est exactement le contenu de la variable donc... y'a moyen de gagner des lignes !!
endif
Code : Tout sélectionner
@*a$ ;lance la procedure dont le nom est contenu dans a$ avec ses parametres
Code : Tout sélectionner
Structure vecteur2
x.f
y.f
EndStructure
Structure ACTION
Status.l
Type.l
Position.vecteur2
Cible.vecteur2
;etc...
EndStructure
#ACTION_STANDBYE = 1
#ACTION_MOVETO = 0
Procedure FaitUneAction(*A.ACTION)
; Tu interpretes la structure et plus un string : D
Select *A\Type
Case #ACTION_STANDBYE
Debug "Action en stand-bye"
Case #ACTION_MOVETO
Debug "Action move to : "
Debug "Départ:"
Debug "x = " + Str(*A\Position\x)
Debug "y = " + Str(*A\Position\y)
Debug "Arrivé:"
Debug "x = " + Str(*A\Cible\x)
Debug "y = " + Str(*A\Cible\y)
EndSelect
EndProcedure
MonAction.ACTION
MonAction\Type = #ACTION_STANDBYE
FaitUneAction(MonAction)
Debug "---------------------------------------"
MonAction.ACTION
MonAction\Type = #ACTION_MOVETO
MonAction\Position\x=10
MonAction\Position\y=11
MonAction\Cible\x=201
MonAction\Cible\y=310
FaitUneAction(MonAction)
Debug "---------------------------------------"