Poster un nouveau sujet Poster une réponse Page: 1,      >>
Snake
Auteur Message
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Mar 29 Mai 2012, 16:53   Citer 

Bonjour,
Depuis quelques temps j'essaie de faire un snake mais quelques problèmes se posent.

Le jeu se joue dans une fenêtre ou Xmin/Ymin =-10. XMax/YMax=10



Code

:EffDessin
:0->X:0->Y:-1->S:0->K:0->L
:Lbl 1
:M+1->M
:Pt-Off(B,C
:entAleat(-10,10->B
:entAleat(-10,10->C
:Pt-On(B,C
:Repeat B=X et C=Y
:Texte(57,0,M
:X+K->X
:Y+L->Y
:Pt-On(X,Y,2
:Pt-Off(X-K,Y-L,2
:If X>10:Then:X-21->X:End
:If Y>10:Then:Y-21->Y:End
:If X<-10:Then:X+21->X:End
:If Y<-10:Then:Y+21->Y:End
:CodeTouche->A
:If A=25
:Then
:0.5->L:0->K:End
:If A=26
:Then
:0->L:0.5->K
:End
:If A=24
:Then
:-0.5->K:0->L
:End
:If A=34
:Then
:0->K:-0.5->L
:End
:End
:Goto 1



Quelques problèmes sont à régler notamment le Goto 1 qui ralentit un peu le jeu.
Il y a aussi le problème de la taille du snake que je ne sais pas modifier.
Pour l'instant le snake est invulnerable ce qui n'est pas si mal godgrace.gif .
.

 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 29 Mai 2012, 17:00   Citer 


Citer
Le jeu se joue dans une fenêtre ou Xmin/Ymin =-10. XMax/YMax=10



étrange, mais si tu veux...

à première vue, tu peux déjà optimiser
Code
:If X>10:Then:X-21->X:End
:If Y>10:Then:Y-21->Y:End
:If X<-10:Then:X+21->X:End
:If Y<-10:Then:Y+21->Y:End

par
Code
:If X>10:X-21->X
:If Y>10:Y-21->Y
:If X<-10:X+21->X
:If Y<-10:Y+21->Y



Mais c'est déjà vachement bien, j'ai rarement vu un code de snake aussi court... serait-ce parce que ton snake ne mesure que 1 de long ? eyeonly.gif

 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Mar 29 Mai 2012, 18:32   Citer 

Oui xD
S'il est possible de m'apprendre comment modifier sa taille je serai très reconnaissant!

 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 29 Mai 2012, 21:36   Citer 

ah ben ça tongue.gif

Tu demandes un des trucs les plus durs à faire en Basic...

Je n'ai jamais programmé de Snake, je ne sais pas trop comment faire...

Je pense en tout cas que tu vas devoir utiliser des listes pour enregistrer les coordonnées des points composant le serpent.

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Mar 29 Mai 2012, 21:42   Citer 

Peut-être deux listes qui sauvegardent les coordonnées du snake. eyeonly.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 29 Mai 2012, 22:08   Citer 

quelle est la différence avec ce que je viens de dire ???

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Mar 29 Mai 2012, 22:14   Citer 

J'ai optimisé ma phrase elle est plus courte ... (nan bon OK j'avais oublié de lire la fin du message *sifflote*)

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 29 Mai 2012, 23:07   Citer 

Il faut stocker les coordonnées dans des listes et faire défiler les coordonnées.
Cycliquement on remplace de vielles coordonnées par de nouvelles.
Et la période correspond à la longueur du serpent.

Comme dans tous les jeux, ce défilement peut se faire de plusieurs manières.
Quelques méthodes classiques sont visibles dans les snakes de ce forum mais aussi dans d'autres jeux.
https://tout82.pages-perso.free.fr/forum/sujet.php?message=43886#43886
https://tout82.pages-perso.free.fr/forum/sujet.php?message=43640#43640
ratuss : snake extra fluide
vibra : snake 10 labyrinthes qui reste correctement fluide
(lien de téléchargement par titozzz)
https://tout82.pages-perso.free.fr/forum/sujet.php?sujet=2954&page=1


----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Mer 30 Mai 2012, 18:28   Citer 


Code

For(x,0,10,1
X->dim(L1
End




J'ai essayé ce petit programme mais il ne fonctionne pas.
Dans les liste il n'y a que des 0 dans L1.
Je suppose que je suis sur une mauvaise piste...

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Mer 30 Mai 2012, 18:42   Citer 

Pas tant que ça.
Juste que l'instruction dim sert à dimensionner une liste. Si tu mets 10->dim(L1) tu auras une liste 1 à 10 emplacements mais vu que tu n'as défini aucun des emplacements en questions, ils seront tous vides ... d'où les 0.

Afin de remplir -par exemple- le cinquième terme de la liste1 tu devras utiliser cette instruction : 1->L1(5)

Je te laisse revoir ton algorithme winkle.gif

(ps : regarde le lien dans ma signature en progra si tu n'as pas compris - chapitre listes)

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mer 30 Mai 2012, 18:51   Citer 

Je sens aussi que tu vas devoir apprendre a utiliser la commande seq( pour ce genre de scrolling de liste...

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 30 Mai 2012, 18:59   Citer 

Ce que tu viens d'écrire correspond à l'allongement de la liste et donc du serpent.
Il faut aussi manipuler les coordonnées.
Voici un exemple grossier.

Code
ClrDraw
ClrList L1
1->X
For(A,1,15  // s'allonger
A->dim(L1
For(B,1,4  // se déplacer plusieurs fois
pxl-Off(1,L1(1
For(C,2,A  // permute les valeurs de la liste
L1(C->L1(C-1
End
X+1->X
X->L1(A
pxl-On(1,X
Pause
End
End

Je ne pense pas que la fonction seq() soit très utile.
Si tu y tiens : seq(L1(X),X,2,dim(L1))
En revanche la fonction chaine()/augment est utile pour concaténer des listes.

Je vous invite à utiliser un bug de la TI :
SortA(L1,L2) permute la première valeur de L2 lorsque L1 est constante.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Jeu 31 Mai 2012, 18:33   Citer 

Effectivement je ne connaissait pas très bien les listes.
J'ai réussi a faire un petit programme qui ressemble un peu à celui de Linkakro
mais il y a toujours des points que je ne comprend pas dans son programme.
Notament les For(qui ne contiennent que 3 caractères.


Code

EffDessin
1->A:1->B:5->C
While 1
For(X,1,5,1
For(P,B,C,1
P->L1(X)
Pt-Off(0,L1(X),2
Pt-On(0,L1(X),2       // jusque la ça va!
CodeTouche->F
If F=25
Then
B+1->B:C+1->C
End
If F=34
Then
B-1->B
C-1->C
End
End
End
End




quand je lance ce programme, ce qui est censé ressembler a un snake s'étale sans s'effacer.


P.S le tutoriel m'a bien été utile
Merci de votre aide

 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Jeu 31 Mai 2012, 18:46   Citer 

Ah aussi j'ai rajouté un sorte de barre de "restatage"(comme j'aime pas mourrir godgrace.gif) à chaque fois que le snake passe dessus les points reviennent à 0. Mais des fois les points apparaissent sur cette barre ce qui est assez embêtant. Je voulais savoir s'il est possible de sortir un nombre aléatoire excepté 1.

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Jeu 31 Mai 2012, 19:00   Citer 

Un For(A,1,10 sous-entend For(A,1,10,1. C'est exactement la même chose.
Si tu veux plus d'infos tu peux piocher dans mes liens-signature winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 31 Mai 2012, 19:52   Citer 

Pour générer un nombre aléatoiore autre que la queue, il faut une boucle qui teste la présence de la queue et recommence à générer un aléatoire jusqu'à trouver un aléatoire valide.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Ven 08 Jui 2012, 18:39   Citer 

Bon j'ai trop de mal à le mettre en place crazy.gif j'arrête pour le moment.
Merci de votre aide.

 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Ven 22 Jui 2012, 10:18   Citer 


Code

0->G
:Lbl 1
:M+1->M
:Pt-Off(B,C
:entAleat(-10,10->B
:entAleat(-10,10->C
:Pt-On(B,C

:Repeat B=X et Y=C
:G+1->G
:X+K->X
:Y+L->Y
:Pt-off(L1(G-M),L2(G-M)
:X->L1(G
:Y->L2(G
:L1(G->L1(G-1
:L2(G->L2(G-1
:Pt-on(L1(G),L2(G




Parfait non? bigmouth.gif
Le serpent grandit en fonction de ce qu'il bouffe!!
Seul petit hic sa remplit trop L1 et L2 ce qui me prend 4000octet par partie de 2min godgrace.gif 18 octets par boucle vous pouvez compter!
En fait, il y a 2 petits hic!
Il va trop lentement... Si vous avez des idées pour l'optimiser à part changer de calculette godgrace.gif

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Ven 22 Jui 2012, 11:05   Citer 

Les snakes ne sont malheureusement jamais très rapide.
Le meilleur snake qui avance a une bonne vitesse (que je conaisse) est celui de Ratuss mais sérieusement je n'ai pas tout compris dans le programme.
Donc voila ... eyeonly.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Ven 22 Jui 2012, 11:08   Citer 

Dans le mien?
Sinon deja test 1 snake sur TI 84 il allait hiper vite!
Que se passe-t-il si la mémoire de la calculatrice est saturée?

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Ven 22 Jui 2012, 11:51   Citer 

Non dans le programme de Ratuss. Enfin je comprends l'architecture générale mais dans le détail des fois ... notgood.gif

LA saturation de la mémoire RAM ralentit justela calculatrice. Et si tu n'as plus du tout de RAM tu ne pourras pas faire aucun calcul du genre "1+1=?".

Et si c'est plus rapide sur TI-84 c'est simplement qu'en général on laisse les programmes dont on se sert peu dans l'archive --> beaucoup de RAM dispo. Comme tu n'as pas de flash sur TI-82 j'te laisse imaginer winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Ven 22 Jui 2012, 12:56   Citer 


Citer : TheK

Et si c'est plus rapide sur TI-84 c'est simplement qu'en général on laisse les programmes dont on se sert peu dans l'archive --> beaucoup de RAM dispo. Comme tu n'as pas de flash sur TI-82 j'te laisse imaginer



Faux.
C'est surtout une différence de processeur, la 82 est cadencée a 6MHz, la 84+ à 15MHz, soit plus du double.

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Ven 22 Jui 2012, 13:04   Citer 

Ça vient pas également de la RAM disponible ?

Et les 84+ dont tu parles ne sont-elles pas les anciennes à 48Ko de RAM ? Les récentes (dont la mienne) n'en ont que la moitié ...

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Ven 22 Jui 2012, 13:20   Citer 

La différence de RAM libre vient de l'OS je crois (pas sur).

Les anciennes avec l'OS 2.43 (sans mathprint) en ont plus.
La tienne avec le nouvel OS 2.53Mathprint est plus gourmand en mémoire.

Mais les nouvelles ont aussi le processeur en 15MHz, j'en suis certain.

 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Ven 22 Jui 2012, 16:29   Citer 

Et pour le snake vous avez des idées pour éviter de se retrouver avec des listes ultralongues? ^^

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
blg_flg



Autorisation : Membre
Nb de messages : 646
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Ven 22 Jui 2012, 16:59   Citer 

Tu dois pouvoir faire ça avec des matrices, je pense. Mais je ne sais pas si ça change bcp. De toute façon la longueur des listes peut être énorme.

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Ven 22 Jui 2012, 17:29   Citer 

Tu peux m'expliquer ton programme parce que j'ai pas tous compris là :

Code
0->G
:Lbl 1
:M+1->M      //M est égale à combien à l'origine ?
:Pt-Off(B,C
:entAleat(-10,10->B
:entAleat(-10,10->C
:Pt-On(B,C

:Repeat B=X et Y=C
:G+1->G
:X+K->K     //qu'est-ce que représente K ?
:Y+L->L     //qu'est-ce que représente L ?
:Pt-off(L1(G-M),L2(G-M     //M doit donc toujours être inférieur à G mais ici G=0
:X->L1(G
:Y->L2(G
:L1(G->L1(G-1     //G=1 donc G-1=0 ça te fait une erreur non ?
:L2(G->L2(G-1
:Pt-on(L1(G),L2(G
:End



Si j'ai bien compris, L1 et L2, tu t'en sert pour les coordonnées du serpent. Dans ce cas, le grand ralentissement vient selon moi du fait que tu garde des nombres inutiles dans tes listes au lieux de les supprimer au fur et à mesure.

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Ven 22 Jui 2012, 17:53   Citer 

Je vais faire vite et simple
M c'est le compteur de pomme mangées (le programme est pas fini la, tu peu voir la partie presque complete page1)
K et L sont les incréments de X et Y, déterminés par codetouche
Pour G=0 c'est sensé me faire erreur mais en fait je l'ai commencé a 1 sur ma calculatrice et j'ai mal recopié
1->G
puis l'incrémentation donc au final Gmin=2
Au niveau de la vitesse j'avoue il va pas super vite mais pour l'instant la différence de vitesse entre le début et la fin ne se remarque pas trop

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 22 Jui 2012, 19:35   Citer 

Pour accélérer le programme il faut réduire radicalement le poids des instructions ou changer de structure.
La structure que j'ai posté précédemment est relativement simple mais est loin d'être la plus rapide...

Tu as écrit quelque chose de débile :
Code

:X+K->K   // à remplacer par X+K->X
:Y+L->L   // à remplacer par Y+L->Y

Cet été je prendrai peut-être le temps d'enfin rassembler les méthodes que j'ai trouvé ou constaté pour des structures de snakes.

( Je devrais d'ailleurs terminer le snake que j'ai bacclé pour le Ti-Concours.
Il est incomplet mais extrèmement rapide. )

( Moi j'ai longement étudié les snakes de vibra et ratuss, j'ai presque tout compris (après des heures de lecture)
Donc si cela vous prend de poser des question à leur propos je peux me pencher à nouveau dessus. )


----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Ven 22 Jui 2012, 21:03   Citer 

Je ne connais pas celui de vibra ... Je devrais aller jeter un coup d'oeil ... Hé dites qqun (je pense surtout aux anciens ^^) sait si coc5 en à fait un de snake ? Parce vu moment il programmait ses trucs (j'ai son pong contre IA) c'était impressionnant ...

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Ven 22 Jui 2012, 22:04   Citer 

pour le X+K->K c’était juste un erreur de recopiage bon je vais essayer de copier sur les autres!

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Ven 22 Jui 2012, 23:24   Citer 

Pour corriger tes erreurs de frappe il y a un bouton "editer" en haut adroite de ton post winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Ven 22 Jui 2012, 23:58   Citer 

Non mais ce qui ralentit ton programme c'est le fait que tes listes L1 et L2 augmentent à l'infini (999 chacune en fait avant de tomber sur une Erreur : Dim Invalide). Il faudrait donc que les dimensions de chacune soit de la taille du serpent.

Linkakro t'avait dit plus haut d'utiliser un bug de la TI. Ici, tu peux l'utiliser en remplissant une nouvelle liste L3 de 0. De plus, pour ne pas ralentir avec une nouvelle liste, il faut que ses dimensions augmentent à chaque fois que le serpent à manger une pomme.
Une fois que t'as fait ça, tu mets quelque chose comme ça dans ta boucle :

Code

M+?->dim(L1
M+?->dim(L2
M+?->dim(L3     //Les ? représente la taille initiale du serpent
Repeat...
...
Tricroi(L3,L1
Tricroi(L3,L2
X->L1(M+?      //Dans ce cas, ton serpent augmente d'un point à chaque fois que tu manges une pomme
Y->L2(M+?        et sa taille initiale est de ?


Bon, vu l'heure j'ai peut être fait une bêtise mais l'idée est là godgrace.gif

Sinon, dans un snake quand on appuie sur aucune touche, le serpent "continue sur sa lancée". Et oui, sinon tu n'as qu'à t'arrêter quand il y a une pomme un peu plus dur à attraper mais le jeux serait pas très amusant.
Donc je te conseille d'ajouter ça ou quelque chose de semblable dans ton programme :

Code
If non(A:G->A     //G pourrait être n'importe quelle variable mais avec la                       
                    méthode décrite au-dessus, tu ne devrait plus en avoir besoin donc j'ai pris G
.5(A=25)-.5(A=34->L     //Ca remplace les conditions que tu as mis à l'origine et est plus rapide
.5(A=26)-.5(A=24->K
A->G



----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Sam 23 Jui 2012, 12:09   Citer 

Tricroi(L3,L1
Tricroi(L3,L2
Je n'ai pas très bien compris a quoi ça sert, ce sont les coordonnées du snake d’ailleurs ça me met ERREUR DIM dessus
sinon l'idée pour le faire avancer est super happy.gif

 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 23 Jui 2012, 12:16   Citer 

si tu as un erreur dim, c'est soit qu'une des listes est vide, soit qu'elles n'ont pas toute la même dimention

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Sam 23 Jui 2012, 12:19   Citer 

L'erreur dim vient probablement du fait que L3 n'a pas les mêmes dimensions que L1 et L2.
Sinon, pour que tu comprennes bien à quoi sert ce "bug", essaie dans l'écran principal : en fait, quand L3 est remplie de 0 ça décale tous les termes de L1 et L2 vers la gauche eyeonly.gif (oui regarde dans essaie dans l'écran principal et tu verras godgrace.gif ). Donc le but c'est de ne modifier que le dernier terme de L1 et L2 qui vont être modifiés à chaque fois que le serpent avance.

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Sam 23 Jui 2012, 12:30   Citer 

ahh.gif ça déchire! enfin un snake qui fonctionne correctement et je comprend
comment! glasses.gif
Bon après je ne pourrai pas me vanter de l'avoir fait tout seul cry.gif
Il faut aussi rajouter
0->L3(M+1
Merci a tous de votre aide bigmouth.gif

 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Sam 23 Jui 2012, 12:34   Citer 


Citer
Il faut aussi rajouter
0->L3(M+1


Met plutôt M+1->dim(L3
Vu que tu n'édites pas les termes de L3 ça revient ua même mais tu gagnes 1 octet glasses.gif

Sinon, comme tu utilises la fonction Pt et non Pxl, tu peux ajouter ",2" à la fin pour que ce ne soit pas des points mais des petits carrés qui composent le serpent. Persalteas décrit cette fonction dans un de ses articles.

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Sam 23 Jui 2012, 13:31   Citer 

Tu peux aussi limiter la taille des listes de ton snake dès le départ, du genre 99->dim(L1 etc. Ou une condition du genre If L1(100:Pause

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Sam 23 Jui 2012, 13:34   Citer 

Pour quoi faire ?
Si le serpent est plus grand et qu'il est en train de "péter un score" ça serait quand même bête de l'arrêter, non ?

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Sam 23 Jui 2012, 13:36   Citer 

Je suis d'accord. 99 et 100 n'étaient que des exemples ...
Il faut trouver le juste milieu winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Sam 23 Jui 2012, 13:53   Citer 

Donc si j'ai bien compris, tu veux définir la taille de la liste dès le départ ?
Dans ce cas, je pense pas que ça soit une bonne idée parce que les listes prendraient énormément de mémoire dès le début et soit elles en prendront plus qu'avec la méthode que j'ai décrite à la page précédente, soit elles en prendront moins mais dans ce cas le jeux s'arrête et le joueur se retrouve pénalisé...

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
blg_flg



Autorisation : Membre
Nb de messages : 646
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Sam 23 Jui 2012, 14:07   Citer 

Peut-être que définir les tailles des listes au départ ne ralentiraient pas le snake dès le début?

 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Sam 23 Jui 2012, 14:12   Citer 

Je crois que je vais reprend le snake de une case au moin il ralentissait pas et il n'y avait pas à se casser la tête godgrace.gif

 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Sam 23 Jui 2012, 15:10   Citer 


Citer
Je crois que je vais reprend le snake de une case au moin il ralentissait pas et il n'y avait pas à se casser la tête


Si tu veux mais dans ce cas n'appelle pas ça un snake mais un point qui bouge laugh.gif
Plus sérieusement, utilise la méthode que je t'avais montré à la page précédente qui marche.

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Sam 23 Jui 2012, 15:19   Citer 

Ça ne ralentirait pas tant que ça des listes prédéfinies au contraire ! Tu aurais ça de moins à faire (incrémenter les listes) dans la boucle principale. Et si tu me crois pas ben va test le snake de Ratuss godgrace.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Sam 23 Jui 2012, 15:24   Citer 

Ca peut ne pas ralentir si on modifie bien le dernier terme de la liste à chaque fois et non toute la liste. Mais par contre la difficulté au niveau des calculs à faire pour estimer la taille des listes... frozen.gif

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 23 Jui 2012, 16:05   Citer 

La méthode de permutation que je vous ai montré est le gros problème en fait, car toute la liste est manipulée à chaque boucle, ce qui ralentit nécessairement !
L'astuce avec SortA() est intégrée à l'os donc est plus rapide que mon exemple explicite, mais cela ralentit quand même progressivement avec la longueur.

L'autre structure que je connais consiste à utiliser un "pointeur", une référence de position variable dans une liste fixe (on déplace la référence au lieu de déplacer le contenu de la liste).
Ainsi la longueur de la liste n'a aucune influence.
Voici un extrait de mon dernier snake :
Code
Repeat K
Y+A-63int((Y+A)/63->Y
X+B-96int((X+B)/96->X

If pxl-Test(Y,X-1
Then
If X-J and Y-I
Return
Pt-Off(X,-Y
Repeat not(pxl-Test(I,J-1
1+3randInt(0,20->I
1+3randInt(0,31->J
End
Pt-On(J,-I,3
N+1->N
99->L1(N  // La commande d'effacement suivante sera en dehors de l'écran.
99->L2(N  // On retarde un effacement, d'où un allongement.
End

M+1->M
If M=N+1
1->M
Pt-Off(L2(M),-L1(M),2  // effacement d'une queue
Pt-On(X,-Y,2           // affichage d'une tête
X->L2(M
Y->L1(M
getKey->K
End
// ici est effectué le changement de direction, la pause, ...

code édité le 24juin avec quelques autres commentaires

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Sam 23 Jui 2012, 16:26   Citer 

Ah oui, je ne connaissais pas du tout cette méthode.
Du coup, ça m'a fait pensé à quelque chose, ne calculer que les coordonnées de la "tête" et effacer les points X+K(M+1 et Y+L(M+1. Je pense que c'est faisable vu qu'il n'y a que la tête qui peut faire perdre le joueur (rentrer en contact avec les parois ou avec le serpent lui-même).
Ca accélérerait sacrément le jeux ça, non ?

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Dim 24 Jui 2012, 11:50   Citer 

Je doit avoir un problème ou alors mon niveau est loin du votre mais je ne comprend (presque) jamais les programmes de Linkakro
d'ailleurs j'ai comme l'impression que mon niveau en ti basic régresse cry.gif

Si on presse une touche la boucle ne se répète plus?
63/96 correspondent aux dimensions de l'écran à quoi servent-ils?
If pxl-test(Y,X-1 pourquoi X-1
"return" c'etait un sous programme? ^^
pareil pourquoi -Y dans pt-off(X,-Y
99->L1(N 99 est une valeur spéciale ou un nombre qui paraissait etre un juste milieu?
je crois avoir presque tout demandé, il y a tellement de négatifs que je ne m'y retrouve plus
peu-être que si je faisais quelques efforts sa passerai mieu godgrace.gif

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Poster un nouveau sujet Poster une réponse Page: 1,      >>





  Page générée en 6 requêtes