π
<-
Chat plein-écran
[^]

Utilisation getkey

Utilisation getkey

Message non lude Lu_Lu54 » 06 Aoû 2015, 08:12

Salut à tous je me suis mis au ti basic z80, et je me suis dit que ce serait formateur de faire un petit jeu pas trop dur : l'indémodable snake
J'ai décidé de faire mon serpent affiché avec des 0 qui se font outputer à la chaîne.
Je viens tout juste de commencer donc j'ai un problème vraiment basique

Je suppose que le code parle mieux que les mots, donc voici ce que théoriquement je voudrais faire :
Code: Tout sélectionner
3->Y
5->X

Lbl R
While getKey=0 or getKey 84 or getKey=82
X+1->X
Output(Y,X,"O")
End
If getKey=73
Then
Goto U
If getKey=93
Then
Goto D
End

Donc basiquement ce bout de code est l'un des 4 qu'il y a pour les 4 directions.
Je voudrais qu'en sortant de la boucle while(si aucune touche n'est appuyée ou si le 4 ou le 6 est appuyé)
Le test if trouve ce qui a fait disjoncter la boucle, pour re guider vers une autre direction.
Seulement je pense que le getKey change trop rapidement, surtout que dans ma boucle while, j'ai inséré un timer (boucle while plus i qui augmente)

Je me demandais comment on pouvait récupérer cette info.
Est-ce qu'une variable qui prend la valeur du getKey à chaque tour marcherait ?

Merci ! :D

P.S.
Je suis pas venu lancer un débat sur l'optimisation ni les labels, que par ailleurs je trouve très pratiques :troll:
Avatar de l’utilisateur
Lu_Lu54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 3.4%
 
Messages: 449
Images: 8
Inscription: 06 Sep 2014, 14:30
Localisation: Près de Nancy
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ère S

Re: Utilisation getkey

Message non lude Wistaro » 06 Aoû 2015, 10:38

Plutôt que de partir sur 36 000 labels, pourquoi ne pas tout gérer dans ta boucle principale ?

Code: Tout sélectionner
3->Y
5->X

Lbl R
Repeat K = 45 //on reste dans la boucle principale tant que l'utilisateur ne va pas sur clear pour quitter le jeu

GetKey->K //on stocke la valeur du getKey dans notre variable K

X+1->X
Output(Y,X,"O")
End
If getKey=73
Then
//On fait un truck
If getKey=93
Then
//On fait un truck
End

End


Le problème ici c'est que la valeur du GetKey va de suite se réinitialiser lorsque l'utilisateur va appuyer sur rien du tout. Il faut donc fais en sorte que:

Si K = machin ALORS I = truck
Si I = truck alors on incrémente Y (par exemple). Avec ça, si K reviens de suite à 0, Y va toujours s'incrementer.

On peut donc faire comme ceci, par exemple :

M et N sont des variables permettant de soit incrémenter X, soit Y. Ainsi:

M =1 --> On incrémente X de 1
M = 0 --> On incrémente X de -1 (on décrémente quoi)
N =1 --> On incrémente Y de 1
N = 0 --> On incrémente Y de -1 (on décrémente quoi)

Ce qui donnerais quelque chose comme:
Code: Tout sélectionner
3->Y
5->X

1-> M
1-> N

Lbl R
Repeat K = 45 //on reste dans la boucle principale tant que l'utilisateur ne va pas sur clear pour quitter le jeu

GetKey->K //on stocke la valeur du getKey dans notre variable K

If M = 1: X +1->X
If M = 0: X -1->X
If N = 1: Y+1->Y
If N = 0: Y-1->Y

Output(Y,X,"O")

End
If getKey=73
Then
1-> M //par exemple hein!
If getKey=93
Then
1->N
End

End


On peux optimiser un peu optimiser ceci, pour faire plus beau et plus propre :

Code: Tout sélectionner
3->Y
5->X

0 -> M
1-> N

Lbl R
Repeat K = 45 //on reste dans la boucle principale tant que l'utilisateur ne va pas sur clear pour quitter le jeu

GetKey->K //on stocke la valeur du getKey dans notre variable K

X + (M =1) - (not(M -> X
Y + (N =1) - (not(N -> Y

Output(Y,X,"O")

End

If getKey=73: 1-> M
If getKey=93: 1-> N



End
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 87.5%
 
Messages: 3153
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: Utilisation getkey

Message non lude Lu_Lu54 » 07 Aoû 2015, 08:09

Merci pour cette réponse super complète !

Je vais laisser de côté l'optimisation pour l'instant, mais par contre je n'ai pas trop compris ce que les deux points sont censés faire, c'est un then ?

Code: Tout sélectionner
If M = 1: X +1->X
If M = 0: X -1->X
If N = 1: Y+1->Y
If N = 0: Y-1->Yx


Sinon je comprends le principe du m et n, ça permet de chopper la valeur de getKey avant qu'elle change c'est ça ?
Image

Tu as une TI-nspire cx cas ?
Mes programmes :
certains utiles : CalcTriangles, HowManyDiv, DivEuclid step by step, factorisation de polynômes par la division euclidienne, Dénombrement, TransDioptres step by step
d'autres plus expérimentaux ;) : sommes2dés, DecPi
et encore plus à venir !
Avatar de l’utilisateur
Lu_Lu54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 3.4%
 
Messages: 449
Images: 8
Inscription: 06 Sep 2014, 14:30
Localisation: Près de Nancy
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ère S

Re: Utilisation getkey

Message non lude Wistaro » 07 Aoû 2015, 16:25

En gros, quand ton IF ne s'applique qu'à une seule chose, le THEN et le END sont facultatifs.
Donc ceci
Code: Tout sélectionner
If A = 37
Then
Goto Q
End


Peut se simplifier en:
Code: Tout sélectionner
If A = 37: Goto Q


Avec le Delvar, c'est particulier. Déjà, tu sais qu'il peut se simplifier:

Code: Tout sélectionner
Delvar A
4->B


Peut devenir:
Code: Tout sélectionner
Delvar A4->B


Attention si le delvar est suivi d'un while ou d'un repeat, tu peux avoir des problèmes

Dans un if, le delvar suivit d'une autre requête passe aussi. Donc
Code: Tout sélectionner
If A = 37
Then
Delvar A
Goto Q
End


Va devenir :
Code: Tout sélectionner
If A=37: Delvar AGoto Q



Pour le M et N, c'est tout à fait ça. C'est une sorte de mémoire tampon; ce sont des variables tampons.
Nouveau sur le site, Anonymous ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 87.5%
 
Messages: 3153
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: Utilisation getkey

Message non lude Epharius » 09 Aoû 2015, 19:28

Je voudrais juste proposer une amélioration. Personnellement j'aurais plutôt fait :
Code: Tout sélectionner
If k=37
Delvar T1->S
If k=73
Delvar T-1->S
ETC...
Y+S->Y
X+T->X

Je pense que ça peut alléger le code...
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7%
 
Messages: 1107
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: Utilisation getkey

Message non lude Wistaro » 09 Aoû 2015, 21:15

Epharius a écrit:Je voudrais juste proposer une amélioration. Personnellement j'aurais plutôt fait :
Code: Tout sélectionner
If k=37
Delvar T1->S
If k=73
Delvar T-1->S
ETC...
Y+S->Y
X+T->X

Je pense que ça peut alléger le code...


Probablement ;) Je suis même certain qu'en cherchant bien, on peut faire mieux ^^
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 87.5%
 
Messages: 3153
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: Utilisation getkey

Message non lude Epharius » 10 Aoû 2015, 21:29

Ouais y a toujours mieux :p
D'ailleurs faut bien penser à remplacer le k=37 par le bon code de la touche (pareil pour le 73).

Ah et pour aller encore plus vite quand on ne tourne pas (les 4/5 du temps) on peut mettre un if k juste avant le code des touches. M'enfin après c'est à considérer...
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7%
 
Messages: 1107
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: Utilisation getkey

Message non lude Lu_Lu54 » 30 Aoû 2015, 19:31

re après une bonne absence :\

j'ai testé ton truc Wistaro et ça marche pas, je me retrouve avec le même problème, getkey reprend la valeur 0.

j'ai du coup fait un tour dans l'index que m'avait recommandé je ne sais plus qui qui décris getkey comme une variable dont la valeur " is cleared every time you read from it, until a new key is pressed"
donc ça veut dire que tant que je n'y touche pas, elle bouge pas, c'est ça ? et ça veut dire que normalement, si je la stocke dans une variable dès que la touche a été pressée, je la récupère...
sauf que je n'ai jamais réussi à ce faire :(

alors est-ce que ce serait différent à cause du fait que je travaille sur une ti83PCE?
Dernière édition par Lu_Lu54 le 30 Aoû 2015, 19:33, édité 1 fois.
Image

Tu as une TI-nspire cx cas ?
Mes programmes :
certains utiles : CalcTriangles, HowManyDiv, DivEuclid step by step, factorisation de polynômes par la division euclidienne, Dénombrement, TransDioptres step by step
d'autres plus expérimentaux ;) : sommes2dés, DecPi
et encore plus à venir !
Avatar de l’utilisateur
Lu_Lu54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 3.4%
 
Messages: 449
Images: 8
Inscription: 06 Sep 2014, 14:30
Localisation: Près de Nancy
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ère S

Re: Utilisation getkey

Message non lude Epharius » 30 Aoû 2015, 19:33

Oui c'est tout à fait ça, à chaque fois que tu fais getkey->K, si aucune touche n'a été pressée, K=0. Du coup, il faut d'abord mettre k dans une variable qui ne changera pas.
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7%
 
Messages: 1107
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: Utilisation getkey

Message non lude Lu_Lu54 » 30 Aoû 2015, 19:34

dsl j'avais envoyé par erreur sans finir
Image

Tu as une TI-nspire cx cas ?
Mes programmes :
certains utiles : CalcTriangles, HowManyDiv, DivEuclid step by step, factorisation de polynômes par la division euclidienne, Dénombrement, TransDioptres step by step
d'autres plus expérimentaux ;) : sommes2dés, DecPi
et encore plus à venir !
Avatar de l’utilisateur
Lu_Lu54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 3.4%
 
Messages: 449
Images: 8
Inscription: 06 Sep 2014, 14:30
Localisation: Près de Nancy
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ère S

Suivante

Retourner vers TI-Basic

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1097 utilisateurs:
>1086 invités
>6 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)