Parcours Le tir spatial Étape 1
Le vaisseau dans les étoiles
Dessiner un ciel étoilé et un vaisseau en bas de l'écran, que l'on déplace avec Q et D pendant qu'un processus redessine la scène.
Notions :processustrianglemaximum et minimum
La scène est redessinée en continu par un processus, comme dans le Pong. Le programme principal, lui, ne s'occupe que du clavier : les deux travaillent en même temps et partagent leurs variables.
Le ciel
50 étoiles sont tirées au hasard une seule fois, au démarrage, et rangées dans deux tableaux. Si on les tirait à chaque image, elles scintilleraient dans tous les sens !
Le vaisseau
Un triangle bleu pour la coque, un petit rectangle pour le canon, et une ellipse orange pour la flamme du réacteur. Tout est calculé à partir de x, la position du vaisseau : la procédure vaisseau(x) le dessine où l'on veut.
Rester dans l'écran
vaisseauX vaut maximum(20, vaisseauX - 20)
En allant à gauche, on ne descend jamais sous 20 : maximum garde la plus grande des deux valeurs. À droite, minimum(380, …) fait la même chose.
Pensez à cliquer dans la zone du programme pour que le clavier réponde.
Ouvrez CoddyRun et partez d'un programme vide : tout commence ici.
Il te faut le logiciel pour faire cette étape. Il est gratuit : crée ton compte pour le télécharger, puis reviens ici, ta place t'attend.
Créer mon compte et téléchargerIndice 1
Déclarez espace est une toile (400 × 300), vaisseauX, touche est un nombre et etoilesX, etoilesY est un tableau.
Indice 2
Le processus s'appelle Bataille() : il redessine la scène toutes les 60 ms.
Indice 3
La coque : triangle(espace, x, 255, x - 16, 285, x + 16, 285, #1D9BF0).
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
espace est une toile
vaisseauX, touche est un nombre
etoilesX, etoilesY est un tableau
@ Les dessins
procédure vaisseau(x)
ellipse(espace, x, 290, 4, 6, #FF7A00)
triangle(espace, x, 255, x - 16, 285, x + 16, 285, #1D9BF0)
rectangle(espace, x - 3, 250, 6, 12, #E6EDF3)
fin procédure
procédure dessinerEspace()
effacer(espace)
remplir(espace, #0D1117)
pour k de 0 à longueur(etoilesX) - 1
cercle(espace, etoilesX[k], etoilesY[k], 1, #8B949E)
fin pour
appelle vaisseau(vaisseauX)
affiche espace
fin procédure
@ Le jeu
processus Bataille()
tant que vrai
appelle dessinerEspace()
pause 60
fin tant que
fin processus
@ Programme principal
dimension(espace, 400, 300)
pour k de 1 à 50
etoilesX ajoute hasard(0, 400)
etoilesY ajoute hasard(0, 300)
fin pour
vaisseauX vaut 200
Bataille()
tant que vrai
appuyer ['q', 'd'] dans touche
si touche = 1 alors
vaisseauX vaut maximum(20, vaisseauX - 20)
sinon si touche = 2 alors
vaisseauX vaut minimum(380, vaisseauX + 20)
fin si
fin tant que