Posté le 10/09/2021 18:32
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 241 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 26/09/2021 17:53 | #
une variable se définit PARTOUT dans le code
il faut juste donner une valeur
Citer : Posté le 26/09/2021 21:05 | #
Tu peux changer la valeur d'une variable quand tu veux, y compris plusieurs fois d'affilée, à des endroits différents, etc.
Non seulement tu le peux, mais en plus c'est fondamental parce que si tu ne pouvais pas tu serais très limité dans les calculs/algorithmes qu'il est possible de programmer.
Citer : Posté le 27/09/2021 14:54 | #
Voici ce que j'ai codé pour le moment :
#Password: <no password>
1 -> J
"Choix du nombre de joueurs (1=1 Joueur, 2=2 Joueurs)"? -> J
1 -> D
"Choix du niveau de difficulté (1=Facile, 2=Moyen, 3=Difficile)"? -> D
D = 1 => RanInt#(1, 50)
0 -> C
Do
"Vous devez trouver le nombre mystère comprisentre 1 et 50"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
ClrText
"Bravo vous avez trouvéle nombre mystère en coups"
Locate 3, 3, C
D = 2 => RanInt#(1, 100)
0 -> C
Do
"Vous devez trouver le nombre mystère comprisentre 1 et 100"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
ClrText
"Bravo vous avez trouvéle nombre mystère en coups"
Locate 3, 3, C
Me serai-je trompé dans les valeurs à attribuer aux variable J et D ? Et si oui, quelles valeurs aurai-je du leur attribuer ? si je demande ça, c'est tout simplement car j'ai beau avoir codé ça comme indiqué ci-dessus, il me met toujours le texte du niveau facile avant de me mettre celui du niveau moyen quand je joue au niveau moyen...
Citer : Posté le 27/09/2021 15:31 | #
#Password: <no password>
1 -> J
"Choix du nombre de joueurs (1=1 Joueur, 2=2 Joueurs)"? -> J
1 -> D
"Choix du niveau de difficulté (1=Facile, 2=Moyen, 3=Difficile)"? -> D
D = 1 => RanInt#(1, 50)->N
D = 2 => RanInt#(1, 100)->N
D = 3 => RanInt#(1, 200)->N
0 -> C
Do
"Vous devez trouver le nombre mystère compris entre 1 et 50"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
ClrText
"Bravo vous avez trouvé le nombre mystère en coups"
Locate 3, 3, C
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 27/09/2021 15:39 | #
J'ai fait comme tu m'as indiqué, Tituya, et ça passe toujours par le mode facile avant le mode moyen...
Citer : Posté le 27/09/2021 15:46 | #
Affiche N et tu verras qu'il dépend bien de ton mode.
Le seul truc qui n'est pas modifié est l'intervalle que tu affiches. Et ça je te laisse le gérer je vais pas tout faire à ta place...
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 27/09/2021 18:19 | #
Comment puis-je faire pour que le texte ET la variable se limitent au niveau de difficulté sélectionné sans qu'ils ne continuent au niveau suivant ni qu'ils ne démarrent depuis le niveau de difficulté précédent ? (ex. : niveau facile uniquement, niveau moyen uniquement ou niveau difficile uniquement.) pour vous aider, voici ce que j'ai codé jusqu'à maintenant selon vos conseils :
#Password: <no password>
1 -> J
"Choix du nombre de joueurs (1=1 Joueur, 2=2 Joueurs)"? -> J
1 -> D
"Choix du niveau de difficulté (1=Facile, 2=Moyen, 3=Difficile)"? -> D
D = 1 => RanInt#(1, 50) -> N
D = 2 => RanInt#(1, 100) -> N
D = 3 => RanInt#(1, 200) -> N
0 -> C
Do
"Vous devez trouver le nombre mystère comprisentre 1 et 50"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
ClrText
"Bravo vous avez trouvéle nombre mystère en coups"
Locate 3, 3, C
RanInt#(1, 100)
0 -> C
Do
"Vous devez trouver le nombre mystère comprisentre 1 et 100"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
ClrText
"Bravo vous avez trouvéle nombre mystère en coups"
Locate 3, 3, C
En espérant que cela puisse vous aider à y voir plus clair et que vous vous y retrouverez, je me déconnecte pour raisons personnelles.
Ajouté le 29/09/2021 à 17:41 :
Alors, vous avez trouvé ?
Citer : Posté le 30/09/2021 13:24 | #
Bonjour Sniperking, je remets la réponse de Dark Storm.
Les gens te répondrons si :
– ils ont le temps de te répondre
– ils comprennent la question
– ont une idée de réponse
– ont envie d'y répondre
Pour ma part, je n'ai pas compris ta question.
Je pense surtout que tu n'as pas encore bien compris la logique du Basic Casio et que tu exposes mal tes difficultés avec ton projet. Une relecture des trois premières parties du tutoriel ("les bases, les conditions et le jeu du + ou -) me semble pertinent : https://www.planet-casio.com/Fr/programmation/bases.php
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 30/09/2021 14:57 | #
Je vous communiquerai le code source de ce que j'ai fait jusqu'à maintenant quand les problèmes de connexion avec la wifi du cham seront résolus.
Ajouté le 01/10/2021 à 15:16 :
Voici le code source que j'ai fait jusqu'à maintenant. Notez l'ajout de la fonction WhileEnd à la quatrième ligne de chacun des trois bouts de code correspondant chacun à un niveau de difficulté (Facile, Moyen et Difficile) (quatrième ligne en partant de la fin de chacun de ces trois bouts de code.) Juste au moment d'avoir trouvé le nombre mystère, il me met erreur syntaxe pile avant le WhileEnd. Le WhileEnd est-il en trop ? Ou manque-t-il quelque chose avant ce WhileEnd ? Si vous pouviez y regarder, ce serait sympa de votre part car je sens que ça va me rendre chèvre.
#Password: <no password>
1 -> J
"Choix du nombre de joueurs (1=1 Joueur, 2=2 Joueurs)"? -> J
1 -> D
"Choix du niveau de difficulté (1=Facile, 2=Moyen, 3=Difficile)"? -> D
D = 1 => RanInt#(1, 50) -> N
D = 2 => RanInt#(1, 100) -> N
D = 3 => RanInt#(1, 200) -> N
0 -> C
Do
"Vous devez trouver le nombre mystère comprisentre 1 et 50"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
WhileEnd
ClrText
"Bravo vous avez trouvéle nombre mystère en coups"
Locate 3, 3, C
RanInt#(1, 100)
0 -> C
Do
"Vous devez trouver le nombre mystère comprisentre 1 et 100"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
WhileEnd
ClrText
"Bravo vous avez trouvéle nombre mystère en coups"
Locate 3, 3, C
0 -> C
Do
"Vous devez trouver le nombre mystère comprisentre 1 et 200"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
≠Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
WhileEnd
ClrText
"Bravo vous avez trouvéle nombre mystère en coups"
Locate 3, 3, C
Bien à vous,
D.C.
P.S. : le WhileEnd était pour tenter de limiter par moi-même le programme à un seul niveau de difficulté (OU facile, OU moyen, OU difficile et pas les trois l'un à la suite de l'autre.) (pour le texte, pas pour la variable qui, elle, a déjà été limitée à un seul niveau de difficulté par partie.)
Citer : Posté le 01/10/2021 15:40 | #
Voilà une question bien posée ! Tu donnes le code, tu expliques ce que tu as fait, pourquoi tu l'as fait, quelle erreur tu as, et même des pistes !
Un WhileEnd ne peut servir qu'à fermer un While (comme un IfEnd ferme un If ou un LpWhile ferme un Do). Ici tu n'as pas de While, donc tu n'as pas à utiliser de WhileEnd.
Je te montre une solution "simple" là, mais prends le temps de lire jusqu'à la fin, parce que ce n'est pas la bonne solution.
Chaque boucle Do/LpWhile représente le code pour un niveau de difficulté. Si le niveau est 1, tu veux exécuter la première boucle. Si le niveau est 2, la seconde. Si le niveau est 3, la troisième. Le bon outil pour ça c'est un If :
D = 2 => RanInt#(1, 100) -> N
D = 3 => RanInt#(1, 200) -> N
0 -> C
If D=1
Do
"Vous devez etc"
...
LpWhile I≠N
IfEnd
If D=2
Do
"Vous devez etc"
...
LpWhile I≠N
IfEnd
If D=3
Do
"Vous devez etc"
...
LpWhile I≠N
IfEnd
Mais toute cette duplication de code ce n'est vraiment pas raisonnable. Ça pose plein de problèmes, regarde :
La "vraie" solution à ton problème c'est de factoriser le code, c'est-à-dire de combiner les parties identiques. Je te montre comment faire : d'abord je supprime toutes les copies sauf une :
D = 1 => RanInt#(1, 50) -> N
D = 2 => RanInt#(1, 100) -> N
D = 3 => RanInt#(1, 200) -> N
0 -> C
Do
"Vous devez trouver le nombre mystère comprisentre 1 et 50"
"Votre proposition"? -> I
If I ≠ N :Then
If I < N :Then
"Plus grand"◢
Else
"Plus petit"◢
IfEnd
IfEnd
C + 1 -> C
LpWhile I ≠ N
ClrText
"Bravo vous avez trouvéle nombre mystère en coups"
Locate 3, 3, C
Maintenant je regarde quelle partie doit changer selon le niveau de difficulté. Il n'y a que le message initial !
Donc je duplique uniquement le message initial. Et pendant que j'y suis, le message prend plusieurs lignes, donc je peux ne dupliquer que la dernière ligne. J'utilise, comme précédemment, la double flèche ⇒ pour faire des conditions sur une ligne.
D=1⇒"entre 1 et 50"
D=2⇒"entre 1 et 100"
D=3⇒"entre 1 et 200"
Et le tour est joué ! Le code est maintenant bien plus petit et bien plus facile à maintenir.
Citer : Posté le 01/10/2021 15:44 | #
Compris, je ferais ça dès que possible.
Ajouté le 01/10/2021 à 16:02 :
J'ai scrupuleusement suivi tes conseils à la lettre, Lephé, et je testerai ce code dès que possible.
Ajouté le 01/10/2021 à 17:27 :
J'ai testé ce code, lephé, et il fonctionne pour les trois niveaux de difficulté. La seule chose que je pourrais éventuellement lui reprocher, et encore, ça serait vraiment être maniaque du détail pour pas grand-chose, ce serait la répétition à chaque demande de proposition de la phrase "vous devez trouver le nombre mystère compris entre 1 et 50"/100"/200", mais bon, comme je l'ai dit plus haut, ça serait vraiment être maniaque du détail pour pas grand-chose. Reste maintenant le mode 2 joueurs pour lequel je pourrais avoir besoin de votre aide, à toi et aux autres membres compétents sur ce forum, et mon premier jeu sera bon pour sa publication dans la catégorie jeux.
Bien à vous,
D.C.
Citer : Posté le 01/10/2021 17:39 | #
Pour que le texte "vous devez trouver le nombre mystère compris entre 1 et 50"/100"/200" ne soit affiché qu'une seule et une fois, il faut qu'il ne soit appelé qu'une seule et une fois. Or dans le code précédent, il se trouve dans la boucle "Do/LpWhile" : il est donc appelé à chaque itération de la boucle !
Il suffirait que les lignes afférentes au texte soient sorties de cette boucle et placées avant le Do.
C'est bien de savoir cibler le problème (et même d'être tatillon), mais plutôt dommage de ne pas chercher à en trouver une solution par soi-même. C'est encore plus dommage de ne pas prendre le temps de bien lire le tutoriel, dont la compréhension est nécessaire pour un bon usage de la boucle "Do/LpWhile".
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 01/10/2021 18:07 | #
Merci à toi, Ne0tux, et à toi aussi, lephénixnoir, c'est en partie grâce à vous deux que j'ai pu programmer ce plus ou moins et le rendre fonctionnel. Il ne me manque plus que le mode deux joueurs à programmer, avec ton aide, lephé, la tienne, neo, ou celle de n'importe lequel d'entre vous qui soit un tant sois peu compétent dans ce domaine et je pourrais enfin le publier sur ce site section programmes et jeux. ceci étant dit, je vais sûrement avoir besoin de votre aide ...
Ajouté le 02/10/2021 à 15:07 :
Re ! J'ai besoin d'aide pour la programmation du mode deux joueurs de mon jeu plus ou moins que j'ai commencé à programmer dans le cadre du cors sur la programmation en Casio basic : Je veux le programmer, mais je ne sais pas comment m'y prendre sans risquer de faire une erreur syntaxe. Une idée de comment je peux programmer ça ?
Bien à vous,
D.C.
Citer : Posté le 02/10/2021 15:10 | #
Il faut... écrire le code correctement. Une erreur syntaxe c'est comme une phrase dont les désordre sont dans le mots. Si tu écris ton programme en suivant les règles tu n'as pas d'erreur, c'est aussi simple que ça. N'oublie pas qu'à part ce qui est mentionné dans le tutoriel, tu ne peux pas écrire ce que tu veux. Si une forme de code n'est pas explicitement autorisée alors elle est interdite.
Citer : Posté le 02/10/2021 16:10 | #
Il faut d'abord réfléchir au problème avant de s'y attaquer.
Tu souhaites :
- Définir aléatoirement le joueur qui commence
- Definir un nombre mystère commun aux deux joueurs
[boucle jusqu'à ce qu'un joueur trouve]
- Afficher le numéro du joueur courant, et le numéro du tour
- Demander son nombre et agir en conséquence
- Augmenter le nombre de tours
- Passer au joueur suivant
[fin boucle]
Ton objectif à présent est de traduire ça en basic
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 02/10/2021 17:06 | #
Pour la définition aléatoire du joueur qui commence, j'avais pensé à un pile ou face, mais ça nécessite des notions en graphique, non ? @tituya, @lephénixnoir
Citer : Posté le 02/10/2021 19:26 | #
Tirer un nombre entre 1 et 2 ne présenterait pas une similitude avec la nature du jeu que tu viens de développer ?
La solution est littéralement implémentée dans ton programme... Il suffit de l'adapter ! Elle est aussi dans le tutoriel.
Il te faut une plus grande prise d'initiative, sans systématiquement compter sur le support des autres, qui nécessairement finira par s’essouffler.
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 03/10/2021 15:01 | #
Je pense voir ce que tu veux dire : Un RanInt#( avec comme nombre minimal 1 et comme nombre maximal 2, les deux sépares par une virgule et terminés par une parenthèse fermante, non ?
Citer : Posté le 03/10/2021 15:16 | #
D'après toi ? Que penses-tu de cette solution ?
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 03/10/2021 15:20 | #
Je pense qu'elle est correcte, le tout étant de savoir comment initialiser le mode 2 joueurs.
Citer : Posté le 03/10/2021 15:27 | #
Eh bien on progresse ! En effet c'est le bon moyen de définir aléatoirement un joueur.
Essaye d'implémenter ça maintenant
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C