[Tutoriel]Gestion des touches + effacer l'écran

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Tutoriel]Gestion des touches + effacer l'écran

Message par RayTro le Mer 21 Aoû - 19:52

Bon, j'ai totalement zappé de vous parler des commandes qui effacent l'écran, je vais donc commencer par ça :
Mise à jour (merci à J8B pour la correction) :
-CLEAR c'est pour effacer la mémoire donc mettre vos variables à 0.
-CLS efface l'écran du texte.
-GCLS efface l'écran graphique.
-SPCLR efface les sprites à l'écran.
-BGCLR efface le background.
-ACLS (probablement traduisible par "Clear All"), qui efface l'écran du texte, l'écran graphique, le background et les sprites. Elle est la combinaison des 4 commandes au dessus.
Ancien tuto (peut comporter des erreurs):
CLEAR/CLS permettent d'effacer le texte en général, GCLS permet d'effacer l'écran graphique (on en parlera plus tard, quand j'aurai appris à m'en servir), tandis que SPCLR permet de retirer tout les sprites présents à l'écran.

Sur ce, passons maintenant à la gestion des touches :
Mise à jour (merci à J8B pour la correction) :
La commande pour avoir les touches s'appelle BUTTON()
elle possède 4 modes allant de 0 à 3, par défaut c'est le mode 0 qui est employé, car BUTTON() = BUTTON(0)
les 4 modes sont les suivants : Tenu ; Répété ; Appuyé ; Relâché.
-BUTTON() renvoie la valeur des touches appuyées au moment où la fonction est appelée.
-BREPEAT permet d'activer BUTTON(1) (bouton répété, un mode turbo si vous préférez).
-BTRIG() correspond à BUTTON(2) et renvoie quelle touche vient d'être appuyée (s'il y en a une) sur le moment de l'appel de cette fonction.
-Quant à BUTTON(3), il fait la même chose que pour BUTTON(2) (ou BTRIG() ) sauf qu'il renvoie les boutons venant d'être relâchés.
Ancien tuto (peut comporter des erreurs):
Il y a deux commandes permettant de détecter quelle touche est appuyée.
Enfin, ce n'est pas des commandes, c'est plus des variables systèmes.
Commençons par le moins utilisé des deux : BTRIG() (ne jamais oublier de mettre des parenthèses après)
Quand on appuie sur une touche, BTRIG prend la valeur de celle-ci et se remet à 0 peu après.
Parlons maintenant de la seconde variable système : BUTTON(), qui est bien plus utilisée et vous comprendre très vite pourquoi :
Cette variable contient constamment la valeur des touches appuyées, au contraire de BTRIG qui ne la retient que quelques secondes (je vous le dis encore, testez la différence entre les deux et vous comprendrez).
Pour ce qui est des valeurs renvoyées par ces fonctions :
Si on appuie sur plusieurs touches en même temps, les valeurs des touches s'additionnent, et le système est fait de telle sorte que chaque touche peut être comparée à une valeur binaire, la touche B équivaut à 32, donc 100000 en binaire ; A équivaut à 16, donc 010000 ; la touche droite équivaut à 8, donc 001000, et si on appuie sur les trois en même temps on obtient 56, donc 111000 en binaire.

Vu que ces commandes sont en fait des variables système, il est possible de s'en servir comme tout autres variables, exemples :
Code:
IF BUTTON()==16 THEN GOSUB @SAUT
G=BUTTON()
Enfin, Sachez que j'ai créé spécialement pour vous, pour ce tutoriel, un petit utilitaire très sympa qui permet de connaître la valeur des touches, je vous renvoie vers la page contenant la description et le QR-Code de l'utilitaire (en plus il est très léger : vous n'aurez besoin de photographier qu'un seul QR-Code pour l'avoir).
Cliquez ici pour aller vers la page de l'utilitaire

N'hésitez pas à lire le code de mon utilitaire afin de vous aider à décortiquer les touches appuyées par l'utilisateur, vous pouvez même le recopier si l'envie vous prend !


Dernière édition par RayTro le Mar 12 Aoû - 19:54, édité 1 fois
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Tutoriel]Gestion des touches + effacer l'écran

Message par Invité le Mar 12 Aoû - 12:59

Mais le BUTTON() ne posent il pas des problemes d'identification ?
Par exemple si presse deux fois A, le BUTTON ne lira il pas A,B ?

Invité
Invité


Revenir en haut Aller en bas

Re: [Tutoriel]Gestion des touches + effacer l'écran

Message par RayTro le Mar 12 Aoû - 15:18

J'ai pas tellement compris ce que tu voulais dire mais il contient constamment quelle touche est appuyée. Quand tu lis la variable il te donne les touches appuyées à l'instant où elle est demandée. Si tu veux détecter l'appui répétée de touches il faudra que tu codes toi même.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Tutoriel]Gestion des touches + effacer l'écran

Message par Adriendu92 le Mar 12 Aoû - 15:58

Code:
clear:cls
@boucle
wait 1
if button() and 16 and app==0 then a=a+1:att=20:app=1
if button() ==0 then app==0
att=att -1
if att==0 then a=0
if att==-1 then att=0
goto @boucle
Voila pour tester l'appui répété de la touche a teste la variable a pour savoir le nombre de fois appuyé et si on attend trop a se réinitialise !!


Dernière édition par Adriendu92 le Mar 12 Aoû - 18:53, édité 1 fois
avatar
Adriendu92

Messages : 164
Date d'inscription : 07/12/2013
Age : 16
Localisation : Colombes

Voir le profil de l'utilisateur http://www.ptc-qr-code.sitew.fr/

Revenir en haut Aller en bas

Re: [Tutoriel]Gestion des touches + effacer l'écran

Message par J8B le Mar 12 Aoû - 18:31

En fait ce tutoriel mérite bien d'avoir un petit coup de balai. Il est plutôt vieux et pas complet.
CLEAR c'est pour effacer la mémoire donc mettre vos variables à 0.
Il faudrait rajouter ACLS qui efface l'écran du texte, de l'écran graphique, des sprites et du background. Il est donc la combinaison de CLS:GCLS:SPCLR:BGCLR.
Tiens BGCLR est à rajouter aussi (efface le background, le décor si vous préférez).
BUTTON() possède 4 modes allant de 0 à 3. (tenu,répété,appuyé,relâché).
BUTTON() correspond à BUTTON(0). (bouton tenu ou laissez appuyé)
BTRIG() est la même chose que BUTTON(2). (bouton appuyé).
On pourrait aussi rajouter BREPEAT qui permet d'activer BUTTON(1) (bouton répété, un mode turbo si vous préférez).
Référez vous à mon utilitaire d'aide en même temps que vous regardez les tuto, ça peut vous aider si vous avez du mal à comprendre certaine chose.

Adriendu92 a écrit:
If button() ==0 then app==0
Att ==att -1
Attention t'as mis == au lieu de =. Corrige aussi la majuscule.
avatar
J8B

Messages : 407
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Tutoriel]Gestion des touches + effacer l'écran

Message par RayTro le Mar 12 Aoû - 19:56

Voilà, j'ai modifié vite-fait le tuto, j'espère ne pas avoir laissé trainer d'autres erreurs. Wink
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Tutoriel]Gestion des touches + effacer l'écran

Message par Invité le Lun 18 Aoû - 19:32

Pour ma part, j'ai compris ce sur quoi je bloquai...

Invité
Invité


Revenir en haut Aller en bas

Re: [Tutoriel]Gestion des touches + effacer l'écran

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum