Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » RPG en mode texte
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

RPG en mode texte

Posté le 20/10/2015 13:04

Bonjour à tous,

Mon objectif est de créer un genre de moteur de jeu afin d'améliorer au maximum mes compétences en basic et quoi de mieux pour cela que de créer un petit RPG tout simple.

Donc si quelqu'un est intéressé par ce projet n'hésitez pas a poser vos questions et voici l'avancement du jeu:

Menus
   1%

Maps
   50%

moteur du jeu
   25%



Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

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

RanInt#(1,100)→E
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"
...

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 10/11/2015 18:13 | #


Gdubol a écrit :
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.

Pour la petite explication, l'interpréteur va substituer le résultat comme il traiterait l'associativité de l'addition : A + B + C est compris comme étant (A + B) + C.
Ici, il en va de même. La condition est comprise comme (1 ≤ E) ≤ 20, et il se trouve que (1 ≤ E) est une expression booléenne dont la valeur numérique est définie comme 1 si la condition est remplie et 0 sinon.
Dans les deux cas, le tests global est validé, d'où les problèmes que tu as rencontrés.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 21/11/2015 17:03 | #


grâce à votre aide j'ai presque fini mon moteur de combat et je voulais procéder à quelques modifications niveau listes-matrices: je voulais transférer certaines de mes valeurs dans les matrice afin que le programme soit plus compréhensible, chose que j'ai donc faite mais maintenant il me faut changer les valeurs dans les programmes et pour cela il faudrait que je visualise tout le programme. Et donc est ce qu'il ne serai pas possible de l'ouvrir avec notepad++ par exemple

Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 21/11/2015 17:15 | #


Tu peux l'ouvrir avec FA-124. Notepad ? Non. C'est du bytecode.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 01/12/2015 19:06 | #


Bon à force de bosser sur ce RPG je me rend compte qu'il y a encore certaines choses que je ne comprend pas ou que je ne maitrise pas (et aussi parce que mon code n'est probablement pas au point). Je vais donc faire une pause au niveau de ce projet ci, je suis entrain de faire une série de 3 mini jeux que je vais probablement publier dans la semaine (je pense qu'il vaut mieux commencer petit avant de faire de gros projets).
En espérant que vous pourrez m'aider à les améliorer...


Et afin de les finaliser j'aurai besoin de faire une sorte de chrono qui s'exécute en même temps que le programme de jeu. Aussi je me demandai s'il était possible d’exécuter 2 programmes en même temps, 2 lignes en même temps (même si je pense que ce n'est pas possible...) ou si vous avez une autre solution..
Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 05/12/2015 16:16 | #


Non, ce n'est pas possible. Un chrono ce n'est techniquement pas réalisable à moins de compter régulièrement à l'intérieur de chaque boucle... bref, c'est irrégulier si ça fonctionne.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 05/12/2015 16:53 | #


Le seul programme Basic, qui à ma connaissance, arrive à faire une gestion correcte du temps réel, c'est l'excellent StarCraft de Totoyo. Mais c'est hyper complexe à mettre en place, et lui-même n'a pas fini son jeu…

http://www.planet-casio.com/Fr/forums/topic9371-1-Starcraft-2-alpha-1--Graph-35+USB-75-85-95---Basic-.html
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 29/06/2016 14:33 | #


Bon après de nombreux mois j'ai remis le projet sur la table mais le but plus de créer un moteur de jeu, je donnerai plus de détails si certains sont intéressés mais le but est de partir d'un truc hyper simple et de l'améliorer au fur et a mesure pour voir jusqu’où je peux aller.
le problème est que j'ai réussi a motiver un ami pour faire ce projet mais c'est assez compliquer de travailler dessus a deux donc je me demandais si vous ne connaissez pas une forge libre par hasard (je ne peut pas utiliser la forge du site mon projet est trop ridicule donc si vous avez une idée n'hésitez pas à m'en faire part)
Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.
Hackcell Hors ligne Maître du Puzzle Points: 1532 Défis: 11 Message

Citer : Posté le 29/06/2016 14:40 | #


Je pense que ça ne dérangera pas si tu utilise la forge Casio, elle est là pour ça, non?
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 29/06/2016 14:55 | #


Tu peux utiliser la forge de Planète Casio pour ton projet, elle est là pour ça. Cependant en Basic ça va être dommage (juste les fichiers g1m/g2m). Tu pourrais peut-être utiliser le Blang d'Intelligide ? Ça serait intéressant
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 29/06/2016 16:28 | #


Je viens de jeter un coup d'oeil au projet mais avec mon talent naturel de compréhension je n'ai pas du tout compris de quoi il s'agissait

@Lephenixnoir je pense que de toute façon se sera du basic puisque je débute tout juste dans la prog donc... pour te donner un aperçu de mon niveau je ne connais que le basic comme langage (si on peut appeler ça comme ça )
Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 29/06/2016 16:34 | #


Intelligide bosse sur un logiciel appelé Blang qui transforme du « texte Basic » de l'ordinateur vers un fichier g1m. En gros ça te permettrait d'écrire du texte sur l'ordi, et nous on pourrait voir le code en allant sur le GitLab !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 29/06/2016 17:01 | #


effectivement ça peut être plus intéressant de travailler comme ça et le logiciel est fonctionnel ? si oui un lien de téléchargement ?
Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 29/06/2016 17:03 | #


Faut voir où en est Intelligide. Je crois que le code est sur le GitLab justement
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 30/06/2016 17:14 | #


je voulais vous demander votre avis sur le bout de programme qui me permet de dessiner les maps

[green]//savoir si on trace une ligne ou un point[/green]
While Z=2
0→A
0→D
Lbl 1
Do
D+1→D
A+1→A
List 25[A]=10000⇒Return
LpWhile List 25[A]≠1000
0→E
Dsz D

[green]//si on trace un point[/green]
While D=1
1→Mat E[List 25[A-1],List 26[A-1]]
0→D
WhileEnd

[green]//si on trace une ligne[/green]
While D=2
If List 25[A-1]=List 25[A-2]
Then List 25[A-1]→E:
26→B
Else List 26[A-1]→F:
25→B
IfEnd
For List B[A-2]→C To List B[A-1]
If B=26
Then C→F
Else C→E
IfEnd
1→Mat E[E,F]
Next
0→D
WhileEnd

0→Z
WhileEnd

[green]//dessiner en fonction des valeurs de la matrice[/green]
For 1→F To 7
For 1→E To 21
Mat E[E,F]=1⇒Locate E,F,"O"
Mat E[E,F]=2⇒Locate E,F,"θ"
Next
Next
Goto 1


Le problème est que le code est très lent mais il est pratique car il me permet de dessiner ce que je veux et voir de faire un éditeur de maps, donc si qqn a une idée pour augment sa rapidité je prend
Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 01/07/2016 18:08 | #


On en parle ici ça sera mieux
Alors sur ton algo il y a un tas de trucs qui ne servent à rien :ent aux yeux
While D=1
1→Mat E[List 25[A-1],List 26[A-1]]
0→D
WhileEnd
La boucle ne sert à rien, tu mets forcement D à 0. C'est une condition If qu'il faut utliser.

Dsz D
Attention ce truc et un piège. Si D s'annule, la prochaine ligne du programme n'est pas executée (il faut le savoir )

//si on trace une ligne
While D=2
...
0->D
pareil tu confonds While et If
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 01/07/2016 22:49 | #


Je comprend, en fait je ne pense pas que ce soit très conventionnel mais au niveau de la lecture du code je trouve que c'est plus lisible avec une boucle While c'est tout
après j'avais vu pour le Dsz mais comme D n'est jamais égal à 0 normalement c'est bon

Après c'est le reste du code (surtout le While D=2) je n'arrive pas à faire un truc rapide et fonctionnel mais bon à force de faire des essais je vais bien trouver une solution qui fonctionne

En tout cas merci de ta réponse ça fait plaisir
Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 02/07/2016 11:45 | #


Do
D+1→D
A+1→A
List 25[A]=10000⇒Return
LpWhile List 25[A]≠1000


Je ne comprends pas très bien le but de cette boucle.
Aussi y a-t-il des optimisations possibles rien qu'ici, je te montre ce que je ferais :

Do
Isz D
Isz A
// Pas de problème si D et A ne retombent pas sur 0
List 25[A=E4⇒Return
LpWhile List 25[A≠E3


Je n'ai pas la prétention d'avoir optimisé au mieux ce bout de code, mais il y a des petits réflexes à acquérir !
Autrement, NineStar a déjà soulevé le problème de confusion entre while et if. Cela n'est pas du tout la même chose !

//si on trace un point
While D=1
1→Mat E[List 25[A-1],List 26[A-1]]
0→D
WhileEnd

Dans ta matrice, si je comprends bien, 1 donne "O" et 2 donne "θ". Tu peux réécrire ce bout de code ainsi :

If D=1
Then 1→Mat E[List 25[A-1],List 26[A-1
Ifend
//Mais ce n'est pas tout, voici en une ligne :
D=1⇒1→Mat E[List25[A-1],List 26[A-1

ça semble plus propre, non ? Tu vas pas me dire que c'est mieux en While ? D'autant plus que dans ta boucle While, tu effectuais deux tâches : tu assignais une valeur à une case (sous vérification d'une condition) ET tu assignais à D la valeur 0 (tâche inutile et donc chronophage). Ici, tu n'en effectues plus qu'une.

//si on trace une ligne
While D=2
If List 25[A-1]=List 25[A-2]
Then[b] List 25[A-1]→E:[/b]
26→B
Else [b]List 26[A-1]→F:[/b] // ça sert à rien d'attribuer à E et à F des valeurs si tu les changes juste après  ^^
25→B
IfEnd
For List B[A-2]→C To List B[A-1]
If B=26
Then [b]C→F[/b]
Else [b]C→E[/b] // F et E contenaient respectivement List 26 et 25 [A-1] !
IfEnd
1→Mat E[E,F]
Next
0→D // NineStar a déjà fait la remarque, du coup.
WhileEnd


Si ton code est lent, c'est en partie parce que tu lui fais faire des tâches supplémentaires. Pour aller aux States depuis la France, tu passes par l'Océan Atlantique ou l'Océan Pacifique ?
Je te montre ce que je ferais pour optimiser ce code.

If D=2
Then 25+(List 25[A-1=List 25[A-2→B
//Ici, (List 25[A-1=List 25[A-2]) est une valeur booléenne qui prend la valeur 1 si vraie et 0 si fausse.
For List B[A-2→C To List B[A-1 //j'efface les parenthèses et crochets inutiles
If B=26
Then C→F
Else C→E
IfEnd
1→Mat E[E,F
Next
IfEnd


Je me doute que ce n'est pas évident pour toi, mais plus tu prêteras attention à cela, plus tu seras en mesure de réutiliser ces petites optimisations qui pourront te faire gagner de la place et aussi un peu de vitesse. Tu peux comparer les codes optimisé et non optimisé en terme de vitesse, il devrait y avoir une différence J'espère t'avoir aidé, en tous les cas.
Bonne journée à toi, preux aventurier du Basic !
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 10/07/2016 17:16 | #


merci beaucoup pour ton aide je n'y serai jamais arrivé seul je pense
En tout cas il y a effectivement une énorme différence au niveau vitesse et taille du programme.
Il faut vraiment que j'apprenne à faire ce genre d'optimisation et amélioration du code.

En tout cas encore merci et bonne chance pour ton projet de RPG en basic ça a l'air absolument énorme
Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 10/07/2016 18:48 | #


Ce genre de petites astuces s’acquièrent avec la pratique ! N'hésite pas à lire tous les cours sur le basic casio du forum !
Regarde donc ! Super tuto

J'y ai appris beaucoup de choses, il y a certainement une quantité importante de fonctions dont tu n'as peut-être jamais entendu parler, même !

G(beaucoup)dubol a écrit :
En tout cas encore merci et bonne chance pour ton projet de RPG en basic ça a l'air absolument énorme


Oh, merci beaucoup ! En ce moment, j'avance pas mal, je viens tout juste de produire la boîte de dialogue !
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Gdubol Hors ligne Membre Points: 160 Défis: 2 Message

Citer : Posté le 11/07/2016 10:34 | #


C'est effectivement ce que je vais faire, pour le tuto je l'avais déjà vu mais c'était il y a quelque mois, il y a des choses que j'ai oubliées ou que je n'arrive pas à mettre en pratique dans mes programmes donc je pense que ça ne pourra être que bénéfique d'y refaire un tour
En tout cas merci encore pour ton aide
Je n'ai pas échoué. J'ai simplement trouvé 10000 solutions qui ne fonctionnent pas.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 78 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