π
<-

Utilisation getkey

Utilisation getkey

Unread postby Lu_Lu54 » 06 Aug 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: Select all
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:
User avatar
Lu_Lu54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 3.4%
 
Posts: 449
Images: 8
Joined: 06 Sep 2014, 14:30
Location: Près de Nancy
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ère S

Re: Utilisation getkey

Unread postby Wistaro » 06 Aug 2015, 10:38

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

Code: Select all
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: Select all
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: Select all
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
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Utilisation getkey

Unread postby Lu_Lu54 » 07 Aug 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: Select all
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 !
User avatar
Lu_Lu54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 3.4%
 
Posts: 449
Images: 8
Joined: 06 Sep 2014, 14:30
Location: Près de Nancy
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ère S

Re: Utilisation getkey

Unread postby Wistaro » 07 Aug 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: Select all
If A = 37
Then
Goto Q
End


Peut se simplifier en:
Code: Select all
If A = 37: Goto Q


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

Code: Select all
Delvar A
4->B


Peut devenir:
Code: Select all
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: Select all
If A = 37
Then
Delvar A
Goto Q
End


Va devenir :
Code: Select all
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, ClaudeBot [spider] ? 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!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Utilisation getkey

Unread postby Epharius » 09 Aug 2015, 19:28

Je voudrais juste proposer une amélioration. Personnellement j'aurais plutôt fait :
Code: Select all
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
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: Utilisation getkey

Unread postby Wistaro » 09 Aug 2015, 21:15

Epharius wrote:Je voudrais juste proposer une amélioration. Personnellement j'aurais plutôt fait :
Code: Select all
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 ^^
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Utilisation getkey

Unread postby Epharius » 10 Aug 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
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: Utilisation getkey

Unread postby Lu_Lu54 » 30 Aug 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?
Last edited by Lu_Lu54 on 30 Aug 2015, 19:33, edited 1 time in total.
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 !
User avatar
Lu_Lu54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 3.4%
 
Posts: 449
Images: 8
Joined: 06 Sep 2014, 14:30
Location: Près de Nancy
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ère S

Re: Utilisation getkey

Unread postby Epharius » 30 Aug 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
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: Utilisation getkey

Unread postby Lu_Lu54 » 30 Aug 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 !
User avatar
Lu_Lu54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 3.4%
 
Posts: 449
Images: 8
Joined: 06 Sep 2014, 14:30
Location: Près de Nancy
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ère S

Next

Return to TI-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 3 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1418 utilisateurs:
>1397 invités
>13 membres
>8 robots
Record simultané (sur 6 mois):
29271 utilisateurs (le 11/07/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)