| Jeu de Snake trop lent. [FINI TOUT EST OK] | |
|
|
| Auteur | Message |
|---|
loko Débutant

   Age : 17 Inscrit le : 09 Sep 2007 Messages : 11 Calculatrice : Ti 84+ Classe : 1S
 | Sujet: Jeu de Snake trop lent. [FINI TOUT EST OK] Dim 9 Sep - 19:08 | |
| 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: | :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 ;)
Dernière édition par le Mar 11 Sep - 19:14, édité 1 fois |
|
 | |
chicu Elite


   Age : 18 Inscrit le : 27 Mai 2007 Messages : 206 Calculatrice : ti82 ti84+ ti89tita Classe : TS SI
Impureté:
   (107/450) Dernière note en maths: 16.5/20
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Dim 9 Sep - 19:21 | |
| | Code: | :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: | :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 :). |
|
 | |
loko Débutant

   Age : 17 Inscrit le : 09 Sep 2007 Messages : 11 Calculatrice : Ti 84+ Classe : 1S
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Dim 9 Sep - 19:51 | |
| 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 ;) |
|
 | |
AdRiWeB Elite


   Age : 16 Inscrit le : 01 Juin 2007 Messages : 949 Localisation : Sur ma chaise Calculatrice : TI-84+, Nspire cas Classe : Grade 12 - Senior (Lycee americain)
Impureté:
   (-1/450) Dernière note en maths: 100 % ^^
 | |
 | |
loko Débutant

   Age : 17 Inscrit le : 09 Sep 2007 Messages : 11 Calculatrice : Ti 84+ Classe : 1S
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Lun 10 Sep - 18:51 | |
| 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 |
|
 | |
Ver2guerre Légende


   Age : 17 Inscrit le : 29 Sep 2006 Messages : 2472 Localisation : Le plus loin possible des casio Calculatrice : TI-89 tita x2 + TI 83 Plus Classe : MPSI
Impureté:
   (-1/100) Dernière note en maths: Je crains plutôt la prochaine...
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Lun 10 Sep - 19:05 | |
| 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 |
|
 | |
Mic Administrateur


   Age : 24 Inscrit le : 07 Sep 2004 Messages : 10021 Localisation : Orléans Calculatrice : Voyage 200 & TI-Nspire CAS Classe : Prof de Maths
Impureté:
   (56/450) Dernière note en maths: -/20
 | |
 | |
loko Débutant

   Age : 17 Inscrit le : 09 Sep 2007 Messages : 11 Calculatrice : Ti 84+ Classe : 1S
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Mar 11 Sep - 16:20 | |
| | ver2guerre a écrit: | 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. |
|
 | |
loko Débutant

   Age : 17 Inscrit le : 09 Sep 2007 Messages : 11 Calculatrice : Ti 84+ Classe : 1S
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Mar 11 Sep - 19:36 | |
| Voila mon nouveau code, tout marche ;)
| Code: | :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,"
|
|
|
 | |
Mic Administrateur


   Age : 24 Inscrit le : 07 Sep 2004 Messages : 10021 Localisation : Orléans Calculatrice : Voyage 200 & TI-Nspire CAS Classe : Prof de Maths
Impureté:
   (56/450) Dernière note en maths: -/20
 | |
 | |
Ver2guerre Légende


   Age : 17 Inscrit le : 29 Sep 2006 Messages : 2472 Localisation : Le plus loin possible des casio Calculatrice : TI-89 tita x2 + TI 83 Plus Classe : MPSI
Impureté:
   (-1/100) Dernière note en maths: Je crains plutôt la prochaine...
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Mar 11 Sep - 21:28 | |
| | J'avoue, très classe ! |
|
 | |
AdRiWeB Elite


   Age : 16 Inscrit le : 01 Juin 2007 Messages : 949 Localisation : Sur ma chaise Calculatrice : TI-84+, Nspire cas Classe : Grade 12 - Senior (Lycee americain)
Impureté:
   (-1/450) Dernière note en maths: 100 % ^^
 | |
 | |
tama Animateur


   Age : 17 Inscrit le : 19 Déc 2005 Messages : 9488 Localisation : quelque part en France... Calculatrice : TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Classe : MPSI (Xywez : c'est bon là ? :p)
Impureté:
   (-9/500) Dernière note en maths: 13/20
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Sam 15 Sep - 17:43 | |
| hmm encore des optimisations possibles ^^
| Code: | :ClrHome :5->A :DelVar KDelVar Q :5->G :1->Z :1->Y
:ClrAllLists :{9,17->dim([A] :Fill(0,[A] :50->dim(L1 :L1->L2 :Fill(3,L1 :Fill(3,L2 :2->D : :While K!=105 :getkey->K : :If K :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:1+L2(1->L2(1 :If D=3:L1(1)-1->L1(1 :If D=4:1+L1(1+1->L1(1 : :If L1(1)=0 or L1(1)=9 or L2(1)=0 or L2(1)=17 :Goto 99 :If 1=[A](L1(1),L2(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 Z=L2(1 :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,"
|
Bon j'ai vu vite fait le code (pas de goto dans des while !!) mais il est déjà pas mal
Pour l'optimiser encore plus tu peux regarder le topic "astuces z80" en post it de ce salon programmation ^^ _________________
<embed src="http://www.mirari.fr/OVRh.swf" width="550" height="150" align="middle" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptAccess="always"></embed> |
|
 | |
AdRiWeB Elite


   Age : 16 Inscrit le : 01 Juin 2007 Messages : 949 Localisation : Sur ma chaise Calculatrice : TI-84+, Nspire cas Classe : Grade 12 - Senior (Lycee americain)
Impureté:
   (-1/450) Dernière note en maths: 100 % ^^
 | |
 | |
tama Animateur


   Age : 17 Inscrit le : 19 Déc 2005 Messages : 9488 Localisation : quelque part en France... Calculatrice : TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Classe : MPSI (Xywez : c'est bon là ? :p)
Impureté:
   (-9/500) Dernière note en maths: 13/20
 | Sujet: Re: Jeu de Snake trop lent. [FINI TOUT EST OK] Lun 17 Sep - 18:10 | |
| aussi y a pas mal d'optimisations à faire là dedans ^^ _________________
<embed src="http://www.mirari.fr/OVRh.swf" width="550" height="150" align="middle" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptAccess="always"></embed> |
|
 | |
| Jeu de Snake trop lent. [FINI TOUT EST OK] | |
|