Posté le 12/01/2023 22:53
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 213 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 12/01/2023 23:04 | #
Je ne sais pas quelle implémentation de Basic tu utilises habituellement, mais sur la calculatrice l'implémentation diffère pas mal et tu as plusieurs problèmes qui t'attendent ; un peu de syntaxe (à la limite, rien de bien violent) et surtout le fait qu'il n'y a pas de listes de chaînes de caractères, que de valeurs numériques. Comme tes chaînes sont assez longues et la liste complète fait 275 caractères, tu ne peux pas non plus directement stocker la concaténation dans une unique chaîne (il y a une limite de 256). Au pire, tu peux toujours faire du...
"MATHMECHMUSIQUEPELUCHIMALPATROLLPREDAPLANTPRINCESSE DE LA PREDICTIONPROFONDEURRAIDRAPTORRIKKAROUAGES ANCIENTSSOLFACCORDSORCIEREVENTSUPER QUANTIQUE"→Str 2
{0, 16, 32, 41, 55, 68, 71, 78, 83, 90, 95, 101, 109, 121, 129}→List 1
{0, 8, 15, 25, 32, 42, 68, 78, 88, 93, 109, 119, 131, 146}→List 2
Et ensuite pour récupérer la chaîne à la position 0≤P<27 dans Str 3 :
P≥14⇒StrMid(Str 2,List 2[P],List 2[P+1]-List 2[P])→Str 3
ie. garder la concaténation et ensuite séparer via du slicing indiqué par les listes. Yup, c'est bourrin. (Disclaimer : c'est de tête je n'ai pas testé sur machine.)
arnaud5933 Invité
Citer : Posté le 12/01/2023 23:18 | #
Merci de ta réponse
ce n'est pas mon code j'ai utilisé chat gpt qui me la d'abord générer en Python puis je lui est demander une traduction pour en basic casio qui apparemment ne correspond pas.
je n'y connais absolument rien en codage donc je t'avoue que je suis perdue
mon objectif de base c'est de faire un programme d'aléatoire
je peux essayer de réduire le nombre de caractère s'il faut
Citer : Posté le 12/01/2023 23:22 | #
Je te conseille de jeter un œil à cet article https://www.planet-casio.com/Fr/programmation .
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 12/01/2023 23:22 | #
Honnêtement si tu veux programmer c'est sûr que Python c'est mieux... c'est compliqué pour installer Python sur ta calculatrice mais probablement possible si jamais on n'y arrive pas en Basic.
Et du coup, ton programme d'aléatoire, tu peux préciser ce que tu veux faire avec ?
arnaud5933 Invité
Citer : Posté le 12/01/2023 23:30 | #
Tu veux dire que c'est envisageable de mettre python sur une casio ?
Je joue à un jeu de carte (yu-gi-oh) j'ai 27 deck et mon pote 23 on aimerais faire un petit programme qui nous donne de façon aléatoire le nom des deck que nous allons utiliser.
Citer : Posté le 12/01/2023 23:37 | #
Tu peux utiliser casiopython je crois.
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 13/01/2023 20:53 | #
Bonsoir j'ai un soucis avec ma calcul Casio Graph 35+E II, je suis bloqué dans le menu et seulement certains menus comme Tableur marche mais peu d'autres...
Comment régler ce soucis ?
Citer : Posté le 13/01/2023 20:58 | #
Essaie de faire un reset
Mais fais un autre topic pour ça
Petit tu es doué, très doué, mais tant que je serais là tu ne seras que le second
Citer : Posté le 13/01/2023 21:18 | #
Bienvenue sur le site
Tu peux te présenter ici-> https://www.planet-casio.com/Fr/forums/topic17228-1-depuis-combien-dannees-etes-vous-sur-le-forum-forum-de-presentation.html
Et lire les règles du forum ici->https://www.planet-casio.com/Fr/forums/topic12618-1-charte-dutilisation-du-forum-cuf.html
T'inquiète pas, à ce jour je les ai même pas encore lues (ça fait un an que je suis ici )
Citer : Posté le 13/01/2023 21:21 | #
Bienvenue sur le site
Tu peux te présenter ici-> https://www.planet-casio.com/Fr/forums/topic17228-1-depuis-combien-dannees-etes-vous-sur-le-forum-forum-de-presentation.html
Et lire les règles du forum ici->https://www.planet-casio.com/Fr/forums/topic12618-1-charte-dutilisation-du-forum-cuf.html
T'inquiète pas, à ce jour je les ai même pas encore lues (ça fait un an que je suis ici )
Dis, c'est pas dans le sujet là
Petit tu es doué, très doué, mais tant que je serais là tu ne seras que le second
Citer : Posté le 15/01/2023 16:15 | #
Tu veux dire que c'est envisageable de mettre python sur une casio ?
C'est possible si tu as une Graph 35+ USB, mais bon c'est long (il faut commencer par changer l'OS...) donc pas rentable si c'est juste pour un programme, à mon avis !
Ok, si c'est juste ça tu peux avoir un programme de ce style :
{1}→List 1
For 1→I To StrLen(Str 1)
StrCmp(StrMid(Str 1,I,1),",")=0⇒I+1→List 1[Dim List 1+1]
Next
StrLen(Str 1)+2→List 1[Dim List 1+1]
RanInt#(1,Dim List 1-1)→I
Locate 1,1,StrMid(Str 1,List 1[I],List 1[I+1]-List 1[I]-1)
Tu as juste à changer la chaîne de caractères sur la première ligne et tant que le total occupe moins de 255 caractères ça devrait aller tout seul.
nono59620 Invité
Citer : Posté le 15/01/2023 17:38 | #
bonjour,
j'ai une graph 35+ mais je sais pas si elle est compatible avec la manœuvre dans le doute évitons
"D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,D14,D15,D16,D17,D18,D19,D20,D21,D22,D23,D24,D25,D26,D27,D28,D29,D30,D31,D32,D33,D34,D35,"→Str 1
{1}→List 1
For 1→I To StrLen(Str 1)
StrCmp(StrMid(Str 1,I,1),",")=0⇒I+1→List 1[Dim List 1+1]
Next
StrLen(Str 1)+2→List 1[Dim List 1+1]
RanInt#(1,Dim List 1-1)→I
Locate 1,1,StrMid(Str 1,List 1,List 1[I+1]-List 1-1)
j'en suis a 360 caractère je vois pas trop comment réduire plus
Citer : Posté le 15/01/2023 18:03 | #
Non les 255 characteres c’est juste pour la première ligne.
nono59620 Invité
Citer : Posté le 15/01/2023 18:52 | #
Je viens de faire quelque essaie toujours "erreur de syntaxe"
J'ai remarqué dans vos formules la présence de flèches qui sont transformé en points d'interrogation quand je colle sur mon éditeur, l'erreur ne vient pas de là ?
Citer : Posté le 15/01/2023 19:28 | # | Fichier joint
Ah il faut taper à la main, ou alors je peux t'envoyer directement le fichier qui va bien (ci-joint).
nono59620 Invité
Citer : Posté le 17/01/2023 21:41 | #
Bonsoir,
Nickel ça fonctionne
est-ce vous arriveriez a m'expliquer comment faire le même genre de programme qui cette fois donne 2 noms sur 2 listes différentes j'aimerais apprendre
Citer : Posté le 17/01/2023 23:21 | #
Alors si tu veux apprendre un peu tranquillement à écrire/comprendre du code en Basic CASIO, tu peux regarder le tutoriel, qui est plus détaillé que ce qu'on pourra écrire sur un seul post (Mb88 l'a lié plus haut) : https://www.planet-casio.com/Fr/programmation
Sinon pour ce code, voilà comment il marche :
On stocke tous les noms d'un bloc, séparés par des virgules, dans Str 1. Le but c'est donc de tirer un de ces noms au hasard.
La chaîne de caractères Str 1 est découpée par des virgules mais c'est dans l'esprit. Il n'y a pas une fonction tout prête pour récupérer "un segment entre deux virgules", donc on commence par se faire une liste des positions dans la chaîne où les noms des decks sont coupés.
Essentiellement, on va mettre dans la liste les indices de tous les ^ ci-dessous :
^ ^ ^ ^ ^
On peut voir que les ^ sont positionnés ainsi : un au début, un après chaque virgule, et un après la fin de la chaîne.
Ça c'est le premier au début (les positions dans la chaîne commencent à 1).
StrCmp(StrMid(Str 1,I,1),",")=0⇒I+1→List 1[Dim List 1+1]
Next
Ensuite on parcourt la chaîne pour trouver toutes les virgules. StrMid(Str 1,I,1) extrait le caractère à la position I, et on le compare à une virgule avec StrCmp() (qui renvoie 0 en cas d'égalité). Si c'est bien une virgule, alors on ajoute à la liste la position qui suit la virgule. (Le ⇒ cache un test conditionnel.)
Et enfin on ajoute la position après la fin de la chaîne.
Ainsi, pour extraire le i-ème nom de deck, il suffit de récupérer la section de Str 1 qui commence au i-ème ^ et va jusqu'au suivant (moins 1 caractère).
On génère donc un nombre aléatoire entre 1 et le nombre de decks :
Et ensuite on récupère la section concernée de la chaîne avec StrMid(), qu'on affiche à l'écran avec Locate :
Voilà voilà, c'est un peu bourrin mais c'est l'idée générale
Pour tirer un deuxième deck tu peux donc, à la limite, copier tout le code dans un autre fichier et changer le texte ; ou si tu veux faire un peu plus propre, mettre une autre liste dans Str 2, refaire la génération de la liste à partir de Str 2, et refaire le tirage aléatoire.
nono59620 Invité
Citer : Posté le 05/02/2023 21:45 | # | Fichier joint
Bonjour,
j'ai pas regardé à mon programme depuis un moment malheureusement...
du coup quand j'ai fait un test le programme me sort un nom de la première liste mais quand il veut pour la deuxième liste cela m'indique erreur dimension. J'ai fait un screen pour montrer l'endroit où le curseur apparaît.
Citer : Posté le 06/02/2023 11:43 | #
Dans mon code, le "1" de "List 1" et de "Str 1" c'est juste un identifiant. Quand tu veux avoir deux tirages il vaut donc utiliser "List 2" et "Str 2"... mais c'est tout. Tu as changé plusieurs "1" en "2" ailleurs dans le code, alors que ça n'a pas de sens :
Le nombre entre accolades ici est supposé être la position, dans la chaîne, où le nom du premier deck commence. C'est 1 (le début de la chaîne) même quand tu fais ton second tirage.
Ici de même on commence à charger les virgules dès le début de la chaîne, donc 1→I.
Ici le 2 (après le I) c'est le nombre de caractères qu'on extrait à la position I. On cherche une virgule, et donc on extrait exactement un caractère, pas deux : StrMid(Str 2,I,1).
Le I+2 c'est la position, par rapport à la virgule, où le nom du deck suivant commence. C'est toujours la lettre qui suit immédiatement la même virgule, ie. celle en position I+1. Le Dim List 2+2 c'est la position dans la liste où on stocke ce numéro qu'on vient de calculer. C'est juste après la fin de la liste, donc à la position Dim List 2+1. (On a le droit d'écrire juste après la fin de la liste, cela rajoute un élément ; c'est le seul accès hors-bornes autorisé.)
Pareil ici pour le Dim List 2+2. (Le StrLen(Str 2)+2, lui, est correct.)
Et pareil pour la dernière ligne.
nono59620 Invité
Citer : Posté le 06/02/2023 20:48 | # | Fichier joint
Bonsoir,
Merci
Après quelques heures à y regarder voici le résultat final qui fonctionne