LIMachi fait encore des siennes avec les Str
Posté le 26/09/2012 23:11
Quand je pense avoir enfin tout découvert sur ma calto, voila-t-y pas que je découvre un moyen d'allouer "dynamiquement" des listes dans un programme basique acceptant les Str!
En effet, j'ai découvert que en remplissant la liste Ans et en la transvasant dans une liste sans préciser le nombre, mais le nom de la liste, la calculatrice va chercher la liste correspondante (au nom) et si elle ne la trouve pas, va la créer sur la première liste non nommée qu'elle va trouver!
Plus-tôt que de vous ensevelir sous des paroles, passons aux exemples:
(pour tous les exemples, j'utilise ce code)
seq(0,X,0,9,1)
List Ans->List "Test"
(J'utilise la fonction seq() par défaut pour créer des listes)
Cas 1: Toutes les liste sont libres de toute valeur et tout nom:
La liste 1 ce nommera Test, et seras remplie de la case 1 a 10 par des 0.
Cas 2 (Le plus important!!): Les 10 premières listes sont pleines de valeurs, mais n'ont pas de noms:
La liste 1 ce nommera Test, et seras remplie de la case 1 a 10 par des 0. La liste 1 de base a donc été écrasée par la nouvelle liste.
Cas 3 (Le plus intéressant pour la compatibilité inter-programmes): Les 10 premières listes sont pleines de valeurs, et on des noms:
La 11ème liste ce nommera Test et ... (enfin bref).
Le programme aura sauté les 10 premières listes car elles ne sont pas vide de noms et qu'elles ne correspondent pas au nom "Test"
Cas 4: La liste n°4 s'appelle "Test": La calculatrice n'est pas trop conne, si le nom correspond parfaitement (sensible a la case), elle va modifier la liste qui existe déjà plus-tôt que d'en recréer une.
Une autre astuce qu'il faut connaitre car elle est extrêmement pratique avec ce que je viens d’expliquer, c'est qu'une liste peut être appelé soit avec ce code:
List "Test"
soit avec celui-ci:
"Test"->Str 1
List Str 1
Bien sur, ce sont des exemples, a vous d’exploiter ces astuces comme bon vous semble, mais sachez une chose:
List "Test"+"1"[1]
"Test"->Str 1
List Str 1+"1"[1]
"1"->Str 2
List Str 1+Str 2[1]
ces trois codes ne marchent pas! n'utilisez qu'un texte ou un Str lorsque vous appelez une liste!
Ajout du 01/10/2012 à 22h00
petites choses que j'ai oublié de préciser, et petites astuces pouvant être utilisées:
-On ne peut pas allouer de listes avec la fonction Dim, utilisez la fonction
seq() de préférence ou une liste déjà définie définie.
-Par contre:
{0,1}->List Str 1
fonctionne.
-Astuce: vous pouvez comparer deux listes de cette façon:
Not Sum (List 1!=List Str 1
mais il faut commencer par tester la Dim des deux listes pour éviter une érreur. et pour tester la Dim, l'astuce consiste justement a
nommer la liste 1 puis tester la Dim (on est mal si on ne peut être vraiment sur de nos listes, mais bon, on trouvera sans doute bien-tôt une astuce pour y remédier).
-Astuce, sans en être une: n'oubliez pas la fonction
File, nous n'avons pas que 26 listes, mais 156 (6*26). En les utilisant, on doit pouvoir trouver des nouvelles astuces aussi.
(je n'ai pas testé, mais j'ai imaginé une méthode de test de listes qui fonctionnerait si on connait le nom de toutes les listes nommées d'une File. En gros, on transvase toutes les listes ayant un nom dans une File de sauvegarde, on renomme les 26 listes de la File qui nous intéresse, on les teste avec la méthode
sus-citée, on stocke dans une liste de la File de sauvegarde les info tailles des 26 liste de la File testée, puis finalement, on retransvase nos listes stockées dans la File de sauvegarde vers la File testée en utilisant une boucle de comparaison utilisant ma formule de comparaison sus-citée aussi (bon, si vous avez tout compris, on a donc au final la File testée avec toutes ces listes nommées, sans que celles qui nous intéressent ne soient renommées et en prime, une liste contenant toutes les Dim des autres listes))
Après avoir lu sa, je vous autorise a me dire que je suis fou
Citer : Posté le 26/09/2012 23:16 | #
Très intéressant... Cela pourrait convenir à un jeu où on peut créer autant de personnages que l'on le souhaite (tant qu'il y a de la mémoire)...
Il suffira d'écrire le nom du perso au début puis si il existe, on reprendra sa partie, mais si il n'existe pas, il en créera un automatiquement.
Citer : Posté le 27/09/2012 10:11 | #
Bien évidemment, ça ne s'arrête qu'après 26 listes
Citer : Posté le 27/09/2012 11:04 | #
Pas mal du tout cette astuce. Bien trouvé !
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 27/09/2012 17:58 | #
Ca marche aussi visiblement un peu partout où on peut utiliser les listes!
Citer : Posté le 27/09/2012 18:54 | # | Fichier joint
Message du 26/09/2012 a 23h25 en retard dû a un problème de connection de ma part
je l'ai appliqué se midi, durant un cours de physique-chimie, après avoir découvert l'astuce, pour créer un jeu de carte qui n'empiète pas sur mes autres programmes. Il est pas fini (je dois finir mon système d’allocation pour qu'il évite de supprimer les listes sans nom), mais il est déjà jouable, je vous met la version d’essai en fichier joint.
Les règles ne sont pas données, il y a encore des bug, il n'y a qu'une seule manche...
Le Pazac est un jeu de carte joué dans toute la galaxie (si si, croyez moi) tout particulièrement par les jédi (CF: StarWars Knights Of The Old Républic).
Le but du jeu est extrêmement simple:
Il y a un dec de 40 cartes numérotées de 1 a 10 (donc il y en a 4 de chaque nombre) qui est commun aux deux joueurs.
Deux autres decs spécifiques aux joueurs de 10 cartes chacun et peuvent comprendre des cartes ayant des nombres compris entre -10 et 10, le 0 étant exclu.
Le but du jeu est:
-Soit d'être le premier joueur ayant atteint 20
-Soit avoir un plus grand nombre que l'adversaire a la fin de la partie
-Soit le joueur adverse a dépassé 20 (disqualification immédiate)
Au début du jeu, le dec de 40 cartes est mélangé, ainsi que ceux des joueurs.
La partie débute après qu'ils aient pioché chacun les 4 premières cartes de leur dec.
Tout le monde commence avec un total de point égal a 0.
A chaque tour, une carte du dec principal est piochée et additionnée aux précédentes, le joueur a alors le choix:
-Jouer des cartes (il n'a pas de limite du nombre de carte jouables, mais s'il a joué une carte, il ne la repioche pas jusqu'à la fin du jeu)
-Passer
-Ce coucher (s'il fait cela, il ne peut plus jouer)
Ce jeu seras sans doute ma participation au concours des 8 ans de planète casio (une fois fini) car je n'ai pas eut le temps de faire du C depuis la rentrée.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)