Page 1 of 4

Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 09 Sep 2007, 18:08
by loko
Bonjour a tous, j'ai crée un petit jeu de snake, mais apres avoir créé la base du jeu je me suis rendu compte que ça ramait pas mal si on allait au dela de 8 parties pour mon serpent.
Voici ma source, j'aimerais savoir si on pouvais faire la meme chose avec moins de code, ou avec des fonctions plus rapides a lire pour la calculatrice.

Code: Select all
:ClrHome
:5-A  // Taille du serpent
:ClrAllLists
:20-dim(L1
:20-dim(L2
:Fill(3,L1
:Fill(3,L2
:2-D
:While K!=105
:getKey-K
:If K!=0
:Then
:If K=24 and D!=2:1-D //Gauche
:If K=26 and D!=1:2-D //Droite
:If K=25 and D!=4:3-D //Haut
:If K=34 and D!=3:4-D //Bas
:End
:If D=1:L2(1)-1-L2(1) //Changement de
:If D=2:L2(1)+1-L2(1) //coordonée en
:If D=3:L1(1)-1-L1(1) //fonction de
:If D=4:L1(1)+1-L1(1) //D
:For(G,A,2,-1
:L1(G-1)-L1(G) // on transforme les coordonnées de
:L2(G-1)-L2(G) // la 1ere partie en 2eme partie ...
:End
:For(I,1,A             
:Output(L1(I),L2(I),"*"  // on affiche.
:If I=A:Output(L1(I),L2(I)," "
:End
:End
:ClrAllLists



On m'a conseillé de ne transformer que les coordonées de la premiere et derniere parties a chaque fois, mais je ne vois vraiment pas comment faire. Merci a tous ;)

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 09 Sep 2007, 18:21
by chicu
Code: Select all
:If K!=0
:Then
:If K=24 and D!=2:1-D //Gauche
:If K=26 and D!=1:2-D //Droite
:If K=25 and D!=4:3-D //Haut
:If K=34 and D!=3:4-D //Bas
:End
:If D=1:L2(1)-1-L2(1) //Changement de
:If D=2:L2(1)+1-L2(1) //coordonée en
:If D=3:L1(1)-1-L1(1) //fonction de
:If D=4:L1(1)+1-L1(1) //D


Moi j'aurais plutôt mis :

Code: Select all
:If K=24 and D!=2:L2(1)-1-L2(1)
:If K=26 and D!=1:L2(1)+1-L2(1)
:If K=25 and D!=4:L1(1)-1-L1(1)
:If K=34 and D!=3:4-L1(1)+1-L1(1)


Le !K=0 est inutile car si K n'est pas égal à 24 ou autre il fera rien.
Et puis séparé entre l'identification de la touche et l'ajustement des coordonnées ça ne sert pas à grand chose à mon avis :)
Sinon je ne comprend pas ta démarche de changer les coordonnées entre chaque parties à la limite tu gardes L1(1 à 5) et pareil pour L2, je ne comprend pas pourquoi tu veux le faire grimper vers l'avant :).

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 09 Sep 2007, 18:51
by loko
Il y a une probleme avec ton code: si tu dit qu'il ne doit avancer que si K=24 et D!=2, il n'avancera pas si tu n'appuie sur aucune touche or le snake ne s'arrete jamais normalement ;)

Mon if k!=0 sert a ne pas reverifier si k a une valeur alors que l'utilisateur n'a pas pressé de touches, c'est pour gagner du temps ;)

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 10 Sep 2007, 16:51
by Adriweb
sinon tu peux t'inspirer (librement ^^) de snakes déja fait ... sinon, sur une 84+, le code passe bien ! bien joué !

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 10 Sep 2007, 17:51
by loko
Heu merci mais je demandais de l'aide ^^'
J'ai reussit a le faire plus rapide et j'ai trouvé coment l'ameliorer encore ;) (niveau vitesse) je vous posterais la code optimisé puis le code avec les objectifs a manger plus tard ;), si vous avez des idées pour gagner de la vitesse je suis ouvert. Merci

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 10 Sep 2007, 18:05
by Ver2guerre
Hum, moi, j'ai tenté de programmer un snake sur 68k, mais je n'ai pas réussi à l'optimiser assez pour dépasser pèpère les 15 morceaux ... (j'avais rajouté les bonus) ...

Donc je pense qu'en ti-basic, bof bof, pas trop possible. Mais bon, tu peux quand même essayer

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 11 Sep 2007, 15:20
by loko
ver2guerre wrote:Hum, moi, j'ai tenté de programmer un snake sur 68k, mais je n'ai pas réussi à l'optimiser assez pour dépasser pèpère les 15 morceaux ... (j'avais rajouté les bonus) ...

Donc je pense qu'en ti-basic, bof bof, pas trop possible. Mais bon, tu peux quand même essayer


J'ai trouvé un moyen de mettre autant de morceaux que tu veux sans changer la vitesse ;) Je te poste le code demain et des que je retrouve mon cable je met la premiere version.

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 11 Sep 2007, 18:36
by loko
Voila mon nouveau code, tout marche ;)

Code: Select all
:ClrHome
:5-A:0-k
:A-G:0-Q
:1-Z:1-Y
:ClrAllLists
:{9,17}-dim([A]
:Fill(0,[A]
:50-dim(L1
:50-dim(L2
:Fill(3,L1
:Fill(3,L2
:2-D
:
:While K!=105
:getkey-K
:
:If K!=0
:Then
:If K=24 and D!=2:1-D
:If K=26 and D!=1:2-D
:If K=25 and D!=4:3-D
:If K=34 and D!=3:4-D
:End
:
:If D=1:L2(1)-1-L2(1)
:If D=2:L2(1)+1-L2(1)
:If D=3:L1(1)-1-L1(1)
:If D=4:L1(1)+1-L1(1)
:
:If L1(1)=0 or L1(1)=9 or L2(1)=0 or L2(1)=17:Goto 99
:If [A](L1(1),L2(1))=1:Goto 99
:1-[A](L1(1),L2(1))
:
:If Q!=1
:Then
:Randint(2,15-Z
:Randint(2,7-Y
:1-Q
:If [A](Y,Z)=1:0-Q
:If Q=1:Output(Y,Z,"X"
:End
:
:If L1(1)=Y and L2(1)=Z
:Then
:A+1-A
:0-Q
:End
:
:L1(1)-L1(G)
:L2(1)-L2(G)
:G-1-G
:Output(L1(G+1),L2(G+1),"*
:Output(L1(G),L2(G)," "
:0-[A](L1(G),L2(G))
:
:If G=1
:Then
:Output(L1(A),L2(A)," "
:0-[A](L1(A),L2(A))
:Output(L1(G),L2(G),"*
:A-G
:End
:
:End
:
:Lbl 99
:
:ClrAllLists
:{1,1}-dim([A]
:Disp "PERDU
:Pause
:ClrHome
:Disp "
:Disp "SCORE
:Disp A
:Disp "
:Disp "
:Disp "CREATED BY LOKO
:Pause
:ClrHome
:Output(1,1,"

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 11 Sep 2007, 20:28
by Ver2guerre
J'avoue, très classe !

Re: Jeu de Snake trop lent. [FINI TOUT EST OK]

Unread postPosted: 12 Sep 2007, 13:41
by Adriweb
pas mal ! bravo !! encore plus rapide qu'avant !!
mets-le sur TI-Bank si c'est pas déja fait !!