Utopian Architect

Fonctions

La fonction "main" contient la liste des instructions que vous donnez au robot. Vous pouvez utiliser ces instructions :

move(dir)
déplace le robot d'une case dans la direction "dir" passée en paramètre. dir peut valoir "left", "right", "up" ou "down" (attention, en minuscules).
left()
raccourci pour move("left")
right()
raccourci pour move("right")
up()
raccourci pour move("up")
down()
raccourci pour move("down")
drop(materiau)
lâche un bloc du matériau demandé, en dessous du robot. Le bloc va alors tomber. Le matériau peut être : "glass", "plank", "rock", "sand", "metal", "wood", "brick", "dirt", "leaves", "leaves2".
Vous pouvez également spécifier une couleur au format CSS : "#00FF00", "#450034". Si vous n'êtes pas habitué(e) à ces codes, vous pouvez vous aider de ce site par exemple.
wait()
fait attendre le robot.
console.log(message)
Affiche le message dans la console (utile pour le débug).
console.clear()
Nettoie la console.

Robot

Le robot connaît plusieurs choses utiles sur son environnement et sur lui même. Par exemple sa position, son altitude, et s'il a le droit de se déplacer dans telle ou telle direction. Vous pouvez utiliser ces information à profit, par exemple dans une condition "if" ou une boucle "for".

robot.canMove(direction)
Vérifie si le robot peut se déplacer dans la direction spécifiée ("left", "right", "up" ou "down").
robot.x
robot.y
Les coordonnées du robot sur la grille. L'origine du repère est en haut à gauche de la carte. Vous ne pouvez pas modifier ces valeurs.
robot.height
L'altitude du robot par rapport au premier bloc en dessous de lui. Une hauteur de 0 signifie que le robot est juste au dessus du sol.
robot.over
Le type de bloc au dessus duquel est le robot. Exemple : if (robot.over === 'leaves') { right() }

Création de fonctions

Vous pouvez créer de nouvelles fonctions avec le bouton + du menu de gauche et en lui donnant un nom (par exemple "maFonction"). Depuis votre fonction "main" (ou depuis une autre fonction d'ailleurs), vous pouvez l'appeler avec maFonction().

Voici par exemple une fonction qui va créer une colonne de 4 blocs de sable :

function colonne () {
    drop('sand');
    drop('sand');
    drop('sand');
    drop('sand');
}

Vous pouvez également passer à la fonction des paramètres optionnels. Par exemple on peut améliorer la fonction colonne pour en option lui donner un matériau :

function colonne (materiau) {
    drop(materiau);
    drop(materiau);
    drop(materiau);
    drop(materiau);
}

Si on utilise colonne('sand') on aura une colonne de 4 blocs de sable, et colonne('glass') nous donnera 4 blocs de verre.

On peut améliorer encore notre fonction colonne est ajoutant un autre paramètre : sa hauteur :

function colonne (materiau, hauteur) {
    for (var i = 0; i < hauteur; i = i + 1) {
        drop(materiau);
    }
}

Si on utilise colonne('sand', 3) on aura une colonne de 3 blocs de sable, et colonne('glass', 7) nous donnera 7 blocs de verre.

Exemples de codes utiles

Pour désactiver du code :

    // ce code est désactivé, car il est précédé de "//"

Pour mettre des conditions :

if (robot.height < 3) {
    // commandes à effectuer si height < 3
} else {
    // commandes à effectuer sinon
}

Pour répéter quelque chose :

for (var i = 0; i < 15; i = i + 1) {
    // ce qui est ici sera fait 15 fois
}

Pour créer un tableau et le parcourir :

var list = ["rock", "plank", "sand"];

for (var i= 0; i < list.length; i++) {
    // ce qui est ici sera fait autant de fois que d'éléments dans le tableau
    // on peut utiliser l'élément i du tableau avec : list[i]

    // par exemple pour du pur affichage :
    console.log(list[i]);

    // ou pour de la construction :
    drop(list[i]);
}