[Tutoriel]Guide du débutant - Partie 4 Conditions et Interactions

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

[Tutoriel]Guide du débutant - Partie 4 Conditions et Interactions

Message par J8B le Mer 19 Aoû - 20:54

4)Apprendre les conditions
a)Avec des si, on peut refaire le monde

C'est presque la même chose en programmation, avec des si on crée notre monde.
Et pour cela, on a les commandes IF, THEN, ELSE qui veut dire si, alors, sinon.
On place d'abord notre IF suivi de notre condition puis de THEN et du résultat si
la condition est vrai, on peut rajouter facultativement à la suite un ELSE si la
condition est fausse.
En résumé : Si(IF) la condition est vrai alors(THEN) faire ceci sinon(ELSE) faire cela
Code:
A=2
 IF A==1 THEN ?"C'est vrai?"
 IF A==2 THEN ?"C'est vrai." ELSE ?"C'est faux!"
 IF A==3 THEN ?"C'est vrai..." ELSE ?"C'est faux."
Le texte C'est vrai. sera affiché puis C'est faux.

Nous avons aussi un cas particulier qui remplace une  série de IF, il s'agit d'utiliser
la commande ON.
Lorsque une variable en condition va croître de 1 pour aller à un label différent à chaque
fois, on utilise ON au lieu de IF de cette manière :
Code:
A=2
 ON A GOTO @MENU0, @MENU1, @MENU2, @MENU3
Le programme ira au label @MENU2
Cela évite d'écrire la série de IF qui suit:
Code:
A=2
 IF A==0 THEN GOTO@MENU0
 IF A==1 THEN GOTO@MENU1
 IF A==2 THEN GOTO@MENU2
 IF A==3 THEN GOTO@MENU3
ON peut aussi fonctionner avec GOSUB à la place de GOTO.

b)Les commandes de conditions
Trois commandes nous seront utiles pour écrire des conditions:
AND qui veut dire "et", vérifie si les conditions sont vraies.
Code:
A=1:B=2
IF A==1 AND B==2 THEN ?"Les deux conditions sont remplies."
Les deux conditions sont vraies donc on affiche le texte.
Si une des deux était fausse, le texte ne se serait pas affiché.

OR qui veut dire "ou", vérifie si au moins une condition est vraie.
Code:
A=1:B=2
IF A==0 OR B==2 THEN ?"Au moins une condition est remplie."
IF A==1 OR B==5 THEN ?"Au moins une condition est remplie."
IF A==1 OR B==2 THEN ?"Au moins une condition est remplie."
Le texte va s'afficher à chaque fois car au moins une condition est vraie.
Il faudrait que les conditions soient toutes fausses pour que le texte ne s'affiche pas.

XOR qui veut dire "seulement ou", vérifie si une seule condition est vraie.
Code:
A=1:B=2
IF A==0 XOR B==2 THEN ?"Une seule condition est remplie."
IF A==1 XOR B==5 THEN ?"Une seule condition est remplie."
Le texte va s'afficher à chaque fois car une seule des condtions est vraie.
Le texte ne s'afficherait pas si toutes les conditions étaient fausses ou que
plus d'une condition soit vraie.

On peut mélanger ces trois commandes dans les conditions:
Code:
A=1:B=2:C=5:D=7
IF (A==1 OR B==2) AND (C==5 XOR D==6) THEN ?"Le texte s'affiche."

c)Vrai ou Faux
Je viens d'écrire que des conditons pouvaient vraies ou fausses, et bien il existe
les commandes TRUE qui veut dire vrai et FALSE qui veut dire faux.
Ce sont en fait deux variables systèmes qui auront toujours pour valeur 1 pour TRUE
et 0 pour FALSE.
Du coup on pourrait écrire:
Code:
A=1:B=2
IF (A==0 AND B==2)==FALSE THEN ?"Le texte s'affiche"
Le texte s'affiche car la condition entre IF et THEN est vraie.
Cela reviendrait au même d'écrire :
Code:
A=1:B=2
IF (A==0 AND B==2)==0 THEN ?"Le texte s'affiche"
Ce qu'il y a entre parenthèses étant faux et que FALSE est égal à 0, la condition est donc vraie.

d)Maintenant faites des tests !!!
Les conditons sont les règles de votre programme, essentiel à tout programme qui se respecte.
Et vous verrez que par la suite, vos conditions vont s'étoffer !!
Mais pour l'instant, faites des test de ses commandes pour vous familiariser avec.


5)Apprendre l'interactivité
a)Commentaires

Avant d'entrer dans le vif du sujet, laissez moi vous présenter la manière d'écrire un commentaire
dans un programme. Le commentaire sera une annotation que le programme ignorera et servira
principalement à vous souvenir de ce qu'une partie de votre code veut dire.
Pour cela une simple apostrophe en début de phrase, permet de dire au programme que c'est un commentaire.
Code:
?"Je suis lu par le programme."
'Je suis un commentaire
'?"Moi aussi j'en suis un"
?"Deux commentaires sont passés mais vous n'avez rien vu!" 'Haha, je suis un commentaire et on ne me voit pas

b)Interactions textuelles
Deux commandes vont nous demander d'écrire un texte en affichant le clavier, il s'agit de INPUT et LINPUT.
INPUT sera suivi d'une question sans point d'interrogation entre guillemets, puis d'un point virgule et
d'une variable numérique ou alphanumérique qui enregistrera notre réponse.
Code:
INPUT "Combien font 2+1";REP
Ceci affichera Combien font 2+1? à l'écran, ainsi que le clavier automatiquement. Il attendra qu'on
écrive une réponse et qu'on appuie sur Enter du clavier. REP enregistrera votre réponse et le programme
poursuivra sa lecture.

LINPUT est quasi identique à INPUT, à la différence qu'il n'accepte que les variables alphanumériques,
n'affiche pas de ? tout seul et que les réponses vides ne le dérangent pas.
Code:
LINPUT "Comment t'appelles-tu ?";NOM$
?"Enchantez ";NOM$
On peut aussi les afficher n'importe où sur l'écran du haut avec LOCATE, mais pas sur l'écran du bas.

c)Interactions boutons
Appuyer sur un bouton, c'est bien, faire en sorte que le programme le sache, c'est mieux.
On utilise principalement la commande BUTTON() qui agit comme une variable en prenant pour valeur celle
du bouton de votre console quand il est enfoncé.
Voici les différentes valeurs des boutons:
Aucun:   0
 Haut:   1
  Bas:   2
Gauche:   4
Droite:   8
    A:  16
    B:  32
    X:  64
    Y: 128
    L: 256
    R: 512
Start:1024
Pour mieux les retenir, vous remarquerez qu'on multiplie à chaque fois par 2.

BUTTON() pourra avoir donc ces valeurs ainsi que l'addition de ces valeurs lorsque plusieurs
boutons sont enfoncés.
BUTTON() possède 4 modes d'utilisation allant de 0 à 3 que l'on activera en l'inscrivant entre
les parenthèses.

d)BUTTON Mode 0 ou par défaut
Le mode 0 de BUTTON() est le mode par défaut, ce qui veut dire qu'on n'est pas obligé d'écrire 0
entre les parenthèses de BUTTON().
Il signifie que BUTTON() prendra la valeur du bouton tant qu'il reste enfoncé.
Code:
@BOUCLE
IF BUTTON()==1 THEN WAIT 5:?"Je suis enfoncé !" ELSE CLS
GOTO @BOUCLE
Une infinité du texte sera affiché tant que le bouton sera enfoncé, sinon tout s'effacera.
On emploie souvent ce mode pour les déplacements.

e)BUTTON Mode 1
Le mode 1 de BUTTON() est désactivé par défaut, il signifie que BUTTON(1) prendra la valeur du
bouton un certain nombre de fois tant qu'il est enfoncé. Cela peut être vu comme un mode turbo.
Pour que BUTTON(1) puisse être utilisé, il faut utilisé la commande BREPEAT.
BREPEAT sera suivi de trois nombres séparés par une virgule.
Le premier nombre sera l'identifiant du bouton :
Haut:0, Bas:1, Gauche:2, Droite:3, A:4, B:5, X:6, Y:7, L:8, R:9, Start:10
Le deuxième nombre sera le temps en 1/60ème de seconde à attendre avant que BUTTON prendra la valeur
du bouton pour la deuxième fois.
Le troisième nombre sera le temps d'intervalle en 1/60ème de seconde que BUTTON devra attendre
pour reprendre la valeur du bouton.
Pour désactiver BREPEAT, il suffira de l'utiliser qu'avec l'identifiant du bouton.
Code:
BREPEAT 4,120,30 'activation du mode turbo pour le button A
@BOUCLE
IF BUTTON(1)==16 THEN ?"Turbo" ELSE ?"Attente..."
IF BUTTON()==1 THEN BREPEAT 4
IF BUTTON()==2 THEN BREPEAT 4,120,30
VSYNC 1 'Commande ralentissant la puissance pour pouvoir finir d'afficher sur l'écran une frame après l'autre.
GOTO @BOUCLE
Une infinité de Attente s'affichera, et dès qu'on appuiera sur A, Turbo va vite apparaître et au bout de
deux secondes réapparaître à intervalle régulier d'une demi-seconde.

VSYNC est donc la synchronisation verticale, permettant d'afficher une frame après l'autre.
Cela règle certain problème d'affichage. VSYNC est suivi du temps en 1/60ème de seconde.
Il ne fait que ralentir la puissance de la console pour que les frames s'affichent mieux au lieu de se
chevaucher. (frame est équivalent à image)

f)BUTTON Mode 2
BUTTON(2) est pratiquement très peu utilisé car la commande BTRIG() fait exactement la même chose que lui.
Le mode 2 ou BTRIG() signifie que BUTTON(2) ou BTRIG() prendra la valeur du bouton au moment où on appuie
dessus.
Code:
@BOUCLE
IF BTRIG()==1 THEN ?"Haut"
IF BUTTON(2)==2 THEN ?"Bas"
GOTO @BOUCLE
Quand on appuie sur le bouton haut ou bas, un texte s'affiche une seule fois.
On emploie souvent ce mode pour l'animation.

g)BUTTON Mode 3
Le mode 3 de BUTTON() signifie que BUTTON(3) prendra la valeur du bouton qu'une fois celui-ci relâché.
Code:
@BOUCLE
IF BUTTON(3)==2 THEN ?"Bas"
GOTO @BOUCLE
Le texte s'affichera qu'une fois le bouton bas relâché.

h)Intéraction tactile
Comme on le sait déjà, pour utiliser l'écran du bas il faut enlever le clavier et tout ce
qu'il y a autour avec PNLTYPE "OFF".
Pour que le programme sache qu'on touche l'écran, il faut utiliser la commande TCHST qui est une
variable système qui prend pour valeur 1 quand c'est touché et 0 quand on ne touche pas l'écran.
Avec elle, on a deux autres variables système TCHX et TCHY qui prendront pour valeur les
coordonnées X et Y en pixels (c'est à dire de 0 à 255 et de 0 à 191).
Code:
PNLTYPE "OFF"
CLS
@BOUCLE
IF TCHST THEN ?"X:";TCHX,"Y:";TCHY 'J'ai pas mis de ==1 dans la condition, devinez pourquoi :p
IF TCHST AND TCHX>127 THEN WAIT 5:LOCATE TCHX/8,TCHY/8:?"X" 'J'ai mis divisé par 8, devinez pourquoi :p
IF TCHST AND TCHX<128 THEN WAIT 5:LOCATE TCHX/8,TCHY/8:?"O"
GOTO @BOUCLE
Quand on touche l'écran tactile des X ou O s'affiche sur l'écran du haut.

Dernière variable système pour l'écran tactile : TCHTIME.
Elle prend pour valeur le temps en 1/60ème de seconde que l'écran est touché.
Code:
PNLTYPE "OFF"
CLS
@BOUCLE
IF TCHST AND TCHTIME>120 THEN LOCATE 0,0:?"Temps:";TCHTIME;"          "
GOTO @BOUCLE
Si on laisse l'écran touché plus de 2 secondes, Temps: sera affiché suivi de la valeur de TCHTIME qui
commencera donc à 120.


6)Interrogation 1 : Faire un premier programme simple des acquis
a)Apprenons d'abord à sauvegarder et à charger

On utilise pour sauvegarder un programme, la commande SAVE suivi du nom du programme entre guillemets.
Pour charger un programme, on utilise la commande LOAD suivi du nom du programme entre guillemets.
Le nom du programme ne doit pas dépasser 8 caractères.
Code:
SAVE"MON_JEU"
SAVE"PRG:MON_JEU" 'Deuxième manière de l'écrire en rajoutant PRG: pour spécifier que c'est un programme
LOAD"MON_JEU"
LOAD"PRG:MON_JEU",0 'On peut rajouter ,0 ou ,FALSE à la fin pour éviter d'avoir le message de confirmation

b)Terminer un programme
Vous devez déjà savoir que pour arrêter un programme, il suffit d'appuyer sur la touche select.
Mais il y a aussi une commande qui peut le faire, il s'agit de END.
END terminera donc le programme dès qu'il l'aura lu.

c)L'énoncé de l'interro 1
Tout le monde assis! Sortez vos consoles et lancez Petit Computer !
Et personne copie sur son voisin, interrogation surprise, qui était prévue en fait.
Vous allez essayer de créer votre premier vrai programme, en utilisant le maximum de commandes apprises.

Pour cette première interro, 2 problèmes !
Problème 1:
vous allez faire un questionnaire vous demandant de vous décrire physiquement.
Suivant vos réponses, votre portrait s'affichera en caractères sur l'écran du bas.
Deux questions obligatoires vous demanderont votre nom et votre âge qui seront eux aussi affichés sur l'écran.
Le questionnaire pourra être à choix multiples, et devra comporter moins de 10 questions.
Problème 2:
Vous allez faire avancer avec les touches et avec l'écran tactile, un personnage en caractère(s) sur
l'écran du haut. Son but sera de ramasser 7 objets par terre (pomme, coeur ou lettres) pour changer
de couleur. Une fois les 7 objets ramassés, un arc en ciel appraîtra et finira le jeu.
Menu titre obligatoire (Titre par défaut: Les 7 objets du ciel).

Si vous réussissez à faire un des deux programmes sans bugs, vous pouvez passer à la suite du guide.

< PARTIE 3  - SOMMAIRE -  PARTIE 5 >


Dernière édition par J8B le Ven 4 Sep - 3:36, édité 1 fois

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
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]Guide du débutant - Partie 4 Conditions et Interactions

Message par CounterClockWize le Lun 24 Aoû - 13:13

"IF TCHST THEN ?"X:";TCHX,"Y:";TCHY 'J'ai pas mis de ==1 dans la condition, devinez pourquoi :p"
Parce que "if tchst" la condition est rempli quand l'écran est touché donc la condition deviens automatiquement 1 ( true ) pendant que l'écran n'est pas touché la condition est automatiquement à 0 ( false ), puis une valeur est affecté pour les tchX et tchY suivant l'endroit touché mais cette valeur n'a rien avoir avec le 0 ou le 1 de la condition!
Tchst verifie la condition ( true ou false) puis les tchx et tchy reçoive une valeur...

Tu as divisé par 8 parce que c'est la taille d'un caractère ou de ton sprit ou pour suivre un découpage de zone sur ton écran, éventuellement pour interagir depuis l'écran inférieur vers l'écran supérieur.

_________________
If dindon =troue and marron =farce then ?"Chaud les marrons!" clown
avatar
CounterClockWize

Messages : 69
Date d'inscription : 23/08/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [Tutoriel]Guide du débutant - Partie 4 Conditions et Interactions

Message par J8B le Lun 24 Aoû - 20:50

Champion Counter !! cheers
Divisé par 8 c'est pour passer de la taille pixel à une taille caractère.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
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]Guide du débutant - Partie 4 Conditions et Interactions

Message par Adriendu92 le Mar 25 Aoû - 10:04

La division par 8 ne pose aucun problème à cause des virgules

_________________
Le monde se partage en 10 ! Ceux qui connaissent le binaire et ceux qui ne le connaissent pas ! study
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]Guide du débutant - Partie 4 Conditions et Interactions

Message par J8B le Mer 26 Aoû - 20:31

Pour afficher un caractère, les virgules vont être ignorées donc afficher un caractère à 9.75 revient à l'afficher à 9. On s'en apperçoit en faisant des tests study

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
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]Guide du débutant - Partie 4 Conditions et Interactions

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