Bonjour ! Je suis parti pour vous présenter l'astuce la plus bête de l'histoire des astuces Casio
Sérieusement, cette astuce est tellement simple que ne la voir mentionnée nulle part sur ce forum m'a plutôt choqué. Peut-être que tout le monde est au courant, et donc je ne vais rien vous apprendre ; ou alors nous avons tous été bornés et pas fichu de voir ce qui était devant nos yeux depuis tout ce temps.
Je m'explique...
Ça vous dit un peu de storytelling ?
Voilà l'histoire du *eureka* de cette astuce. Je la met en spoiler parce que c'est du HS complet
L'histoire de cette astuce remonte aux cours de maths de ma classe de première. Comme d'habitude je glandouillais au fond de la salle sur ma calculatrice : j'essayais de programmer un jeu de course avec des Locate. Je voulais un truc simple et qui défile vite. A côté de moi un autre pote, très peu expérimenté, en faisait de même.
A un moment il relève la tête vers moi :
"Hey, mec, mon affichage avec les Locate ça marche pas je comprends pas ! Ça défile tout seul"
"Fais voir"
Et là je vois qu'il a mélangé l'affichage sans les Locate (les simples guillemets) avec celui avec les Locate, le tout dans un boucle infinie...
Je me souviens avoir regardé son programme pendant 30 bonnes secondes en me disant : "mais bordel oui, MAIS OUI C'EST GENIAL"
J'ai directement pensé à utiliser cette astuce pour le programme de course qui sera donné en fin de tuto.
Un sacré souvenir.
Bon, concrètement, l'astuce tient en une phrase :
Faire un boucle et mettre
""
dedans.
A quoi ça sert ? Et bien au bout de 7 affichages vides comme ça, l'écran se met à défiler à la verticale !
Un exemple ? Très bien :
Avec ce programme, on fait défiler n'importe quel message vers le haut !
UNE SECONDE
La calculatrice n'affiche rien du tout
Vous en êtes sûr ?
Faites [AC] : le message est bien là. Il défile simplement tellement rapidement qu'il est quasiment impossible de le voir ! 8)
Pas convaincus ?
Ok, modifions le programme pour voir quelque chose !
Vous devriez commencer à voir un balayage de l'écran, mais encore une fois c'est très, très rapide.
Et ?
...
Et c'est tout ! L'astuce comme je l'ai dit est très simple.
Mais l'utilité ?
Faites marcher votre imagination : tous les programmes avec un affichage en "Locate" et qui demandent un défilement vertical sont optimisables de cette manière.
Et pour connaître le position Y d'un caractère, ça ne devient pas trop compliqué ?
On peut simplement compter le nombre de fois que celui-ci est remonté en partant de sa position originelle. Ça reste léger en général !
L'exemple d'application concrète : voilà un simple programme de course (type "suivez le chemin"), très court, très rapide :
J'en était entre sûr et totalement certain que cette remarque allait arriver.
Je vais peut-être être tout seul à me dresser contre la tendance du forum (que je regarde de loin depuis un petit moment, je connais vos habitudes de programmation), mais je n'ai jamais vu de problème à utiliser des Lbl et des Goto. Ça m'a même souvent permis d'optimiser grandement des programmes (oui oui, je suis sur un snake avec des Locate actuellement, et il va bientôt passer sous la barre des 300 octets, et je met quiconque au défi d'en faire autant sans Goto...)
Et puis je connais vos arguments :
Moins rapide qu'un while
Bon en l'occurence ici le programme est déjà tellement rapide qu'on s'en fiche totalement (vraiment)
Ça cause des problèmes une fois sur deux
Bof, il suffit de faire attention où on les met. Je dirais que c'est pas plus compliqué que de gérer les fonctions Isz et les Dsz qui font sauter l'instruction d'après si elles reçoivent 0 en valeur.
C'est moche
Les gens.
Vous préconisez de ne pas fermez les parenthèses. Soyez sérieux 5 secondes...
Trêve de plaisanterie.
Un retour sur l'astuce en elle-même serait la bienvenue en revanche
Sur un terrain clos, l'ingéniosité est requise.
Je suis allé acheter du pouvoir au Super-U mais il ne restait que du Cajoline.
Bon en l'occurence ici le programme est déjà tellement rapide qu'on s'en fiche totalement (vraiment)
C'est vrai que là, ça ne se voit presque pas, mais si quelqu'un va utiliser ton astuce, il va croire que c'est la bonne solution pour les boucles infini et donc va potentiellement ralentir le programme
Bof, il suffit de faire attention où on les met.
Le mieux, c'est de pas faire attention et que ça buggue pas
Vous préconisez de ne pas fermez les parenthèses.
C'est pour optimiser la taille d'un programme. J'ajoute que la solution avec le while fait gagner un octet
Bien évidemment, tu oublie l'argument principal :
Les Goto et Lbl, ça passe pour un petit programme, comme un snake.
Mais dès que tes projets vont gagner en complexité, tout géré avec des Goto est impossible. Tu vas te perdre toi-même dans ton propre code. Si la communauté le déconseille, c'est bien pour une bonne raison.
Enfin, concernant la non-fermeture des parenthèses, c'est pour gagner de précieux octets (les ~64 Ko de la calculatrice se remplissent vite). Aucun but esthétique, mais pratique.
Laghal a écrit : Je vais peut-être être tout seul à me dresser contre la tendance du forum (que je regarde de loin depuis un petit moment, je connais vos habitudes de programmation), mais je n'ai jamais vu de problème à utiliser des Lbl et des Goto.
Ok, alors voici un argument que tu n'as pas l'air d'avoir entendu :
→ Ça casse la structure algorithmique.
Et on a beau dire, l'interpréteur Basic est séquentiel, et si tu sautes à l'intérieur d'une boucle sans être passé par l'instruction For ou While qui ouvre la boucle tu crées une vraie erreur qui se manifeste sous la forme d'une erreur syntaxe quand on tombe sur le Next ou le WhileEnd, facile à voir bien sûr.
Alors oui en Basic ça a peu d'influence, il suffit de faire attention où on les met et où ils tombent, à ne pas essayer de sauter en-dehors des limites de l'interpréteur. Ça optimise en place et parfois en vitesse. Certes ! Mais ça fout aussi en l'air la lisibilité.
Maintenant parlons un peu de langages plus complexes. En C, avec un goto, tu peux sauter d'une fonction à l'autre et remonter fallacieusement la pile des appels, tout ça pour foutre en l'air la pile et t'assurer une erreur à tous les coups. Sans compter que tu peux aussi exécuter des rts sur potentiellement n'importe quelle adresse et te mettre à exécuter de la mémoire aléatoire. Et ça se joue à pas grand-chose.
Bref, les seuls cas où les goto sont acceptables formellement est là où ils sont essentiels, par exemple pour créer des sortes de fonctions en Basic... ou en assembleur.
Mais dès que tes projets vont gagner en complexité, tout géré avec des Goto est impossible. Tu vas te perdre toi-même dans ton propre code. Si la communauté le déconseille, c'est bien pour une bonne raison.
Ca reste pratique pour gagner des précieux octets. Aucun but de lisibilité, juste de l'opti.
Enfin, concernant la non-fermeture des parenthèses, c'est pour gagner de précieux octets (les ~64 Ko de la calculatrice se remplissent vite). Aucun but esthétique, mais pratique.
Dès que les conditions deviennent longues, c'est illisible et on s'y perd.
Je troll méchamment d'accord, et c'est HS.
Je suis d'accord dans l'idée, c'est juste que le refus systématique de la communauté à la vue du moindre Goto est un peu.. Excessif
Ajouté le 27/02/2016 à 18:50 :
Maintenant parlons un peu de langages plus complexes. En C, avec un goto, tu peux sauter d'une fonction à l'autre et remonter fallacieusement la pile des appels, tout ça pour foutre en l'air la pile et t'assurer une erreur à tous les coups. Sans compter que tu peux aussi exécuter des rts sur potentiellement n'importe quelle adresse et te mettre à exécuter de la mémoire aléatoire. Et ça se joue à pas grand-chose.
Je fais du C, je te remercie, et je sais très bien que les Goto en C sont sales, et pas adaptés... Mais parce que le terrain est différent.
De même que je n'irais pas tenter de me passer du slicing en Python, je m'adapte au langage. Sur calculatrice, utiliser des Goto dans certains cas spécifiques me parait encore convenable. Limite, mais convenable dans certains cas.
Cherchez pas vous ne me convaincrez pas. Au mieux vous me convaincrez qu'il y a une meilleure méthode dans un contexte spécifique, mais cherchez pas, ça fait plus de trois ans que traîner un peu (mine de rien) ici ne m'a pas convaincu, alors...
Sur un terrain clos, l'ingéniosité est requise.
Je suis allé acheter du pouvoir au Super-U mais il ne restait que du Cajoline.
Laghal a écrit : De même que je n'irais pas tenter de me passer du slicing en Python, je m'adapte au langage. Sur calculatrice, ça me parait encore convenable. Limite, mais convenable dans certains cas.
Je suis bien d'accord, mais pour une boucle de 10 lignes, franchement... si encore il s'agissait d'une grande astuce qui permettait d'optimiser la structure en profitant de pouvoir sauter sans exécuter des paquets de code pour revenir en arrière, je comprendrais, mais là le gain est faible par rapport à un While conventionnel.
Lephenixnoir a écrit : Je suis bien d'accord, mais pour une boucle de 10 lignes, franchement... si encore il s'agissait d'une grande astuce qui permettait d'optimiser la structure en profitant de pouvoir sauter sans exécuter des paquets de code pour revenir en arrière, je comprendrais, mais là le gain est faible par rapport à un While conventionnel.
Contexte spécifique que j'ai modifié, et je ne cache que c'était fait exprès, pour vous piquer là où ça gratte.
Dans ce contexte, bien-sûr qu'un while vaut mieux qu'un Goto
Je n'ai pas raté mon coup.
Fin du HS svp ?
Sur un terrain clos, l'ingéniosité est requise.
Je suis allé acheter du pouvoir au Super-U mais il ne restait que du Cajoline.
Je sors du HS pour dire que cette astuce (que j'ai remarqué il y a peu) est génial 0_0. Je n'avais jamais pensé à l'utiliser comme ça (juste pour du scrolling de texte). En tout cas merci à toi
De l'aide et des conseils pour mes projets serait génial
Refaire (encore), optimiser et finir mon mario
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
J'aime bien l'astuce, ça pourrait permettre d'accélérer Canyon sur Prism.
Sinon je ne sais pas comment vous faites pour trouver le courage de discuter avec un esprit si supérieur au notre, qui nous connait dans nos moindres détails, et dont la principale préoccupation est de provoquer notre réactance. Je me suis senti vaincu et impuissant dès les premiers messages ! Le 1e post sentait déjà la m*rde étant donnée sa taille, pour un astuce aussi simple.
J'avoue être assez étonné du fait que si peu de gens connaissent cette astuce
Je l'utilisais déjà en 2011 et à l'époque, il existait déjà sur le site plusieurs jeux l'utilisant...
Après je suppose que ça ne fait pas de mal de la mettre en évidence.
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexionjewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Btl a écrit : J'avoue être assez étonné du fait que si peu de gens connaissent cette astuce
Moi de même, c'est pas transcendant comme astuce. Mais elle est adaptée à très peu de jeux je pense, beaucoup ont un scrolling horizontal et non vertical, ou maintiennent le décor et modifient seulement certains éléments.
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 27/02/2016 18:14 | #
Lbl 1
Isz A
A=19⇒1→A
""
Locate A,7,"SWAG"
Goto 1
Les Goto et les Lbl sont très affreux
Mieux vaut faire:
While 1
Isz A
A=19⇒1→A
""
Locate A,7,"SWAG"
WhileEnd
Citer : Posté le 27/02/2016 18:27 | #
Marrant l'effet
Pour déplacer des caractères, on peut également utiliser StrRotate().
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/02/2016 18:31 | #
J'en était entre sûr et totalement certain que cette remarque allait arriver.
Je vais peut-être être tout seul à me dresser contre la tendance du forum (que je regarde de loin depuis un petit moment, je connais vos habitudes de programmation), mais je n'ai jamais vu de problème à utiliser des Lbl et des Goto. Ça m'a même souvent permis d'optimiser grandement des programmes (oui oui, je suis sur un snake avec des Locate actuellement, et il va bientôt passer sous la barre des 300 octets, et je met quiconque au défi d'en faire autant sans Goto...)
Et puis je connais vos arguments :
Moins rapide qu'un while
Bon en l'occurence ici le programme est déjà tellement rapide qu'on s'en fiche totalement (vraiment)
Ça cause des problèmes une fois sur deux
Bof, il suffit de faire attention où on les met. Je dirais que c'est pas plus compliqué que de gérer les fonctions Isz et les Dsz qui font sauter l'instruction d'après si elles reçoivent 0 en valeur.
C'est moche
Les gens.
Vous préconisez de ne pas fermez les parenthèses. Soyez sérieux 5 secondes...
Trêve de plaisanterie.
Un retour sur l'astuce en elle-même serait la bienvenue en revanche
Je suis allé acheter du pouvoir au Super-U mais il ne restait que du Cajoline.
Citer : Posté le 27/02/2016 18:36 | #
Alors là, ça reste à prouver
Plus sérieusement, je dis ça parce que le scrolling est souvent horizontal.
Citer : Posté le 27/02/2016 18:38 | #
C'est vrai que là, ça ne se voit presque pas, mais si quelqu'un va utiliser ton astuce, il va croire que c'est la bonne solution pour les boucles infini et donc va potentiellement ralentir le programme
Le mieux, c'est de pas faire attention et que ça buggue pas
C'est pour optimiser la taille d'un programme. J'ajoute que la solution avec le while fait gagner un octet
Citer : Posté le 27/02/2016 18:40 | #
Bon allez, je me soumets aux habitudes du forum, mais on ne m'enlèvera pas de la tête que les Lbl / Goto sont utilisables sur calculatrice
Je suis allé acheter du pouvoir au Super-U mais il ne restait que du Cajoline.
Citer : Posté le 27/02/2016 18:42 | #
Bien évidemment, tu oublie l'argument principal :
Les Goto et Lbl, ça passe pour un petit programme, comme un snake.
Mais dès que tes projets vont gagner en complexité, tout géré avec des Goto est impossible. Tu vas te perdre toi-même dans ton propre code. Si la communauté le déconseille, c'est bien pour une bonne raison.
Enfin, concernant la non-fermeture des parenthèses, c'est pour gagner de précieux octets (les ~64 Ko de la calculatrice se remplissent vite). Aucun but esthétique, mais pratique.
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/02/2016 18:46 | #
Je vais peut-être être tout seul à me dresser contre la tendance du forum (que je regarde de loin depuis un petit moment, je connais vos habitudes de programmation), mais je n'ai jamais vu de problème à utiliser des Lbl et des Goto.
Ok, alors voici un argument que tu n'as pas l'air d'avoir entendu :
→ Ça casse la structure algorithmique.
Et on a beau dire, l'interpréteur Basic est séquentiel, et si tu sautes à l'intérieur d'une boucle sans être passé par l'instruction For ou While qui ouvre la boucle tu crées une vraie erreur qui se manifeste sous la forme d'une erreur syntaxe quand on tombe sur le Next ou le WhileEnd, facile à voir bien sûr.
Alors oui en Basic ça a peu d'influence, il suffit de faire attention où on les met et où ils tombent, à ne pas essayer de sauter en-dehors des limites de l'interpréteur. Ça optimise en place et parfois en vitesse. Certes ! Mais ça fout aussi en l'air la lisibilité.
Maintenant parlons un peu de langages plus complexes. En C, avec un goto, tu peux sauter d'une fonction à l'autre et remonter fallacieusement la pile des appels, tout ça pour foutre en l'air la pile et t'assurer une erreur à tous les coups. Sans compter que tu peux aussi exécuter des rts sur potentiellement n'importe quelle adresse et te mettre à exécuter de la mémoire aléatoire. Et ça se joue à pas grand-chose.
Bref, les seuls cas où les goto sont acceptables formellement est là où ils sont essentiels, par exemple pour créer des sortes de fonctions en Basic... ou en assembleur.
Citer : Posté le 27/02/2016 18:46 | #
Ca reste pratique pour gagner des précieux octets. Aucun but de lisibilité, juste de l'opti.
Dès que les conditions deviennent longues, c'est illisible et on s'y perd.
Je troll méchamment d'accord, et c'est HS.
Je suis d'accord dans l'idée, c'est juste que le refus systématique de la communauté à la vue du moindre Goto est un peu.. Excessif
Ajouté le 27/02/2016 à 18:50 :
Je fais du C, je te remercie, et je sais très bien que les Goto en C sont sales, et pas adaptés... Mais parce que le terrain est différent.
De même que je n'irais pas tenter de me passer du slicing en Python, je m'adapte au langage. Sur calculatrice, utiliser des Goto dans certains cas spécifiques me parait encore convenable. Limite, mais convenable dans certains cas.
Cherchez pas vous ne me convaincrez pas. Au mieux vous me convaincrez qu'il y a une meilleure méthode dans un contexte spécifique, mais cherchez pas, ça fait plus de trois ans que traîner un peu (mine de rien) ici ne m'a pas convaincu, alors...
Je suis allé acheter du pouvoir au Super-U mais il ne restait que du Cajoline.
Citer : Posté le 27/02/2016 18:53 | #
De même que je n'irais pas tenter de me passer du slicing en Python, je m'adapte au langage. Sur calculatrice, ça me parait encore convenable. Limite, mais convenable dans certains cas.
Je suis bien d'accord, mais pour une boucle de 10 lignes, franchement... si encore il s'agissait d'une grande astuce qui permettait d'optimiser la structure en profitant de pouvoir sauter sans exécuter des paquets de code pour revenir en arrière, je comprendrais, mais là le gain est faible par rapport à un While conventionnel.
Citer : Posté le 27/02/2016 18:53 | #
Laghal, depuis combien de programmes-tu ? Tu ne vas pas apprendre à un vieux comment optimiser ces programmes
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/02/2016 18:55 | #
Laghal, depuis combien de programmes-tu ? Tu ne vas pas apprendre à un vieux comment optimiser ces programmes
Je dirais même plus: à un vieillard
Citer : Posté le 27/02/2016 18:56 | #
Je suis bien d'accord, mais pour une boucle de 10 lignes, franchement... si encore il s'agissait d'une grande astuce qui permettait d'optimiser la structure en profitant de pouvoir sauter sans exécuter des paquets de code pour revenir en arrière, je comprendrais, mais là le gain est faible par rapport à un While conventionnel.
Contexte spécifique que j'ai modifié, et je ne cache que c'était fait exprès, pour vous piquer là où ça gratte.
Dans ce contexte, bien-sûr qu'un while vaut mieux qu'un Goto
Je n'ai pas raté mon coup.
Fin du HS svp ?
Je suis allé acheter du pouvoir au Super-U mais il ne restait que du Cajoline.
Citer : Posté le 27/02/2016 20:52 | #
Je sors du HS pour dire que cette astuce (que j'ai remarqué il y a peu) est génial 0_0. Je n'avais jamais pensé à l'utiliser comme ça (juste pour du scrolling de texte). En tout cas merci à toi
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 28/02/2016 10:50 | #
J'aime bien l'astuce, ça pourrait permettre d'accélérer Canyon sur Prism.
Sinon je ne sais pas comment vous faites pour trouver le courage de discuter avec un esprit si supérieur au notre, qui nous connait dans nos moindres détails, et dont la principale préoccupation est de provoquer notre réactance. Je me suis senti vaincu et impuissant dès les premiers messages ! Le 1e post sentait déjà la m*rde étant donnée sa taille, pour un astuce aussi simple.
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 28/02/2016 14:39 | #
J'avoue être assez étonné du fait que si peu de gens connaissent cette astuce
Je l'utilisais déjà en 2011 et à l'époque, il existait déjà sur le site plusieurs jeux l'utilisant...
Après je suppose que ça ne fait pas de mal de la mettre en évidence.
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 28/02/2016 14:41 | #
J'avoue être assez étonné du fait que si peu de gens connaissent cette astuce
Moi de même, c'est pas transcendant comme astuce. Mais elle est adaptée à très peu de jeux je pense, beaucoup ont un scrolling horizontal et non vertical, ou maintiennent le décor et modifient seulement certains éléments.