---
jupytext:
  text_representation:
    extension: .md
    format_name: myst
    format_version: 0.13
    jupytext_version: 1.15.1
kernelspec:
  display_name: C++17
  language: C++17
  name: xcpp17
---

# Laby, niveau 0: démonstration

1.  Exécutez la cellule suivante pour faire apparaître le labyrinthe.

    Ce labyrinthe sert de démonstration. Le programme dans la cellule
    encore en dessous permet à la fourmi d'en sortir, en lui donnant
    une suite d'ordres simples : avancer, tourner à droite, etc. La
    fourmi va s'amuser un peu avec le caillou et éviter la toile
    d'araignée.

2.  Exécutez le programme.

3.  Utilisez les boutons de commande du labyrinthe pour suivre
    l'exécution du programme pas-à-pas, en marche arrière, etc pour
    bien comprendre ce que fait la fourmi.

4.  Consultez la [documentation](#Documentation) ci-dessous. Les
    éléments qui y sont décrits vous servirons progressivement au fur
    et à mesure des défis. Vous reviendrez régulièrement la consulter.

5.  Passez au [niveau suivant](1a.md).

```{code-cell}
#include <laby/global_fr.hpp>
LABY("0")
```

```{code-cell}
debut();
droite();
avance();
prend();
gauche();
avance();
pose();
droite();
avance();
gauche();
avance();
avance();
droite();
ouvre();
```

<a name="Documentation"></a>
# Documentation

+++

## Constantes

<table>
    <tr><td>Mur         </td><td><img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/wall.svg"/></td>
        <td>Sortie      </td><td><img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/exit.svg"/></td></tr>
    <tr><td>Caillou     </td><td><img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/rock.svg"/>
        </td><td>PetitCaillou</td><td><img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/nrock.svg"/></td></tr>
    <tr><td>Toile       </td><td><img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/web.svg"/></td>
        <td>PetiteToile</td><td><img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/nweb.svg"/></td></tr>
    <tr><td>Vide        </td><td><img src="https://raw.githubusercontent.com/nthiery/laby-jupyter/master/share/laby/tiles/void.svg"/></td>
        <td>Inconnu     </td><td></td></tr>
</table>

## Instructions

    debut();        // Recommence le niveau

    avance();       // Fait un pas vers l'avant
    droite();       // Fait pivoter la fourmi vers la droite
    gauche();       // ou la gauche
    prend();        // Prend le caillou situé sur la case devant la fourmi
    pose();         // Pose le caillou devant la fourmi
    dit("bonjour"); // Dit bonjour
    regarde();      // Renvoie Vide, Caillou, PetitCaillou, Mur,
                    // Toile, PetiteToile, Sortie, ou Inconnu
                    // selon ce qui se trouve sur la case devant la fourmi

    ouvre();        // Ouvre la porte située devant la fourmi (fin du niveau)

## Constructions

Tant que la condition est respectée, répèter les instructions :

    while ( condition ) {
        instructions;
    }

Si condition est vrai, exécuter les instructions 1 sinon les instructions 2 :

    if ( condition ) {
        instructions1;
    } else {
        instructions2;
    }

Définition d'une fonction `ma_fonction` :

    void ma_fonction() {
        instructions;
    }
    
Boucle for avec compteur; ici pour compter de 0 à 4 inclus :

    for ( int i = 0 ; i <= 4 ; i++ ) {
        instructions;
    }