Rechercher
Connexion
Chatbox externe
Derniers sujets
Partenaires
TI-Planet | Espace-TI : Forum |
Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)
Les posteurs les plus actifs du mois
Aucun utilisateur |
Snake
5 participants
Tout 82 :: Programmes :: Les Programmes des Internautes (TI-Basic z80) :: Aide à la programmation (TI-Basic z80)
Page 1 sur 1
Snake
je dispose du snake de ratuss, et j'aimerai pouvoir comprendre son fonctionnement. J'espère que vous voudrez bien m'aider.
J'ai fait un montage du programme pour y voir un peu plus clair et je vous demande à présent si vous pouvez me dire à quoi sert:
• La variable P
• Les variables A, B, C, D, E et N (j'ai compris pour O)
• comment fonctionne le lbl C
• à quoi servent les lbl 2,3,4,5
• le rôle de "partDéc", "dim(" (je pense que c'est pour définir le nombre de lignes dans une liste, "ent("
Merci d'avance.
Lien de l'image (passer l'annonce en haut à droite de la page)
J'ai fait un montage du programme pour y voir un peu plus clair et je vous demande à présent si vous pouvez me dire à quoi sert:
• La variable P
• Les variables A, B, C, D, E et N (j'ai compris pour O)
• comment fonctionne le lbl C
• à quoi servent les lbl 2,3,4,5
• le rôle de "partDéc", "dim(" (je pense que c'est pour définir le nombre de lignes dans une liste, "ent("
Merci d'avance.
Lien de l'image (passer l'annonce en haut à droite de la page)
Re: Snake
Le programme de Ratuss date de 2006.
Il est très bien niveau graphisme et vitesse du jeu.
C'est devenu un incontournable dans les prgm de la communauté tout 82 (plus de 50 pages de réponses pour ce prgm, ce n'est pas rien).
Néanmoins, il y a quelques années, on programmais essentiellement avec des étiquettes (Goto/Lbl), et le prgm de ratuss n'est fait pas exception.
Or, les Goto/Lbl peuvent interférer avec les boucles (http://tout82.free.fr/forum/sujet.php?sujet=2757), et sont relativement déconseillés pour les jeux fluides (par contre pour les Menus et prgm qui ne demandent pas un affichage rapide ils sont pratiques je veux bien l'admettre).
En plus, la vitesse des Lbl/Goto n'est pas très intéressante par rapport aux boucle.
C'est pourquoi je pense qu'il vaut mieux, si tu veux étudier des prgm pour apprendre des techniques, te pencher sur des prgm qui utilisent les boucles plutôt que les Goto/Lbl.
Mais après c'est à toi de voir.
Pour revenir à tes questions:
partDéc(nombre) donne la partie décimale d'un nombre (.45 pour 67.45 par exemple)
ent(nombre) donne une troncature du nombre (67 pour 67.45)
dim(Liste) c'est la dimension d'une liste (son nombre de termes)
Il est très bien niveau graphisme et vitesse du jeu.
C'est devenu un incontournable dans les prgm de la communauté tout 82 (plus de 50 pages de réponses pour ce prgm, ce n'est pas rien).
Néanmoins, il y a quelques années, on programmais essentiellement avec des étiquettes (Goto/Lbl), et le prgm de ratuss n'est fait pas exception.
Or, les Goto/Lbl peuvent interférer avec les boucles (http://tout82.free.fr/forum/sujet.php?sujet=2757), et sont relativement déconseillés pour les jeux fluides (par contre pour les Menus et prgm qui ne demandent pas un affichage rapide ils sont pratiques je veux bien l'admettre).
En plus, la vitesse des Lbl/Goto n'est pas très intéressante par rapport aux boucle.
C'est pourquoi je pense qu'il vaut mieux, si tu veux étudier des prgm pour apprendre des techniques, te pencher sur des prgm qui utilisent les boucles plutôt que les Goto/Lbl.
Mais après c'est à toi de voir.
Pour revenir à tes questions:
partDéc(nombre) donne la partie décimale d'un nombre (.45 pour 67.45 par exemple)
ent(nombre) donne une troncature du nombre (67 pour 67.45)
dim(Liste) c'est la dimension d'une liste (son nombre de termes)
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Snake
Avant d'essayer de le comprendre il faut déjà être assez doué. Je ne le comprends pas moi-même (peut-être en mettant tout le prog au clair?). Si tu ne l'as déjà pas fait je te conseille de tuto de mdr1 : http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-ti-basic . C'est déjà ça. De plus certaines des instructions sont des trucs d'optimisation assez complexe. Il ne faut aller plus vite que la musique comme on dit. Bref tout ça pour dire : es-tu sur que tu veuille en comprendre le fonctionnement maintenant ou par toi-même plus tard? Et est-ce qu'au final ça t'aidera vraiment si quelqu'un t'explique tout sans que tu réfléchisse?
Re: Snake
Je connais un snake plus long, plus joli, et mieux programmé que celui de Ratuss, mais qui ne vient pas de Tout-82, il s'agit de celui de Xpro si certains connaissent...
J'en ai uploadé une version modifiée sur ce topic
Pour ce qui est d'apprendre à programmer, c'est plus facile de poser les questions une par une
Mais nous serons ravis de t'aider !
J'en ai uploadé une version modifiée sur ce topic
Pour ce qui est d'apprendre à programmer, c'est plus facile de poser les questions une par une
Mais nous serons ravis de t'aider !
Re: Snake
Je peux essayer de vous expliquer plus tard quasiment tous les snakes intéressants de tout82. Je les ai étudié un par un pendant des jours.
Je peux déjà répondre aux choses déjà mentionnées.
Xpro utilise un balayage des routines à chaque changement de direction, je trouve ça bourrin mais ça marche, en permettant que chaque boucle soit épurée des codes des autres directions et de tout test.
L'idée d'épurer les boucles ne m'avait jamais préoccupé, pas avant que quelqu'un (PolyMorph je crois) ne lance la problématique, et Xsnake avait évidemment été mentionné à cette occasion.
Sangohan38 et Ratuss ont toujours abusés des Gotos. (les autres je ne sais plus)
Cependant il y a des raisons.
Voyez mon article dédié à DelVar/Lbl/End. La calculatrice parcoure les programme à la recherche des mots clés, mais pas de la même façon selon qu'elle cherche un Lbl ou un End/Else.
La recherche de End porte sur tous les ":" et l'interprétation des priorités opératoires pour détecter les ":" qui ne sont pas dans des chaines de caractères. La recherche des Lbl ne recherche que les retours à la ligne suivis de Lbl.
Ainsi il est possible que les Lbl soient plus rapides même si c'est rarement flagrant.
Mais les Lbl provoquent la recherche depuis le début du programme... ce qui gène si le programme est trop long.
Vibra a séparé la routine basée sur Ratuss du reste du programme, pour que les Goto/Lbl ne fassent pas ralentir.
J'ai moi-même créé des serpents de mauvaise qualité, puis inventé tout seul la même technique de pointeur dans liste utilisée avant moi par Ratuss,Vibra,Xpro,..., et après par Sandro ,...
Ce que j'ai fait de mieux est au TI-Concours, pas pris le temps de publier quand j'aurais pu y penser.
Les questions de pito :
fPart,iPart,ent,parDéc
http://tout82.free.fr/forum/sujet.php?sujet=2317
dim = longueur de la liste
.7349=fPart(Liste6(1 sert à vérifier que la liste n'a pas été piraté ou modifiée, puisque .7349 est ajouté à la liste lors des sauvegardes.
:6+50fPart((A+C)/50 calcule le reste de la division par 50 de A+C puis ajoute 6. Cela permet de créer un modulo par 50 et passer d'un bord de l'écran à l'autre.
:round(1+NfPart(E/N),0=>E fait un modulo par N et arrondi pour éviter des erreurs de calculs.
En effet utiliser fPart dans les calculs de division n'est pas parfaitement fiable.
Le pointeur E suit un cycle de 1 à N.
P c'est le niveau.
N c'est la longueur du serpent, enfin !
E est le pointeur dans la liste des coordonnées pour trouver les coodonnées de la queue du serpent et stocker la tête.
A et B sont les coordonnées, C et D sont les variations de coordonnées lors des déplacements.
Le Lbl C affecte P pour qu'il soit différent de si on avait choisi le niveau D. Cela permet d'avoir une seule routine pour deux niveaux.
Lbl 5 est suivi de la création d'une pomme à manger.
Lbl 2 : début de la routine normale.
Lbl 4 : collision avec obstacle ou pomme
Lbl 3 : endroit de reprise de la routine après création d'une pomme (en particulier si on en a mangé une), cela permet d'éviter des actions qui se répéteraient sinon.
Je peux déjà répondre aux choses déjà mentionnées.
Xpro utilise un balayage des routines à chaque changement de direction, je trouve ça bourrin mais ça marche, en permettant que chaque boucle soit épurée des codes des autres directions et de tout test.
L'idée d'épurer les boucles ne m'avait jamais préoccupé, pas avant que quelqu'un (PolyMorph je crois) ne lance la problématique, et Xsnake avait évidemment été mentionné à cette occasion.
Sangohan38 et Ratuss ont toujours abusés des Gotos. (les autres je ne sais plus)
Cependant il y a des raisons.
Voyez mon article dédié à DelVar/Lbl/End. La calculatrice parcoure les programme à la recherche des mots clés, mais pas de la même façon selon qu'elle cherche un Lbl ou un End/Else.
La recherche de End porte sur tous les ":" et l'interprétation des priorités opératoires pour détecter les ":" qui ne sont pas dans des chaines de caractères. La recherche des Lbl ne recherche que les retours à la ligne suivis de Lbl.
Ainsi il est possible que les Lbl soient plus rapides même si c'est rarement flagrant.
Mais les Lbl provoquent la recherche depuis le début du programme... ce qui gène si le programme est trop long.
Vibra a séparé la routine basée sur Ratuss du reste du programme, pour que les Goto/Lbl ne fassent pas ralentir.
J'ai moi-même créé des serpents de mauvaise qualité, puis inventé tout seul la même technique de pointeur dans liste utilisée avant moi par Ratuss,Vibra,Xpro,..., et après par Sandro ,...
Ce que j'ai fait de mieux est au TI-Concours, pas pris le temps de publier quand j'aurais pu y penser.
- Spoiler:
- Et depuis j'ai encore une nouvelle idée, qui cette fois devrait éviter tous les ralentissements et retards d'allongement que tout le monde a.
Les questions de pito :
fPart,iPart,ent,parDéc
http://tout82.free.fr/forum/sujet.php?sujet=2317
dim = longueur de la liste
.7349=fPart(Liste6(1 sert à vérifier que la liste n'a pas été piraté ou modifiée, puisque .7349 est ajouté à la liste lors des sauvegardes.
:6+50fPart((A+C)/50 calcule le reste de la division par 50 de A+C puis ajoute 6. Cela permet de créer un modulo par 50 et passer d'un bord de l'écran à l'autre.
:round(1+NfPart(E/N),0=>E fait un modulo par N et arrondi pour éviter des erreurs de calculs.
En effet utiliser fPart dans les calculs de division n'est pas parfaitement fiable.
Le pointeur E suit un cycle de 1 à N.
P c'est le niveau.
N c'est la longueur du serpent, enfin !
E est le pointeur dans la liste des coordonnées pour trouver les coodonnées de la queue du serpent et stocker la tête.
A et B sont les coordonnées, C et D sont les variations de coordonnées lors des déplacements.
Le Lbl C affecte P pour qu'il soit différent de si on avait choisi le niveau D. Cela permet d'avoir une seule routine pour deux niveaux.
Lbl 5 est suivi de la création d'une pomme à manger.
Lbl 2 : début de la routine normale.
Lbl 4 : collision avec obstacle ou pomme
Lbl 3 : endroit de reprise de la routine après création d'une pomme (en particulier si on en a mangé une), cela permet d'éviter des actions qui se répéteraient sinon.
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Sujets similaires
» LE Snake (celui de Ratuss)
» probleme snake : mouvement
» Problème jeux snake
» [JEU] Les deux Snake de Xpro en un seul !
» Problème avec le snake de Xpro
» probleme snake : mouvement
» Problème jeux snake
» [JEU] Les deux Snake de Xpro en un seul !
» Problème avec le snake de Xpro
Tout 82 :: Programmes :: Les Programmes des Internautes (TI-Basic z80) :: Aide à la programmation (TI-Basic z80)
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Dim 16 Oct 2022 - 21:11 par Wistaro
» Bonne année 2018!
Ven 2 Nov 2018 - 19:42 par Ti64CLi++
» Lancement du TI-Concours 2017 !
Sam 20 Mai 2017 - 0:27 par Paulo1026
» Chaînes Youtube des membres
Ven 19 Mai 2017 - 22:41 par Wistaro
» cacul du taux d'intêret
Ven 24 Mar 2017 - 21:50 par m@thieu41
» [Projet] Un mario by tout82
Dim 29 Jan 2017 - 14:09 par Wistaro
» Cherche documentation assembleur TI82stat
Mer 25 Jan 2017 - 12:29 par Ti64CLi++
» Probleme Ti-82 Stats fr
Jeu 12 Jan 2017 - 13:56 par Ti64CLi++
» ROM 82 stats.fr
Jeu 15 Déc 2016 - 10:24 par Ti64CLi++