Le getKey
C'est bien beau, vous pouvez calculer pendant un programme, mettre des conditions, le faire tourner dans une boucle, afficher plein de choses à l'écran, etc.. Mais ça ne ressemble en rien à un jeu, pour l'instant on se contente de regarder notre programme.
Le but de ce chapitre est de vous apprendre à manipuler les getkey, fameuse commande qui repère si une touche est pressé, et l'assimiler à toutes les choses que l'on a vu jusque la.
La commande
getKey, comme en TI-Basic, repère si une touche à été pressé, on peut donc utiliser la même syntaxe qu'en TI-Basic :
Code : Axe Parser - Sélectionner
La commande
getKey se trouve ici :
Donc la variable K va contenir la valeur d'une touche pressé.
Mais comment savoir quelle valeur appartient à quelle touche ?
Souvenez vous ! Dans le dossier zip que vous avez téléchargé au début :
Citation
Je vous enlève la tache de double cliquer dessus pour voir l'image

:
Cela veut dire qu'à chaque fois que j'aurais besoin de la commande getKey, je devrais avoir sous la main cette image?
Non pas forcément, car si K est une simple valeur, on peut l'afficher !
Je vous laisse chercher comment faire

.

Après quelques secondes vous aurez trouvé ce code :
Secret (cliquez pour afficher)Code : Axe Parser - Sélectionner1
2
3
4
5
6
7
| :.GETKEY
:0→K
:Repeat K
:getKey→K
:End
:Text(0,0,K►Dec
:Pause 2000 |
L'erreur ici serait d'afficher K dans la boucle, car quand aucune touche n'est pressé, K vaut 0, et il affichera toujours 0 si l'on ne s'en rend pas compte.
Mais on peut l'optimiser en utilisant dès maintenant la commande getkey :
Secret (cliquez pour afficher)Code : Axe Parser - Sélectionner1
2
3
4
5
6
7
8
| :.GETKEY
:0→K
:Repeat K=15
:getKey→K
:If K
:Text(0,0,K►Dec
:End
:End |
Le programme affichera la dernière touche pressé, et s'éteindra quand la touche 15 aura été pressé :
Mieux encore,
getKey→K peut être mis directement au début de la boucle!
Secret (cliquez pour afficher)Code : Axe Parser - Sélectionner1
2
3
4
5
6
7
| :.GETKEY
:0→K
:Repeat getKey→K=15
:If K
:Text(0,0,K►Dec
:End
:End |
Hormis les codes touches différents, c'est exactement la même commande qu'en TI-Basic?
En faite il y a 2 commandes
getKey en Axe Parser, la première va retourner un nombre pour une touche qui aurait été pressé (voir plus haut). Et la deuxième va
retourner un booléen pour une touche précise.
Reprenons notre code pour les vies. Je veut que l'on quitte quand la touche

à été pressé :
Code : Axe Parser - Sélectionner1
2
3
| :Repeat getKey(15)
:.mon code de jeu.
:End |
L'avantage ? Déjà on a plus de variable à se trimballer

, et grâce à cette commande, on peut repérer si plusieurs touches on été pressés en même temps !
Code : Axe Parser - Sélectionner1
2
3
4
5
6
7
8
| :Repeat getKey(15)
:If getKey(9) or getKey(54)
:.code
:End
:If getKey(33) and getKey(25)
:.code
:End
:End |
La commande getKey renverra 0 si la touche indiqué n'est pas pressé (FAUX), et 1 si elle l'est (VRAI)
Quoi? vous pensiez que c'était plus compliqué que cela?

Que nenni !
Pour vous échauffer pour le prochain chapitre, je vais donner un petit exercice sur la commande
getKey.
Donc le but de l'exercice vas être de faire bouger la lettre 'O' à travers l'écran de la calculatrice en fonction des touches :

.
Le 'O' ne doit pas sortir de l'écran (96*64 je le rappelle).
Le programme se ferme en appuyant sur
J'en dit pas plus, à vos calto!
Vous êtes sur d'avoir bien cherché?
D'abords, il fallait choisir la commande pour afficher la lettre 'O'. Le plus adapté ici est la commande
Text( car vu la rapidité de l'Axe Parser, vous n'auriez pas le temps de voir le 'O' se balader avec la commande
output(. Seulement, il y a une difficulté qui se pose ici ; en déplaçant le 'O', il va laisser des traces derrière lui en allant de gauche à droite et de bas en haut. Il fallait donc chercher une méthode plus ou moins efficaces. Je vous propose de mettre un espace avant le 'O' et d'en mettre 5 autres, 6 pixels en dessous des coordonnées normales (X,Y).
Donc en ajoutant la boucle qui se termine en appuyant sur

, on aura ce code :
Secret (cliquez pour afficher)Code : Axe Parser - Sélectionner1
2
3
4
5
6
7
8
9
| :0→X→Y
:.On initialise les variable X et Y à 0 (X = largeur et Y = hauteur)
:
:Repeat getKey(15)
:.ici la boucle repeat sera préférable
:Text(X,Y+6," "
:Text(X,Y," O
:.code pour modifier X et Y
:End |
Bon, c'est un peu tiré par les cheveux je vous l'accorde. Mais si vous avez abandonné votre programme en rencontrant ce problème, retournez à votre calculatrice et revenez quand vous aurez vraiment fini

.
Maintenant, on doit modifier X et Y en fonction des touches directionnelles, sans oublier les "murs" virtuels :
Secret (cliquez pour afficher)Code : Axe Parser - Sélectionner1
2
3
4
5
6
7
8
9
10
| :If getKey(2) and (X≠0
:X-1→X
:ElseIf getKey(3) and (X≠91
:X+1→X
:End
:If getKey(4) and (Y≠0
:Y-1→Y
:ElseIf getKey(1) and (Y≠58
:Y+1→Y
:End |
En tatonnant vous aurez surement trouvez les valeur 91 (pour la largeur) et 58 (pour la hauteur), qui correspondent à la place que prend la lettre 'O'.
Donc le code final :
Secret (cliquez pour afficher)Code : Axe Parser - Sélectionner1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| :0→X→Y
:.On initialise les variable X et Y à 0 (X = largeur et Y = hauteur)
:
:Repeat getKey(15)
:.ici la boucle repeat sera préférable
:Text(X,Y+6," "
:Text(X,Y," O
::If getKey(2) and (X≠0
:X-1→X
:ElseIf getKey(3) and (X≠91
:X+1→X
:End
:If getKey(4) and (Y≠0
:Y-1→Y
:ElseIf getKey(1) and (Y≠58
:Y+1→Y
:End
:End |
Informations sur le tutoriel
Retour en haut
Créé : Le 09/10/2010 à 21:19:22
Avancement : 100%
Licence : Copie non autorisée