Parcours Le casse-briques Étape 1
Le terrain et la raquette
Dessiner le terrain et une raquette arrondie en bas de l'écran, qu'on déplace avec les touches Q et D sans qu'elle sorte du cadre.
Notions :toilerectangle_arrondiappuyerlimiterprocédure
On repart des bases du Pong, mais la raquette est maintenant horizontale, en bas du terrain. Sa position est donnée par une seule variable : raqX, le bord gauche de la raquette.
Une procédure pour dessiner
Tout le dessin est rangé dans une procédure, dessinerScene. Au fil des étapes, on y ajoutera la balle, les briques, le score… mais on l'appellera toujours de la même façon : appelle dessinerScene().
rectangle_arrondi(ecran, x, y, largeur, hauteur, rayon, couleur) dessine un rectangle aux coins arrondis : la raquette fait 70 × 10 pixels, avec des coins de rayon 5.
Le clavier
appuyer ['q', 'd'] dans touche attend Q (1) ou D (2). On déplace la raquette de 30 pixels, puis on la garde dans le terrain :
raqX vaut limiter(raqX, 0, 330)
330, c'est 400 (la largeur du terrain) moins 70 (la largeur de la raquette) : au-delà, elle dépasserait à droite.
Pour l'instant, le programme principal redessine la scène après chaque touche. Dès l'étape suivante, ce sera le travail du processus.
Ouvrez CoddyRun et partez d'un programme vide : tout commence ici.
Indice 1
La raquette part du milieu : (400 − 70) ÷ 2 = 165.
Indice 2
rectangle_arrondi(ecran, raqX, 275, 70, 10, 5, #1D9BF0) : la raquette est à y = 275.
Indice 3
Le clavier ne répond pas ? Cliquez une fois dans la zone du programme.
Voir la solution complète
Essayez d'abord par vous-même : c'est en cherchant qu'on apprend. La solution sert à vérifier ou à se débloquer.
@ Les déclarations
ecran est une toile
raqX, touche est un nombre
@ Les dessins
procédure dessinerScene()
effacer(ecran)
remplir(ecran, #0D1117)
rectangle_arrondi(ecran, raqX, 275, 70, 10, 5, #1D9BF0)
affiche ecran
fin procédure
@ Programme principal
dimension(ecran, 400, 300)
raqX vaut 165
appelle dessinerScene()
tant que vrai
appuyer ['q', 'd'] dans touche
si touche = 1 alors
raqX soustrait 30
sinon
raqX ajoute 30
fin si
raqX vaut limiter(raqX, 0, 330)
appelle dessinerScene()
fin tant que