Le Forum de TI-BANK.fr

Le forum de la banque de programmes pour calculatrices graphiques Texas Instruments (aide débutants, résolution problèmes...).
Accueil­Portail­Calendrier­FAQ­Rechercher­S'enregistrer­Membres­Groupes­Connexion
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 Code snake

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
mp35
Débutant
Débutant


Masculin Age: 15
Classe: 1erS
Calculatrice(s): TI-82 stats.fr , TI collège , TI GALAXIE 40
Messages: 13
Efficacité: 0
Localisation: Rennes
Date d'inscription: 16/09/2009

MessageSujet: Code snake   Jeu 17 Sep - 12:17

Bonjour a tous,

Jvais vous parler de mon problème: le Snake (et oui encore)
Enfaite voila je vous monte la parti du code qui va vous servir:

Code:

:repeat K=105
:Pxl-on(Y,X
:X-(K=24)+(K=26)->X
:Y-(K=25)+(K=34)->Y
:end


Donc voila mon snake bouge bien mais le seul problème c'est que je n'ai strictement aucune idée de comment le faire avancé tout seul.
J'ai pas mal cherché , j'ai pas trouvé.
J'ai aussi analiser le code d'autre snake or il utilise des matrice et malheuresement je ne comprend pas leur fonctionement ni comment s'en servir pour un snake.

Donc je voudrais savoir si il a moyen de le faire avancé tout seul sans matrice.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Animateur
Animateur


Masculin Age: 18
Classe: oui. (2ème année à l'Epita, sinon)
Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:)
Messages: 10280
Efficacité: 29
Localisation: Paris ... dans un rayon de 15 km
Date d'inscription: 19/12/2005

Divers
Dernière note en maths: 13/20

MessageSujet: Re: Code snake   Jeu 17 Sep - 12:31

le faire avancer tout seul dans la même direction ?
en fait il faut pas faire comme ça, le mieux c'est de faire 2 variables, E et F par exemple (ou U et V ou ce que tu veux, mais évite X et Y parce qu'elle sont souvent utilisées pour autre chose et donc ça va tout mettre en l'air)
enfin bref, voici le bout de code qui pourrait aider, après les "//" c'est les commentaires :


//E = déplacement horizontal à chaque itération
//F = déplacement vertical à chaque itération
//K = dernière touche appuyée
//A = position X de la tête du serpent
//B = position Y de la tête du serpent

0->E
0->F //serpent immobile au départ
0->K //aucune touche pressée
1->A
1->B //ou ce que tu veux, c'est la position initiale du serpent

Repeat K=105
A+E->A
B+F->B //déplacement du serpent
Pxl-On A,B
getKey->K //raaaah c'est cette ligne que j'ai oublié

If K=24
Then
//déplacement à gauche
-1->E
0->F
End

If K=25
Then
//déplacement en haut
0->E
-1->F
End

If K=26
Then
//déplacement à droite
1->E
0->F
End

If K=34
Then
//déplacement en bas
0->E
1->F
End

//c'est sûrement possible d'optimiser ça, à toi de voir, je le donne en clair pour que tu comprennes le principe

//gestion des collisions (obstacles, bords ...)
End //fin de la boucle


Et voilà, à toi de faire ce que tu veux avec ensuite
Si y a quelque chose que tu comprends pas => post :)

_________________
Modérateur des salons z80

Lisez le Journal de tibank, y a du bon ! :)

Envie de nous voir IRL ? participez à la réunion Nord de tibank !


Dernière édition par tama le Jeu 17 Sep - 13:00, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://tamast.actifforum.com/index.htm
mp35
Débutant
Débutant


Masculin Age: 15
Classe: 1erS
Calculatrice(s): TI-82 stats.fr , TI collège , TI GALAXIE 40
Messages: 13
Efficacité: 0
Localisation: Rennes
Date d'inscription: 16/09/2009

MessageSujet: Re: Code snake   Jeu 17 Sep - 12:47

J'ai compris ton code.
Je l'ai mis sur la TI mais mon point ne bouge pas quand j'appuie sur les touches.
(la calculette ne me signale pas non plus d'erreur).

Et merci d'avoir repondu rapidement, je reviens vers 17h10.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Animateur
Animateur


Masculin Age: 18
Classe: oui. (2ème année à l'Epita, sinon)
Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:)
Messages: 10280
Efficacité: 29
Localisation: Paris ... dans un rayon de 15 km
Date d'inscription: 19/12/2005

Divers
Dernière note en maths: 13/20

MessageSujet: Re: Code snake   Jeu 17 Sep - 12:59

hum... c'est normal, j'ai oublié une ligne --"
code corrigé.

_________________
Modérateur des salons z80

Lisez le Journal de tibank, y a du bon ! :)

Envie de nous voir IRL ? participez à la réunion Nord de tibank !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://tamast.actifforum.com/index.htm
mp35
Débutant
Débutant


Masculin Age: 15
Classe: 1erS
Calculatrice(s): TI-82 stats.fr , TI collège , TI GALAXIE 40
Messages: 13
Efficacité: 0
Localisation: Rennes
Date d'inscription: 16/09/2009

MessageSujet: Re: Code snake   Jeu 17 Sep - 15:58

Ok nikel sa marche !! Mci
Mnt mon problème c'est que j'ai essayer d'optimiser en gardant l'idée des deux variables comme cela
Code:
:effdessin
:0->E
:0->F
:0->K
:40->A
:30->B
:repeat K=105
:A+E->A
:B+F->B
:Pxl-on(B,A                // J'ai inverser A et B il y avait un problème de direction
:codetouche->K        //J'ai la stats.fr
:E-(K=24)+(K=26)->E
:F-(K=25)+(K=34)->F
:end


Les direction sont bonnes mais le problème c'est que:
-si je fais gauche sa va allais a gauche (normale) et si après j'appuie sur haut sa avance en biais vers le haut(en diagonale quoi).
C'est comme si les direction s'ajoutait.

J'ai trouver cmt dire, sa fais exactement comme des vecteurs.

Autre exemple:
J'appuis haut (la tout va bien) puis j'appuie bas et le pixel au lieu de partir vers le bas il s'arète.


Donc je sais pas si mon optimisation est possible, peut-etre mis suis-je mal prix.
Merci
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marco
Elite
Elite


Masculin Age: 19
Classe: PSI ISEP
Calculatrice(s): TI 83+
Messages: 645
Efficacité: 17
Localisation: 78
Date d'inscription: 22/03/2009

Divers
Dernière note en maths: -/20

MessageSujet: Re: Code snake   Jeu 17 Sep - 16:43

Salut, tu peux garder le code de Tama avec EDIT pour le -
Code:
:If K différent de 0
:Then
:-(K=24)+(K=26)->E
:-(K=25)+(K=34)->F
:End

à la place de la série de condition.
Car si K=0, on n'a appuyé sur aucune touche, donc le serpent continue dans la même direction.

_________________


Dernière édition par Marco le Jeu 17 Sep - 20:01, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://marco781.free.fr
mp35
Débutant
Débutant


Masculin Age: 15
Classe: 1erS
Calculatrice(s): TI-82 stats.fr , TI collège , TI GALAXIE 40
Messages: 13
Efficacité: 0
Localisation: Rennes
Date d'inscription: 16/09/2009

MessageSujet: Re: Code snake   Jeu 17 Sep - 19:30

Je comprend pas trop :S.
Si je garde le code de tama pourquoi faut-il rajouter cela
Code:
:If K différent de 0
:Then
:(K=24)+(K=26)->E
:(K=25)+(K=34)->F
:End

Ou bien alors doit-il remplacer d'autre ligne de code si oui lequels ?


Dernière édition par mp35 le Jeu 17 Sep - 19:46, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marco
Elite
Elite


Masculin Age: 19
Classe: PSI ISEP
Calculatrice(s): TI 83+
Messages: 645
Efficacité: 17
Localisation: 78
Date d'inscription: 22/03/2009

Divers
Dernière note en maths: -/20

MessageSujet: Re: Code snake   Jeu 17 Sep - 19:44

mp35 a écrit:
Je comprend pas trop :S.
Si je garde le code de tama pourquoi faut-il rajouter cela EDIT pour le -
Code:
:If K différent de 0
:Then
:-(K=24)+(K=26)->E
:-(K=25)+(K=34)->F
:End


Les valeurs dans E et F indiquent le déplacement horizontal et vertical. Si E vaut 1 ou -1, F vaut 0 car on ne se déplace qu'horizontalement ou verticalement, pas les deux en même temps. De même si F vaut 1 ou -1.
Si on appuie sur aucune touche, K=0, et le serpent doit continuer dans la direction précédente, d'où le If.
Le code remplace les If de Tama :
Code:
If K=24
Then
//déplacement à gauche
-1->E
0->F
End

If K=25
Then
//déplacement en haut
0->E
-1->F
End

If K=26
Then
//déplacement à droite
1->E
0->F
End

If K=34
Then
//déplacement en bas
0->E
1->F
End

_________________


Dernière édition par Marco le Jeu 17 Sep - 20:00, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://marco781.free.fr
Bisam
Elite
Elite


Masculin Age: 32
Classe: Prof de Maths Sup
Calculatrice(s): Voyage 200 + TI 92 (de 1996)
Messages: 793
Efficacité: 7
Localisation: Lyon
Date d'inscription: 11/03/2008

Divers
Dernière note en maths: 14.8/20 à la 2ème épreuve de l'agreg 2000

MessageSujet: Re: Code snake   Jeu 17 Sep - 19:49

Euh, le code qui marche c'est plutôt :
Code:
:If K différent de 0
:Then
:(K=26)-(K=24)->E
:(K=34)-(K=25)->F
:End
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marco
Elite
Elite


Masculin Age: 19
Classe: PSI ISEP
Calculatrice(s): TI 83+
Messages: 645
Efficacité: 17
Localisation: 78
Date d'inscription: 22/03/2009

Divers
Dernière note en maths: -/20

MessageSujet: Re: Code snake   Jeu 17 Sep - 19:58

Ah oui, pardon ^^

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://marco781.free.fr
mp35
Débutant
Débutant


Masculin Age: 15
Classe: 1erS
Calculatrice(s): TI-82 stats.fr , TI collège , TI GALAXIE 40
Messages: 13
Efficacité: 0
Localisation: Rennes
Date d'inscription: 16/09/2009

MessageSujet: Re: Code snake   Jeu 17 Sep - 20:11

Ok j'ai compris !!
Ca me fais une belle optimisation tout ca. MCI !!

Sinon j'ai réfléchie un peu et si je veux pouvoir effacé le corp du snake au fur et a mesure qu'il avance il va me faloire utilisé les matrice si je ne me trompe pas.Car si j'efface les coordonné de A,B c'est la tête que j'efface.Jme trompe ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jacques
Grand Initié
Grand Initié


Masculin Age: 16
Classe: 1èreS
Calculatrice(s): ti84+SE
Messages: 73
Efficacité: 1
Date d'inscription: 25/08/2009

MessageSujet: Re: Code snake   Jeu 17 Sep - 20:36

Non, en fait il faudrait que tu crées des listes pour stocker les coordonnées (une liste pour les abscisses, et une pour les ordonnées).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.tisoftwares.net16.net
mp35
Débutant
Débutant


Masculin Age: 15
Classe: 1erS
Calculatrice(s): TI-82 stats.fr , TI collège , TI GALAXIE 40
Messages: 13
Efficacité: 0
Localisation: Rennes
Date d'inscription: 16/09/2009

MessageSujet: Re: Code snake   Jeu 17 Sep - 21:51

Bon après une heure d'essei j'arrive a ca :
Code:
:EffDessin
:0->N
:0->L
:0->E
:0->F
:0->K
:40->A
:30->B
:repeat K=105
:N+1->N
:A+E->A
:B+F->B
:Pxl-On(B,A
:codeTouche->K
:If K diferent de 0
:Then
:(K=26)-(K=24)->E
:(K=34)-(K=25)->F
:Chaine(L1,{A})->L1
:Chaine(L2,{B})->L2
:Dim(L1)->U
:Dim(L2)->V
:L+1->L
:End
:If N=10
:Then
:L+1->L
:Pxl-Off(L1(U),L2(V))
:End
:End


Résultat le prm lag et surtout sa ne séface pas.Bref je suis noyé
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Animateur
Animateur


Masculin Age: 18
Classe: oui. (2ème année à l'Epita, sinon)
Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:)
Messages: 10280
Efficacité: 29
Localisation: Paris ... dans un rayon de 15 km
Date d'inscription: 19/12/2005

Divers
Dernière note en maths: 13/20

MessageSujet: Re: Code snake   Jeu 17 Sep - 23:22

hmm c'est quoi L et N ?

_________________
Modérateur des salons z80

Lisez le Journal de tibank, y a du bon ! :)

Envie de nous voir IRL ? participez à la réunion Nord de tibank !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://tamast.actifforum.com/index.htm
mp35
Débutant
Débutant


Masculin Age: 15
Classe: 1erS
Calculatrice(s): TI-82 stats.fr , TI collège , TI GALAXIE 40
Messages: 13
Efficacité: 0
Localisation: Rennes
Date d'inscription: 16/09/2009

MessageSujet: Re: Code snake   Ven 18 Sep - 7:44

Alors le "L" je ne m'en sert pas enfaite .:S
Et le N c'est parce que quand je démarais
le snake je soupçonnai le programme d'effacé la tête dès le débuts,tandis que la sa me laisse le temps d'avancé un peu sans qu'il m'efface la tête.(Mais sa ca marche pas).
Je connaissait pas trop les liste j'ai essayé des truc mais rien de très convaincant.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 

Code snake

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Forum de TI-BANK.fr :: Forum TIz80 :: Programmation-
Poster un nouveau sujet   Répondre au sujet