Menu
Coddy logo textTech

Récapitulatif - Assemblage de robots

Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 54 sur 70.

challenge icon

Défi

Facile

Assemblons un Robot à partir de composants individuels ! Au lieu d'utiliser l'héritage, vous allez construire un robot en le composant à partir d'objets Arm, Leg et Head séparés — chacun ayant son propre comportement spécialisé. Le robot coordonnera ces parties par délégation.

Vous organiserez votre code sur cinq fichiers :

  • Arm.lua : Créez une classe Arm avec un constructeur :new(side) qui stocke de quel côté il se trouve (par exemple, "left" ou "right"). Incluez une méthode :raise() qui affiche {side} arm raised et une méthode :lower() qui affiche {side} arm lowered.
  • Leg.lua : Créez une classe Leg avec un constructeur :new(side) qui stocke le côté. Incluez une méthode :step() qui affiche {side} leg steps forward.
  • Head.lua : Créez une classe Head avec un constructeur :new(). Incluez une méthode :nod() qui affiche Head nods et une méthode :shake() qui affiche Head shakes.
  • Robot.lua : Créez une classe Robot dont le constructeur :new(name) stocke le nom et crée toutes les pièces composantes en interne : un bras gauche, un bras droit, une jambe gauche, une jambe droite et une tête. Le robot doit avoir ces méthodes qui délèguent à ses parties :
    • :greet() — affiche {name} says hello!, puis lève le bras droit, puis l'abaisse
    • :walk() — fait avancer la jambe gauche, puis la jambe droite
    • :respond(answer) — si la réponse est "yes", la tête fait un signe de tête ; si c'est "no", la tête secoue
  • main.lua : Lisez les entrées pour le nom du robot et une réponse yes/no. Créez un Robot, faites-le saluer, marcher, puis répondre en fonction de l'entrée.

Vous recevrez deux entrées :

  1. Le nom du robot (une chaîne de caractères)
  2. Une réponse : yes ou no

Votre sortie devrait montrer le robot coordonnant ses parties :

{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nods

Ou si la réponse est no :

{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head shakes

Par exemple, si les entrées sont Robo et yes, la sortie devrait être :

Robo says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nods

Remarquez comment le Robot ne sait pas comment les bras se lèvent ou les jambes marchent — il dit simplement à chaque partie quoi faire. Chaque composant est indépendant et réutilisable, et le robot agit comme un coordinateur les réunissant tous ensemble !

Essayez vous-même

-- main.lua: Point d'entrée pour le défi de composition du Robot

local Robot = require('Robot')

-- Lire les entrées
local name = io.read()
local answer = io.read()

-- TODO: Créer un Robot avec le nom donné
-- TODO: Faire en sorte que le robot salue
-- TODO: Faire en sorte que le robot marche
-- TODO: Faire en sorte que le robot réponde en fonction de l'entrée answer

Toutes les leçons de Object Oriented Programming