Jeu de plateau tour par tour !!

Bonjour à tous !!

Tout d’abord, je vous demanderai de bien vouloir m’excuser pour mes questions un peu longues qui vous sembleront même peut-être idiotes… mais j’ai beau parcourir le forum ainsi que les tutos, je ne trouve rien de cet ordre (d’ailleurs… est-ce bien ces 2 pages-là http://www.wiki.compilgames.net/doku.php/game_develop/tutoriels&http://www.wiki.compilgames.net/doku.php/game_develop/articles lorsque vous parlez d’aller voir les tutos ?.. parce que cela fait vraiment trop peu… Je ne sais même pas par où commencer !!). Je précise enfin que j’ai déjà fait le tuto “Galaxies War” !

Donc pour faire simple, si vous ne l’avez pas déjà lu sur mon topic “présentation”, je compte en fait créer un jeu de plateau type “wargame” qui se jouerait à “humain contre humain”, au tour par tour, en reprenant quasiment les mêmes règles qu’un jeu de société existant. Le principe est le suivant: 2 ou 3 équipes de 5 personnages s’affrontent sur une map quadrillée qui prendra tout l’écran. Chaque perso dispose de 4 valeurs caractéristiques (combat, physique, mental, déplacement) ainsi que d’un inventaire de 4 armes qui modifieraient ces valeurs (par exemple une grosse sulfateuse lourde qui conférerait +2 en combat mais -2 en déplacement). Mais pour commencer je ne mettrais que 2x2 persos sans inventaire avec seulement 2 valeurs (combat+déplacement).

Même si je souhaite avoir au final 4 modes de jeu (Combat, Conquête, Chasse aux drapeau et Mission), je veux tout d’abord débuter par le plus simple, le mode combat, ou le perdant sera tout simplement celui qui se fait buter tous ses persos.

Ainsi, j’aimerai savoir tout d’abord comment ordonner a GD d’effectuer un système de tour par tour, comme pour un jeu de dames ou d’échecs…

Je voudrais savoir ensuite comment créer une map remplie de “cases”, chaque case ayant la même taille qu’un perso, comme dans un bomberman par exemple. J’ajouterai aussi que si le perso a 4 en déplacement, il ne pourra se déplacer que sur 4 cases. Dans cette optique, je compte donc avoir, dans l’idéal, un système ou le joueur clique sur le perso, appuie sur la(les) case(s) adjacente(s) afin de définir où il doit aller (avec si possible un “grisement” de ce parcours et son chiffre “déplacement” diminuant selon la sélection), puis il appuie ensuite sur entrée ou espace pour valider son action. Et le bonhomme de se déplacer. Il faudrait donc que les cases non adjacentes au perso (ou aux cases déjà sélectionnées) soient indisponibles, impossibles à utiliser.

Dans le même ordre d’idées, une fois la phase “déplacement” effectuée, viendrait alors la phase “combat”, où le joueur serait sensé choisir l’arme qu’il veut utiliser (certes inutile pour mes premiers tests ^^), cliquer sur le perso qu’il veut attaquer, puis encore valider au moyen de la touche entrée ou spacebar…
Dans cette optique, il serait aussi bien pratique de rendre indisponible l’arme si le placement de l’agresseur n’est pas assez proche de l’agressé. Par ailleurs, je compte intégrer un système de pathfinding qui s’adapterait à la géographie de la carte ou la portée de certaines armes (par exemple case adjacente inaccessible si mur ou obstacle au milieu, ou encore un couteau qu’on ne pourrait pas lancer car seulement destiné à un système de corps à corps (case voisine à l’ennemi))

Il va sans dire qu’une fois cette “séquence” (phase deplacement+phase combat) terminée, c’est au tour de l’autre joueur de jouer. Dans cette optique, il serait intéressant de pouvoir refaire un déplacement après une attaque, si la valeur déplacement le permet).

Et j’aimerai enfin que, tant que tous les persos n’ont pas été utilisés, le joueur ne puissent pas rejouer le même perso (un tour de jeu correspondant à la totalité des persos).

Voilà voilà, j’arrête ici, et je vous demande encore pardon pour mon gros gros message, mais il me fallait au moins ça pour commencer efficacement… je pense qu’une fois ces systèmes correctement assimilés, je vous laisserai tranquille !! :wink:

En vous remerciant…

Pour les cases, regarde l’extension Tableau de victor → levasseursoftware.net/?page_id=4

Nouveau lien : http://www.levasseursoftware.net/index.php/extension-tableaux
(car j’ai dis Au revoir à WordPress)

Pour demander à GD de créer un système de tour pas tour, il suffit de lui demander gentiment :stuck_out_tongue:

Comme je l’ai dis dans mon post sur ta présentation, je te conseille d’utiliser un tableau à deux dimensions : l’index de première dimension sera le tour joué actuellement, et les index de deuxième dimension représenteront les caractéristique du tour actuel.
Je m’explique avec un exemple : on imagine qu’il y a 4 personnage, donc 4 tours.
On vas utiliser une variable de la scène indiquant le tour joué actuellement que j’appelle tourActuel.
Tu insères un évènement avec pour condition un test de variable (dans Variable > Variable de la scène)) qui teste la variable tourActuel si elle est égale à 0.
Tu ne mets pas d’action, mais un sous évènement (clic droit sur l’évènement > insérer > un sous-évènement) et tu mets en condition par exemple la touche Left est appuyée (sachant que tu peux rajouter ici une condition qui teste le nombre maximum de cases que peux parcourir le personnage, qui s’effectue avec un test de variable, avec cette valeur : Variable(nomdelavariableindiquantlenombremaximumdecaseaparcourir), et en action tu mets l’action que tu veux utiliser pour déplacer ton personnage (dis-le si tu as besoin d’aide pour ça)

Ensuite, tu mets ces évènements pour la suite, sachant que chacun correspond à un tour d’un personnage :

L’index 1D n°1 donc le perso. 1 se déplace de 3 cases : il passe de la case 0 à la case 3. On note cette valeur dans l’index 1D Variable(tourActuel) (perso. 1) (NOTE : Variable(tourActuel) est le code qui permet de récupérer la valeur contenue dans la variable indiquée entre parenthèses (n’oublie pas les majuscules !)) et l’index 2D 0 (caractéristique 1)
On ajoute ensuite 1 à la variable tourActuel.

Lorsque c’est au troisième joueur de jouer, après son tour on ajoute as un à la variable tourActuel, mais on la rend égale à zéro pour qu’il n’y est pas un troisième joueur fantôme qui vienne :laughing: Comme ça le joueur 1 pourras jouer de nouveau.
Pour la valeur combat, tu la stocke dans l’index 1D Variable(tourActuel) et dans l’index 2D (1) car le 0 est déjà pris.

En espérant t’avoir aidé,
Daemon237

Merci pour vos réponses mais je ne comprends absolument rien à l’extension “tableau” ainsi qu’aux explications fournies dans celles-ci… J’ai l’impression d’être devant Perceval qui expliquerait ses règles du passgrelot/grelote ça picote :smiley: .

Quoiqu’il en soit j’ai bien lu ce que Daemon237 a mis… don Daemon237, merci à toi !

Cependant, lorsque j’insère mon événement avec condition test de variable il y a 6 types de variables (globale, test si une variable globale est définie, texte d’une variable globale, variable de la scène, test si une variable de la scène est définie, ou texte d’une variable de la scène)

Tu dis ensuite:

J’arrive à créer le sous événement, la condition left également. Cependant la condition test de nombre maximum de cases etc… Je ne comprends pas !

En fait il me semble que je ne sais pas créer de variables…

Tu n’as pas 6 types de variables mais 3 : les variables des objets, disponibles dans tous les objets > variable qui sont propres à chaque objet (ex : un ennemi peut avoir une variable de 10, un autre de 15 mais ça reste la même variable), les variable de la scène (propre à la scène uniquement), et les variables globales (accessible depuis toutes les scènes du jeu, les valeurs ne changent pas d’une scène à l’autre). Tu as dis qu’il y avait six type de variable, non : il y a six type de test de variable. Nous ne nous intéressons pas aux trois premiers type étant donné qu’il sont en rapport avec les variables globales, on vas se concentrer sur les trois autres :
[]Tester si une variable est définie : non, car on ne veut pas savoir si une variable existe ou non[/][]Tester le texte d’une variable de la scène : non, car notre variable contient une valeur et pas un texte[/][]Tester la valeur d’une variable de la scène : oui, c’est ça qu’on veut :slight_smile: [/]
Tu mets donc tester une variable de la scène et tu teste la valeur dites dans un précédent post :wink:

Le nombre de case maximum que peut parcourir un joueur est par exemple le nombre de point qu’il accomplit en lançant un dé.
Je m’explique avec un autre exemple :

Ensuite l’extension tableau est assez spéciale et au début plutôt dure à prendre en main, mais après ça marche tout seul. J’essaierai de t’envoyer un truc d’aide.

Autre chose : je te conseille d’utiliser un tableau à deux dimensions pour gérer ton plateau, même si il faudra que tu utilises des images pour représenter les cases.