Posté le 20/10/2015 13:04
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 226 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 20/10/2015 13:08 | #
Hmm, il manque une problématique, une question : en quoi pouvons-nous t'aider ?
Pour la structure de ton programme, je te conseille quelque chose comme ceci (indépendamment des sous-programmes) :
... // Renvoie au différents labels : 1, 2, ...
Lbl 1 // Menu d'options
... // Configuration
Goto 0
Lbl 2 // Boucle principale : map
...
If K=47 // Pour revenir au menu
Goto 0
IfEnd
...
etc.
L'idée est de gérer des morceaux de programme comme des fonctions. Ça demande un peu d'entraînement mais c'est très souple, et ça évite d'utiliser trop de sous-programmes.
Citer : Posté le 20/10/2015 13:58 | #
Oui je vois ce que tu veux dire, mais le problème c'est que étant donné mon niveau de programmation je vais rapidement me retrouver avec:
Lbl 124...
Mais j'avais aussi l'idée de faire 2 programme un avec le moteur du jeu et l'autre avec les maps pense tu que c'est une bonne idée sinon autre ?
Et j'ai eu aussi un autre problème, en mode texte je n'arrive pas à créer de boîte de collision pour mes décors don si tu une solution.
merci de m'avoir répondu
Citer : Posté le 20/10/2015 14:01 | #
Oui je vois ce que tu veux dire, mais le problème c'est que étant donné mon niveau de programmation je vais rapidement me retrouver avec:
Lbl 124...
Aucune chance, on ne peut assigner que des lettres ou des chiffres à des labels !
Pour éviter ça, il faut bien penser que chaque label a le rôle d'une fonction : en d'autre termes, le rôle d'un mini programme.
Mais j'avais aussi l'idée de faire 2 programme un avec le moteur du jeu et l'autre avec les maps pense tu que c'est une bonne idée sinon autre ?
Je ne vois pas ce que tu voudrais mettre dans le programme avec les maps ? S'il s'agit juste d'un programme qui charge une map dans une matrice, alors oui mieux vaut séparer pour gagner en lisibilité dans le programme principal.
Et j'ai eu aussi un autre problème, en mode texte je n'arrive pas à créer de boîte de collision pour mes décors don si tu une solution.
Utilise une matrice, c'est d'autant plus pratique avec le mode texte (la matrice fait 7 par 21, c'est rapidement réglé)
Citer : Posté le 20/10/2015 14:39 | #
merci pour ta réponse, je vais écrire le programme comme je peux et te recontacte plus tard
Ajouté le 20/10/2015 à 20:46 :
J'ai juste une dernière question avant de me mettre à la programmation de ce RPG (oui encore une )
Comment feriez vous pour l'affichage de maps parce que je compte en mettre un certain nombre et la seule solution que j'ai c'est d'afficher la map avec des locate sois 7 par map et d'enregistrer chaque élément à sa place dans une matrice 21x7 pour les boîtes de collisions des objets.
Ce qui par map fait un peu beaucoup alors si vous avez une autre solution n'hésitez pas à m'en faire part
merci d'avance et bonne soirée
Citer : Posté le 20/10/2015 21:17 | #
Pendant l'exécution du programme, il est en effet judicieux d'utiliser une matrice : mais seulement pour la map qui est en cours d'affichage. Ça ne fait guère que 1764 octets, ce qui reste tout à fait raisonnable. En général, on se contentera d'une seule matrice pour la map courante, que l'on modifiera quand on changera de map.
Pour le stockage, il faut être inventif ! Généralement, on a un programme qui charge la map dans la matrice a partir des données qui sont inscrites en brut dans le code. Le but est alors de les faire tenir dans le plus petit espace mémoire possible histoire de pouvoir écrire un maximum de maps en utilisant un minimum de RAM !
Citer : Posté le 21/10/2015 23:08 | #
Merci pour ton conseil, mais avant de faire les map de mon jeu j'ai décidé de revoir le moteur de combat qui n'est pas complètement au point par rapport à mes compétences, j'ai décidé de faire un mode de combat en tour par tour pour privilégier la stratégie... Et aussi parce que c'est plus simple à programmer oui je l'avoue
Le problème c'est que j'ai beaucoup de variables qui sont enregistrée dans une matrice (vie, attaque, mana, défense, armure, xp...) et au lancement du programme de combat je les enregistre dans des "lettre" pour alléger le code au niveau des calculs. Jusque là aucun problème mais on y arrive: voilà je dois maintenant enregistrer mes variables dans les lettres et je me retrouve avec un code très répétitif
Mat A[1,2]→B
Mat A[2,1]→C
...
Et je me demandais si quelqu'un n'aurai pas une idée pour raccourcir ce code, car j'ai déjà une idée pour ce qui est de choisir la matrice mais pour la mettre dans la bonne variable je n'en ai aucune idée. J'espère que ma question est claire, si elle ne l'ai pas dites le moi j'essaierai de préciser.
Sur ce bonne soirée à tous.
Citer : Posté le 22/10/2015 09:41 | #
(Pour le code, il y a une balise dédiée : )
En général c'est plus intéressant de les stocker directement dans les variables. Si tu utilises une liste ou une matrice tu ne peux pas tout charger d'un coup.
J'ai essayé une affection de type List 1→A~C mais ça ne fonctionne pas. Du coup, aucune chance pour les matrices...
Citer : Posté le 25/10/2015 14:19 | #
Comme je l'ai dit dans mon post précédent, je suis en train de revoir mon moteur de combat et au passage je suis obligé de créer les différentes armes et armures du jeu pour faire les calculs de dégâts. Seulement je voudrai que le joueur puisse équiper l'arme de son choix même si ce n'est pas la meilleure. J'ai une solution pour équiper automatiquement la meilleur arme mais si vous avez une solution pour que le joueur puisse prendre celle de son choix je suis preneur
PS: Désolé pour le code il me semble que je l'ai fait mais visiblement ça n'a pas marché
Citer : Posté le 25/10/2015 14:28 | #
Eh bien, il suffit d'afficher la liste des armes que le joueur possède et lui permettre de choisir non ?
Cela dit, s'il n'y a pas d'effets spéciaux intéressants tu peux équiper par défaut la meilleure arme, ça ne gênera personne
Citer : Posté le 25/10/2015 16:59 | #
Pour déterminer quelle arme est équipée par le joueur, j'ai attribué à chaque arme un nombre. Derrière j'ai une liste (une valeur pour chaque arme) si la valeur est égale à 1 l'arme est équipée si la valeur est égale 0 l'arme n'est pas équipée. Du coup je me retrouve avec un code hyper répétitif et très long comme j'ai à le faire 11 fois:
Ans=72⇒1→List 3
Ans=62⇒5→Dim List 3
Ans=62⇒1→List 3[2
...
Si vous avez une solution pour le raccourcir, je réfléchit à une solution depuis un moment mais je ne trouve pas
PS: Désolé si je suis très embêtant pour vous mais je débute dans la programmation et c'est mon premier projet donc excusez moi si je vous dérange
Citer : Posté le 25/10/2015 17:20 | #
Si il ne peut avoir qu'une seule arme sur lui, tu peux virer tes listes et dire 0 > pas équipée et * > arme nº*
Citer : Posté le 25/10/2015 17:21 | #
Je veux bien t'aider, mais je pense que tu t'es trompé ici :
Est-ce List 3[1] ?
Citer : Posté le 25/10/2015 17:28 | #
Pour déterminer quelle arme est équipée par le joueur, j'ai attribué à chaque arme un nombre. Derrière j'ai une liste (une valeur pour chaque arme) si la valeur est égale à 1 l'arme est équipée si la valeur est égale 0 l'arme n'est pas équipée.
D'après ta phrase, on ne peut équiper qu'une seule arme... bon, ben tu enregistres l'id de cette arme dans une variable. Pourquoi s'embêter avec une liste qui ne contient finalement qu'une information ? (la seconde, le nombre total d'armes, étant inutile ici)
Citer : Posté le 25/10/2015 18:06 | #
Effectivement je n'avais pas pensée à cette solution qui est pourtant toute simple je suis vraiment nul
Oui c'est bien cela petite erreur de ma part désolé
Ajouté le 27/10/2015 à 22:01 :
Je suis toujours en train de travailler sur mes armes/armures et j'ai rencontré un autre problème: les armes modifient les caractéristique du personnage donc pour modifier la valeur dans la matrice je n'ai pas de problème mais c'est pour changer d'arme: les valeurs de la matrice sont déjà modifiée donc cela modifiera les valeurs actuelles et non pas les valeurs de départ comme je le souhaiterai. Je pensai donc enregistrer les valeurs de base dans une liste ou dans une colonne de la matrice mais je suis sûr qu'il y a une solution plus simple.
Si l'un d'entre vous à une idée je suis preneur.
Citer : Posté le 27/10/2015 22:10 | #
En général, on préfère enregistrer la force ou la vitalité, qui sont les stats de base, indépendamment de l'attaque ou la défense, qui prennent en compte les équipements
En l'occurrence, je te conseille d'avoir quatre valeurs : les stats pures et celles avec équipements. Lorsque tu changes d'équipement, tu recalcules les secondes à partir des premières et quand tu modifies les stats de base tu recalcules tout.
De cette manière, tu peut facilement accéder à toutes les valeurs. Une autre manière, peut-être mieux à la réflexion, serait de calculer l'attaque totale et de la stocker dans une variable en début de combat ou autres occasions pendant lesquelles tu en aurais besoin et de ne conserver que les stats pures dans les listes/matrices.
Citer : Posté le 27/10/2015 22:48 | #
Je vois ce que tu veux dire (du moins je pense). Donc tu suggère d'avoir deux colonnes de ma matrice dédiées à mon personnage: une pour les stats de base et une pour les stats +bonus/malus (si j'ai bien compris)
Par contre pour la suggestion vis à vis d'enregistrer l'attaque totale dans une liste/matrice je ne pense pas le faire car ce sont des algorithmes très simple (comme tu dois t'en douter) et par conséquent ils ne gênent pas au niveau de la fluidité du du combat et consomment (je pense) moins de mémoire que de les enregistres dans une liste néanmoins je garde ton conseil à l'esprit car je suis sûr qu'il est valable pour des programmes plus complexes mais comme pour ma part c'est un petit jeu en mode texte je pense que ce n'est pas forcément utile (après je me trompe peut-être c'est à voir) en tout cas merci pour ton conseil.
Ajouté le 02/11/2015 à 22:41 :
Bon maintenant que mon moteur de combat a bien avancé et que je ne vais pas tarder à attaquer le moteur du jeu plus que quelques trucs a ajouter et 2 ou 3 petites erreurs par ci par là j'ai commencé a penser aux maps et je rencontre un petit problème : j'ai une matrice 21*7 et plutôt que d'en plus tout faire avec la matrice je voudrai pas mettre des locate pour afficher les décors, à la je voudrai avoir un code du genre:
Avec X et Y qui ne désignent pas une valeur mais toutes les cases de la matrice donc si une valeur de la matrice est égale à 2 alors à cette position la afficher un symbole et pareil pour les autre cases qui sont égalés à 2. Donc je ne sais pas s'il existe une commande pour faire ce que je veux.
En tout cas merci de votre aide jusqu'à maintenant cela me fait très plaisir et me motive beaucoup.
Citer : Posté le 03/11/2015 07:27 | #
Ah, là t'es obligé de boucler dans la matrice. Y'a pas de fonction qui puisse accélérer le processus…
Citer : Posté le 07/11/2015 16:01 | #
Ben, en termes d'algorithme, il faut boucler... soit c'est toi, soit c'est l'interpréteur et en l'occurrence ça va être toi.
Après je ne sais pas ce qu'il en est de la vitesse mais si tu veux simplifier le code pour quand tu auras beaucoup de tiles, tu peux faire quelque chose comme :
For 1→Y To 7
For 1→X To 21
Locate X,Y,StrMid(Str 1,Mat A[Y,X],1)
Next:Next
Citer : Posté le 09/11/2015 22:27 | #
Je suis sur la fin de mon moteur de combat en ce moment et si e joueur sort victorieux du combat il drop un des 8 item disponibles avec différent taux de drop selon l'item. Et le problème c'est que mon code devrai marcher mais pour une raison obscure ne fonctionne pas bien.
1≤E≤20⇒List 2[1]+1→List 2[1]
1≤E≤20⇒Locate 5,5,"+1 Potion 20PV"
21≤E≤35⇒List 2[2]+1→List 2[2]
21≤E≤35⇒Locate 5,5,"+1 Potion 20PV"
...
Pour la liste 2 chaque valeur détermine de quel objet il s'agit et la valeur représente la quantité
le problème est que même si E est compris entre 21 et 35 il va considérer que la condition de lignes 2 et 3 est remplie alors qu'elle ne l'est pas.
Si quelqu'un peut m'expliquer mon erreur car je ne comprend vraiment pas.
Citer : Posté le 09/11/2015 22:51 | #
Tu n'as pas le droit d'encadrer comme ça un nombre
Il faut ajouter le mot-clé "And" (Optn, F6, F6, F5, F1) entre les deux : Si E est supérieur à 1 et si E est inférieur à 20
1≤E And E≤20⇒List 2[1]+1→List 2[1]
1≤E And E≤20⇒Locate 5,5,"+1 Potion 20PV"
21≤E And E≤35⇒List 2[2]+1→List 2[2]
21≤E And E≤35⇒Locate 5,5,"+1 Potion 20PV"
...