Parcours La bataille navale Étape 1
Les deux grilles
Dessiner deux grilles de 10 × 10 avec leurs lettres et leurs numéros, grâce à une seule procédure qui reçoit la position de la grille.
Notions :procédure à paramètresboucles imbriquéescaractère
Les deux grilles sont identiques, seule leur position change : votre flotte à gauche en (30, 50), celle de l'adversaire à droite en (310, 50). Une seule procédure les dessine, avec la position en paramètres :
appelle dessinerGrille(30, 50, "Votre flotte") appelle dessinerGrille(310, 50, "La flotte adverse")
Chaque case fait 23 pixels, avec 1 pixel d'écart : la case de la ligne gl et de la colonne gc commence en ox + gc * 24, oy + gl * 24.
Les lettres et les numéros
On repère les cases comme au jeu sur papier : une lettre pour la colonne, un numéro pour la ligne. caractère(65 + gc) donne la lettre : 65 est le code de « A », 66 celui de « B »… jusqu'à « J » pour la colonne 9.
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
La toile fait 560 × 335 pixels : deux grilles de 240 pixels, plus les marges.
Indice 2
Les numéros se placent 18 pixels à gauche de la grille : ox - 18.
Indice 3
Les variables de boucle gl et gc sont propres à la procédure.
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
jeu est une toile
@ Le dessin d'une grille
procédure dessinerGrille(ox, oy, titre)
label(jeu, ox, oy - 26, titre, #FFFFFF, 14)
pour gc de 0 à 9
// les lettres A à J au-dessus des colonnes
label(jeu, ox + gc * 24 + 7, oy - 5, caractère(65 + gc), #85C1E9, 11)
fin pour
pour gl de 0 à 9
label(jeu, ox - 18, oy + gl * 24 + 16, convertir_texte(gl + 1), #85C1E9, 11)
pour gc de 0 à 9
rectangle(jeu, ox + gc * 24, oy + gl * 24, 23, 23, #1B4F72)
fin pour
fin pour
fin procédure
@ Programme principal
dimension(jeu, 560, 335)
remplir(jeu, #0B1F33)
appelle dessinerGrille(30, 50, "Votre flotte")
appelle dessinerGrille(310, 50, "La flotte adverse")
affiche jeu