Votre question

Problème programmation Snake ti 84+

Tags :
  • Calculatrice
  • Programmation
Dernière réponse : dans Programmation
4 Décembre 2007 12:07:25

Bonjour à tous ! :hello: 
Je me suis lancé dans la programmation d'un snake sur calculatrice ( Ti 84+ ) et j'ai déjà un peu avancé, mais là je suis tombé sur un petit problème : :??: 

Lorsque j'utilise un "getkey" dans la boucle ("while") qui dessine mon serpent, pour permettre les changement de direction, ça met le jeu en pause en attendant que je presse une touche pour dessiner un nouveau bout de serpent dans la direction choisie. Donc sa fonctionne, mais je voudrais que le serpent continue a avancer sans attendre que je presse une touche.

Voilà, j'espère avoir été assez clair dans mon explication et que vous allez pouvoir m'aider.
Merci. :D 

PS : Si vous connaissez un tuto de création de snake en Ti-Basic, c'est suffisant, merci.

Autres pages sur : probleme programmation snake

4 Décembre 2007 20:41:20

Salut,

Tu fais une condition : If K = 0 alors continuer. Sinon, prendre le changement de direction.
Bien entendu, si tu appuies sur aucune touche getkey vaut donc 0 !
Ta boucle peut donc ce boucler sans être bloquer ;) 
5 Décembre 2007 18:16:04

Merci, je vais tester ça tout de suite.
Contenus similaires
5 Décembre 2007 20:17:49

Désolé, mais ça ne marche toujours pas, je tombe sur le même problème, ma boucle attend que j'appuie sur une touche pour continuer. Où dois-je positionner le getkey.
Avec un code source déjà fait, ce serait plus simple si quelqu'un aurait le courage de m'en écrire un juste pour diriger, même un seul pixel, pour voir.
Merci.
5 Décembre 2007 22:36:17

Post déjà ce que tu as fait. Ensuite, on te dira ce qui ne vas pas.
6 Décembre 2007 20:32:48

Ok, je prépare ça.
6 Décembre 2007 21:12:57

Voici mon code ( Pour l'exemple je n'utilise qu'un pixel et non un serpent ) :

Code Ti-Basic :

:Fnoff
:axesoff
:coordoff
:zoomsto
:clrdraw
:
:45=>x
:20=>y
:0=>s
:0=>k
:
:while s<7
:pxl-on(y,x
:getkey=>k
:
:if k=24
:x-1=>x
:
:if k=25
:y-1=>y
:
:if k=26
:x+1=>x
:
:if k=34
:y+1=>y
:
:End


Voila, je comprend bien pourquoi ça ne fonctionne pas, mais je ne vois pas d'autres solutions. Je n'ais pas utilisé ton conseil du "if k=0" car je ne sais pas du tout où le placer dans le code.
Merci de ton aide.
6 Décembre 2007 21:54:58

Il y a qu'un endroit pour la placer... C'est dans la boucle !

Et ça fonctionne ;) 

Et c'est : pxl-on(x,y) pas pxl-on(y,x).
7 Décembre 2007 19:33:41

Oui je m'en doutais que c'était dans la boucle ^^ lol. :p  En fait je me suis mal exprimé, je ne savais pas comment faire continuer le serpent a avancer dans le "if k=0". :sweat: 

Je viens juste de trouver une solution :D  , j'enregistre les variables x et y avant de les modifier pour ( Grâce a des conditions ) demander à la machine s'il faut incrémenter la variable x ou y. C'est plus clair avec du code :

Code Ti-basic :

:Fnoff
:axesoff
:coordoff
:zoomsto
:clrdraw
:
:45=>x
:20=>y
:0=>s
:0=>k
:0=>z
:0=>w
:
:while s<7
: pxl-on(y,x
: getkey=>k
:
:if k=24
:Then
:x=>z
:y=>w
:x-1=>x
:end
:
:if k=25
:Then
:x=>z
:y=>w
:y-1=>y
:end
:
:if k=26
:Then
:x=>z
:y=>w
:x+1=>x
:end
:
:if k=34
:Then
:x=>z
:y=>w
:y+1=>y
:end
:
:if k=0
:then
:if x!=z
:then
:if z<x
:x+1=>x
:if z>x
:x-+1=>x
:end
:if y!=w
:then
:if w<y
:y+1=>y
:if w>y
:y-1=>y
:end
:end
:End



Mais ce code ne marche pas :cry:  lol.
En fait, ça me fait "syntax error" lorque je vais vers le haut ou le bas.
Pourtant ça marche sur les cotés ! :pt1cable: 
Et, lorsque je fait "goto", ça m'ammène dans la ligne ici colorée en rouge.
Cette solution de code dans le "if k=0" estalternative, danc si il yen a une autre ( Qui marche ^^ ) ou si vous pouviez trouvez une solution a ce bug, ce serais vraiment sypa. Merci.
7 Décembre 2007 21:01:52

Utilise cette syntaxe pour la condition :

If [condition]
THEN
DO
END
7 Décembre 2007 21:27:13

Oula, j'ai essayé, mais ça n'avance que d'un pixel vers le haut ou le bas, et ça repart du pixel juste au dessus ou en dessou, bref, ça revient sur la même ligne horizontale de départ.
7 Décembre 2007 22:07:04

Tu as surement du faire une erreur en mettant deux fois la même chose pour une touche ou inversement...
Je déteste lire le TI Basic... Ça fait ma au yeux ^^

Le plus simple c'est de faire une condition pour chaque touche, avec une condition k=0 pour que ton serpent avance. Et encore 4 autres conditions qui donnent une variable P selon le sens que doit prendre à chaque fois le serpent pendant une durée infini du k=0.

J'espère avoir été claire :) 
7 Décembre 2007 22:17:31

Ouais, c'est vrai que sans coloration de code, c'est assez chiant à lire^^.
Je vais essayer de mettre en pratique ce que tu viens de me dire, merci beaucoup de ton aide et de ta patience. ;) 

Puis si j'y arrive vraiment pas, c'est pas grave^^ j'écouterais en cours comme ça :lol:  .
En plus je sais que des tutos de création de snake en ti-basic sont en cours de construction donc...

Merci encore a +. :hello: 
18 Décembre 2011 10:01:23

Bonjour,
Voici mon morceau de code, j'espère qu'il t'aidera.

1->I
K->L:0->K
Repeat K
I+1->I
getkey->K
if I=5:L->K
End

C'est assez long et lent mais ça marche.


Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS