Quatre à la suite

Pour partager vos applications (Excel, Calc et Google Sheets) avec les autres membres
E
ExcelCoreGame
Membre fidèle
Membre fidèle
Messages : 424
Appréciations reçues : 14
Inscrit le : 24 octobre 2017
Version d'Excel : 2007FR

Message par ExcelCoreGame » 16 janvier 2020, 21:55

Tu dois connaitre la taille de map ou le joueur se trouve j'imagine vu que tu la créé toi même, le nombre de case impossible à marcher dessus (mur, object, etc) et tu empêche de revenir sur une case déjà visité; avec tout ça tu sais combien de case disponible il reste normalement, ou se situe ton problème exactement?
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'300
Appréciations reçues : 288
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 16 janvier 2020, 22:56

Bonsoir,
voir schéma ci dessous :
Sans titre6.png
Sans titre6.png (1.87 Kio) Vu 557 fois
vert et bleu deux personnage, rouge "0" position de départ du personnage rouge.
Lancé de dés = 11.
Le personnage rouge commence son déplacement, jusqu'à 6, reste 5 à faire mais plus de possibilité, car les déplacements en diagonal sont interdits.
Pour le fait de ne pas repasser où il a marché, j'utilise un range et Union et je compare le futur déplacement avec ce range, si intersect alors "pas bon". Mais comment détecter le pas bon "total" ?
En écrivant ceci je me rend compte qu'après chaque déplacement d'une cellule je dois vérifier s'il en rste une sur les trois autres directions !

Merci !

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
E
ExcelCoreGame
Membre fidèle
Membre fidèle
Messages : 424
Appréciations reçues : 14
Inscrit le : 24 octobre 2017
Version d'Excel : 2007FR

Message par ExcelCoreGame » 17 janvier 2020, 00:08

Tu devrais travailler avec des Arrays/Tableaux que tu représentes graphiquement sur ta feuille excel, tu n'as pas fait ton Méga Bloks de cette façon pour faire bouger tes formes (je n'ai pas regardé le code de ce jeu)?C'est en général la façon de faire un tétris et un rpg en jeu vidéo

Sinon en travaillant avec un intersect, quand tu créé ta map tu sais combien de case il y a (soit le total), combien de zone sont inaccessible (noir) et combien de personnage tu as, soit car tu as des map pré-faites et tu connais de base tout cela ou si tu random tes maps, une simple boucle et en regardant soit si la case est vide ou la couleur tu peux le calculer

case possible = total - mur (noir) - personnages/objets/autres

Par la suite à chaque déplacement tu réduits donc ce total de 1, tant qu'il est >0 et que le joueur n'est pas bloqué alors c'est qu'il peut bouger

Oui suffit de regarder en -1/+1 sur la ligne et colonne de la case ou se trouve le joueur et si aucune n'est vide alors il ne peut plus se déplacer, c'est facile :)

Après comme toujours, cela dépend comment tu as construit ton jeu et tes variables, il te faudra modifier ton approche si tu ne peux pas savoir ces informations (nombre de case, nb mur, ennemis, ou se trouve exactement le joueur, etc)

Personnellement vu qu'on est sur excel je n'utilise pas d'Array car on a un support déjà présent pour noter en dur les informations mais c'est la même chose, mais du coup on créé déjà la map puis on affiche le résultat au joueur
Exemple1.png
j'utilise donc des boucles sur mes cases excel et voir ce qu'il y a dedans pour autoriser ou non un déplacement, afficher un monstre ou pas, idem si jamais le joueur loot, dans la case du coup j'y inscrit un code particulier

Dans un exemple simple une fois que le joueur à un peu avancé cela donnerait:
exemple2.png
Et du coup si le joueur quitte/reviens, il suffit de recréer graphiquement la zone d'excel "dynamique" soit ou en était le joueur pour reprendre la partie

Dans un Tétris c'est la même chose, la représentation que tu as dans le code dans un Array et savoir si c'est déjà occupé ou non pour savoir si la pièce peut descendre ou pas par exemple et la représentation graphique par la suite que le joueur voit.

Dans un RPG 2D c'est la même chose, la tile map que tu sauvegardes c'est juste le numéro d'identification de la chose dans chaque case, ce qui est minuscule à sauvegarder du coup

Après bien sur encore une fois, chacun fait comme et a ses propres affinités/style mais bon pense bien à ton jeu et ses fonctionnalités dans son ensemble car refaire tout un système à la fin car on ne peut pas ajouter des objets à la volée sur la carte quand le joueur tue un monstres et sauvegarder correctement tout cela c'est vraiment pas cool
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'300
Appréciations reçues : 288
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 19 janvier 2020, 11:55

Bonjour,

oui je travaille avec des tableaux : un tableau qui est une recopie du niveau au début de la partie "source", un tableau "Jeu" qui représente la partie en cours avec les modifications faites suite au différents événement du jeu, et la grille "feuille de jeu" qui est l'affichage pour le joueur, mais ce tableau n'existe pas c'est directement la feuille.

Pour empêcher un joueur de revenir sur ses pas lors de son tour de déplacement, j'utilise un Range qui est "l'addition" des cellules utilisée lors de la mise à jour de la feuille jeu, et du coup je me dois de faire un mixe entre ce trajet et le tableau "Jeu" pour connaître la position des différents objets, monstres ou joueurs.

Je pense y être parvenu, il me reste à optimiser le code car des cas particuliers peuvent se présenter :
lors d'un tour un joueur peut se déplacer et faire une action, ou bien faire l'inverse.
Mais s'il ne peut se déplacer car "il est coincé", il peut faire une action (combat avec un monstre) et du coup à l'issue de l'action il peut se déplacer...

Bref il faut que je remanie tout ceci pour ne pas avoir des "répétitions" d'information identiques ! :lol:

Après le "plus dur " je pense est le déplacement des monstres qui devraient aller "au plus cours" pour aller au contact des joueurs.
D'où mon étude de l' A* !

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'751
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 19 janvier 2020, 12:15

Salut LouReed,

as-tu prévu le cas particulier de l'emm... de Curulis qui fait exprès de tomber sur des bugs? :lole:

Bon dimanche ! :)

8-)
A+
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'300
Appréciations reçues : 288
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 19 janvier 2020, 12:20

Oui je crois c'est écrit (ou sera écrit) dans les explications :
Jeu déconseillé à curulis57 avec un i, sans tréma sur le i ! :lol:

Sinon j'ai mis un "On Error" pour finir intempestivement la partie en cas de bug ! :lol:
Ou bien avec Resume Next pour que cela continue de tourner !

Et pour éviter les gros blocage je peux mettre un DoEvents pour redonner la main au joueur continuellement, comme cela : Alt+F11 et arrêt du code ! :mrgreen:

Bon la bataille Navale prends un peu de retard mais je suis assez content de mon nouveau code !

@ bientôt

LouReeD
Modifié en dernier par LouReeD le 21 janvier 2020, 13:40, modifié 1 fois.
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
E
ExcelCoreGame
Membre fidèle
Membre fidèle
Messages : 424
Appréciations reçues : 14
Inscrit le : 24 octobre 2017
Version d'Excel : 2007FR

Message par ExcelCoreGame » 19 janvier 2020, 15:56

Je pense que d'utiliser ton Range qui additionne les cases est inutile vu que tu as déjà ton "Tableau Jeu" qui le fait pour toi

Si tu notifies bien le passage du joueur sur les cases dans ce tableau alors tu sais les cases disponibles
Quand ton joueur cliques en sur ta sheets FEUILLE_JEU tu en récupères la Target et directement tu peux tester dans ton "Tableau Jeu" en (Target.Row,Target.Column) si c'est libre ou pas.

Et dans le cas ou c'est libre, il faut aussi que le joueur puisse y aller, ce que ton A* va déterminer :)

Je pense y être parvenu, il me reste à optimiser le code car des cas particuliers peuvent se présenter :
lors d'un tour un joueur peut se déplacer et faire une action, ou bien faire l'inverse.
Mais s'il ne peut se déplacer car "il est coincé", il peut faire une action (combat avec un monstre) et du coup à l'issue de l'action il peut se déplacer...
Tu dois avoir un bouton "fin/sortir de la zone" pour quitter/retourner en ville à tout moment non?cela règle le problème je dirais

Après si tu veux faire pop un message automatique quand le joueur est bloqué (ce qui à l'air d'être ton cas vu ce que tu dis), cela sera juste à toi de définir les conditions de ce que tu veux faire dans ton jeu ^^
- Plus de déplacements possible
- Plus d'action possible
- Quête finie
- Quête impossible à finir (le joueur à rater un objectif, il a détruit un élément qu'il ne fallait pas, temps impartis finis, etc)
- Mort

Cela dépend de ce que tu as en tête :)
Car comme tu dis cela peut donner des situations particulières, s' il y a un coffre et un monstre cote à cote puis le joueur vient pour ouvrir ce coffre
Exemple_mouv.png
Exemple_mouv.png (5.23 Kio) Vu 521 fois
1. Si de base le joueur fait ce qu'il veut donc un bouton pour sortir toujours visible: tu as rien à faire
2. Si le joueur ne peut sortir que quand il ne peut plus bouger alors il fait ce qu'il veut: ouvrir le coffre et/ou combattre le monstre
3. Si le joueur ne peut sortir quand il ne peut plus bouger et plus aucune action possible alors cela peut avoir un impact dans ce cas la (ce qui peut aussi être un "atout" de ton jeu/aspect tactique) car imaginons j'ai eu du cul et il me reste 10 points de vie mais je sais qu'il y a des fortes chance que le monstre va au moins me donner un coup sans que je bloque et donc je vais mourir:
- Soit la mort est peu pénalisante et je vais ouvrir le coffre puis je meurs pour pouvoir sortir
- Soit la mort est très pénalisante et c'est donc un choix tactique du joueur (et aussi un retour de feu pour ceux qui jouent trop vite ou si le joueur ne fait pas gaf et va chercher directement le coffre sans regarder ce qu'il y a à coté héhéhéhé)
1. je tente le coup car dans le coffre y a peut être une potion de vie et une épée et idem du loot/xp sur le monstre
2. je me bloque moi même contre un mur et du coup plus de mouvement ni d'action possible (à noter que si tu es dans une configuration comme celle-ci, le joueur pourras donc se bloquer lui même pour sortir de la zone et esquiver des pièges par exemple...)

Vu que tu pars sur le fait qu'on ne peut pas passer 2 fois sur la même case, réfléchis bien à ton level design ^^
Sinon j'ai mis un "On Error" pour finir intempestivement la partie en cas de bug ! :lol:
Ou bien avec Resume Next pour que cela continue de tourner !
Je dirais notifies au moins que le jeu à eu une erreur même si cela continue de jouer, histoire que le joueur sache qu'il y a eu un comportement bizarre ^^
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'300
Appréciations reçues : 288
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 19 janvier 2020, 17:45

C'est vrai ça pour quoi la gymnastique des deux "zones" ? Mais alors après pour effacer les traces de pas du joueur dans le tableau, faut faire une boucle sur les index et supprimer cette trace ? Oui merci, c'est une bonne idée !

Par contre il faut que je regarde mieux la règle du jeu d'origine pour savoir si le joueur à le droit de s'arrêter quand il veut lors de son déplacement : en effet, si dans la règle il n'a pas le droit de passer deux fois sur la même case lors de son déplacement alors autant il n'a pas le droit de s'arrêter quand il veut et doit tant qu'il le peut faire le déplacement prévu (sauf s'il se retrouve coincé !) Mais bon ça me semble étrange...

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
E
ExcelCoreGame
Membre fidèle
Membre fidèle
Messages : 424
Appréciations reçues : 14
Inscrit le : 24 octobre 2017
Version d'Excel : 2007FR

Message par ExcelCoreGame » 19 janvier 2020, 18:54

Il suffit dans le tableau/zone excel de faire un marquage spécial du genre "ZoneVisitée" quand ton joueur avance et avec une simple boucle si le contenu vaut cette valeur alors tu effaces le contenu et voila, toute trace du joueur effacée
Le plus chiant c'est de s’approprier le A* je pense, j'y jetterais un coup d'oeil aussi tient, ça me sera forcément utile dans un jeu un jour :)

Aucune idée des règles de D&D de base, mais je pense que tu peux aller ou tu veux surtout que c'est du tour par tour donc un archer peut surement reculer puis attaquer à chaque tour pour pas que la cible le rattrape
Moi je dis, construit le jeu comme tu en as envie avec tes règles et surtout en rajoutant tout ce que tu trouves cool !

Après vu que c'est une adaptation, fait ce que tu as envie ou du moins ce qui semble le mieux pour le joueur ou faisable facilement sur excel ^^ (du temps réel avec des monstres pourquoi pas mais gérer les interactions du joueur avec des DoEvents je sais pas ce que ça vaut par exemple aie aie aie)
E
ExcelCoreGame
Membre fidèle
Membre fidèle
Messages : 424
Appréciations reçues : 14
Inscrit le : 24 octobre 2017
Version d'Excel : 2007FR

Message par ExcelCoreGame » 21 janvier 2020, 12:21

Hop une petite map rapide et limitée sans utilisée une feuille tampon pour ceux qui ne savent pas trop par ou commencer
il y a 2 map sauvegardées mais on peut faire ce qu'on veut dans les cases une fois que vous aurez analysé le code

On se déplace avec les touches QSDZ

on peut même imaginer un jeu ou il faut passer par toute les cases pour gagner voir même avec des cases "waypoints" à passer dans un ordre précis donc pour un aspect tactique: àméditer pour un petit jeu comme ça rapide ^^

Edit: un pti screen rapidos du résultat
mouvement.png
mouvement.png (20.61 Kio) Vu 461 fois
test mouvement.xlsm
(34.7 Kio) Téléchargé 17 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message