Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » édition code source black-jack originellement compatible à partir de la 35-35 +
Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

édition code source black-jack originellement compatible à partir de la 35-35 +

Posté le 10/09/2021 18:32

j'ai transféré sur ma 25 première du nom (avec le câble sériel-pc) le jeu black-jack originellement compatible à partir de la 35-35 + avant de le transférer vers la 25 + E II avec le câble calculatrice-calculatrice et J'aimerais 2 choses : 1) que je ne quitte le programme qu'en appuyant sur F4 et pas indifféremment en appuyant sur F1 ou F4 et 2) que ça me propose de continuer ou quitter en appuyant sur l'une ou l'autre des touches de fonctions de ma 25 + E II. (F1 à F6) (F1 pour continuer et F4 pour quitter, par exemple.) Une idée de comment je peux coder cela ?

Bien à vous,

David


Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante
Inikiwi Hors ligne Membre Points: 160 Défis: 0 Message

Citer : Posté le 26/09/2021 17:53 | #


une variable se définit PARTOUT dans le code
il faut juste donner une valeur
Lephenixnoir Hors ligne Administrateur Points: 20773 Défis: 143 Message

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.
Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

Citer : Posté le 27/09/2021 14:54 | #


Voici ce que j'ai codé pour le moment :

#Program name: + ou -
#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...
Tituya En ligne Rédacteur Points: 1772 Défis: 16 Message

Citer : Posté le 27/09/2021 15:31 | #


#Program name: + ou -
#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

Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire l'inverse grâce à Bzh)



Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

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...
Tituya En ligne Rédacteur Points: 1772 Défis: 16 Message

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...
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire l'inverse grâce à Bzh)



Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

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 :

#Program name: + ou -
#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é ?
Totoyo Hors ligne Membre d'honneur Points: 16034 Défis: 102 Message

Citer : Posté le 30/09/2021 13:24 | #


Bonjour Sniperking, je remets la réponse de Dark Storm.

Dark storm a écrit :
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
Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

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.

#Program name: + ou -
#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.)
Lephenixnoir Hors ligne Administrateur Points: 20773 Défis: 143 Message

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 = 1 => RanInt#(1, 50) -> N
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 :
  • Le code devient beaucoup plus long et beaucoup plus compliqué, c'est facile de se perdre.
  • Si jamais tu veux modifier les messages ou le code de la boucle de jeu, tu dois modifier les trois versions (si tu en oublies ça devient le chaos dans ton code).
  • Si tu veux 20 niveaux de difficultés tu vas copier le code 20 fois ?

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 :

"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

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.

     "Vous devez trouver le    nombre mystère compris"
     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.
Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

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.
Ne0tux Hors ligne Membre d'honneur Points: 3492 Défis: 265 Message

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".
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

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.
Lephenixnoir Hors ligne Administrateur Points: 20773 Défis: 143 Message

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.
Tituya En ligne Rédacteur Points: 1772 Défis: 16 Message

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 :
- Commencer la partie en 2 joueurs
- 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
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire l'inverse grâce à Bzh)



Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

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
Ne0tux Hors ligne Membre d'honneur Points: 3492 Défis: 265 Message

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.
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

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 ?
Tituya En ligne Rédacteur Points: 1772 Défis: 16 Message

Citer : Posté le 03/10/2021 15:16 | #


D'après toi ? Que penses-tu de cette solution ?
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire l'inverse grâce à Bzh)



Sniperking Hors ligne Membre Points: 213 Défis: 0 Message

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.
Tituya En ligne Rédacteur Points: 1772 Défis: 16 Message

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
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire l'inverse grâce à Bzh)



Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante

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 v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 95 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