Réalisation d'un petit jeu de stratégie

Programmation avancée de jeux en PureBasic
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

le sons fait planter wine :o. je testerais sous vista quand j'aurai 5 minutes.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

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 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)]
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Message par Fig »

ça sera en 3D isométrique ? tiles hexagonales ou en losange ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oui, en 3D isométrique, et pour la forme, ni l'une ni l'autre.
Point de vue 3D perso
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)]
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Message par Fig »

ouais... Mais non... :?

Dis en plus, tu as piqué ma curiositébn 8O
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Fig a écrit :ouais... Mais non... :?

Dis en plus, tu as piqué ma curiositébn 8O
et la mienne :P :D
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Ac

Message par Fig »

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

Code : Tout sélectionner

si liste d'action$(1)="déplacement X,Y"
alors fonction déplacement
... etc
je voudrais lancer la fonction dont le nom est dans action$(1) directement


ca donne quoi en purebasic, c'est faisable ?
Anonyme

Message par Anonyme »

Bah , tu gères pour chaque personnage une liste d'action à réalisé

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
id = l'action a éffectué

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...
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Message par Fig »

Merci pour la réponse !! :D

Je me suis mal expliqué je n'ai pas un problème d'organisation de mes données :wink:
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
j'ai une variable a$="jefaisuneaction(10,12)"

Code : Tout sélectionner

a$="jefaisuneaction(10,12)"
j'ai un "interpréteur" qui interprète le contenu de a$ et lance la procédure adéquate

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 
Donc je veux remplacer le code ci-dessus par:

Code : Tout sélectionner

@*a$   ;lance la procedure dont le nom est contenu dans a$ avec ses parametres
Anonyme

Message par Anonyme »

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 "---------------------------------------"
Répondre