Parcours Le labyrinthe Étape 1
Un labyrinthe écrit en texte
Décrire un labyrinthe par neuf lignes de texte, puis le dessiner case par case : murs, couloirs, départ et sortie.
Notions :tableau de textesdouble indexboucles imbriquées
Comment donner un labyrinthe à un ordinateur ? Le plus simple est de le dessiner avec des caractères :
########### #D # # # # # ### #
#est un mur ;- une espace est un couloir ;
Dest le départ,Sla sortie.
Chaque ligne est un texte, et on range les 9 lignes dans un tableau, plan.
Lire une case
plan[lig] est la ligne n° lig (les tableaux commencent à 0). Et dans cette ligne, le caractère de la colonne col est plan[lig][col + 1], car les textes commencent à 1. Les deux règles se combinent dans la même expression.
Dessiner
Deux boucles imbriquées parcourent les 9 lignes et les 11 colonnes. Chaque case fait 30 pixels : elle se dessine en col * 30, 30 + lig * 30. On garde une bande de 30 pixels en haut pour afficher des informations plus tard.
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 lab est une toile (330 × 300), plan est un tableau et caseTxt est un texte.
Indice 2
Toutes les lignes du plan doivent avoir exactement 11 caractères, sinon le dessin se décale.
Indice 3
Dans la boucle : caseTxt vaut plan[lig][col + 1], puis trois cas selon le caractère.
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
lab est une toile
plan est un tableau
caseTxt est un texte
@ Le plan
plan ajoute "###########"
plan ajoute "#D # #"
plan ajoute "# # # ### #"
plan ajoute "# # # #"
plan ajoute "# ##### # #"
plan ajoute "# # # #"
plan ajoute "### # # # #"
plan ajoute "# # #S#"
plan ajoute "###########"
@ Le dessin
dimension(lab, 330, 300)
remplir(lab, #1E272E)
pour lig de 0 à 8
pour col de 0 à 10
caseTxt vaut plan[lig][col + 1]
si caseTxt = "#" alors
rectangle(lab, col * 30, 30 + lig * 30, 30, 30, #485460)
sinon si caseTxt = "S" alors
rectangle(lab, col * 30, 30 + lig * 30, 30, 30, #00BA7C)
sinon
rectangle(lab, col * 30, 30 + lig * 30, 30, 30, #F5F6FA)
fin si
fin pour
fin pour
affiche lab