CoddyRun

Parcours Le serpent (Snake) Étape 1

Étape 1 sur 8

La grille de jeu

Dessiner un terrain de 20 × 20 cases de 15 pixels, et colorer une case de test à partir de son numéro de colonne et de ligne.

Notions :constantegrilleconversion case → pixels

Le résultat final du parcours : Le serpent (Snake)
Le résultat final du projet
Ce qu'il faut savoir

Le serpent ne se déplace pas pixel par pixel mais case par case. Le programme raisonnera donc en cases (colonne, ligne), et ne convertira en pixels qu'au moment de dessiner.

Deux constantes

cote est une constante vaut 15
nbCases est une constante vaut 20

Une constante ne peut plus changer. Toute la taille du jeu en découle : la toile mesure nbCases * cote = 300 pixels de côté. Envie de cases plus grosses ? On change un seul nombre.

Le nom taille serait tentant, mais c'est déjà une fonction native : d'où cote.

Dessiner la grille

grille(toile, pas, couleur) trace un quadrillage régulier : avec un pas de 15, une ligne tous les 15 pixels.

De la case au pixel

La case de la colonne 5 et de la ligne 3 commence à x = 5 × 15 = 75 et y = 3 × 15 = 45 :

rectangle(terrain, 5 * cote, 3 * cote, cote, cote, #00BA7C)

Les colonnes et les lignes sont numérotées à partir de 0, comme les cases d'un tableau : elles vont de 0 à 19.

Code de départ

Ouvrez CoddyRun et partez d'un programme vide : tout commence ici.

Besoin d'aide ?
Indice 1

dimension(terrain, nbCases * cote, nbCases * cote) : la taille se calcule à partir des constantes.

Indice 2

Le fond : remplir(terrain, #0F1923), puis grille(terrain, cote, #1C2B3A).

Indice 3

Essayez de colorer la case (19, 19) : elle doit être tout en bas à droite. Et la case (20, 20) ? Elle sort de la toile.

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
terrain est une toile
cote est une constante vaut 15
nbCases est une constante vaut 20

@ La grille
dimension(terrain, nbCases * cote, nbCases * cote)
remplir(terrain, #0F1923)
grille(terrain, cote, #1C2B3A)
// une case de test : colonne 5, ligne 3
rectangle(terrain, 5 * cote, 3 * cote, cote, cote, #00BA7C)
affiche terrain