Menu
Coddy logo textTech

Özet - Robot Birleştirme

Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 54 / 70.

challenge icon

Görev

Kolay

Ayrı bileşen parçalarından bir Robot monte edelim! Kalıtım kullanmak yerine, bir robotu her biri kendi özel davranışına sahip ayrı Arm, Leg ve Head nesnelerinden oluşturarak inşa edeceksiniz. Robot, bu parçaları delegasyon yoluyla koordine edecektir.

Kodunuzu beş dosya halinde düzenleyeceksiniz:

  • Arm.lua: Hangi tarafta olduğunu (örneğin, "left" veya "right") saklayan bir :new(side) yapıcı metoduna (constructor) sahip bir Arm sınıfı oluşturun. {side} arm raised yazdıran bir :raise() metodu ve {side} arm lowered yazdıran bir :lower() metodu ekleyin.
  • Leg.lua: Tarafı saklayan bir :new(side) yapıcı metoduna sahip bir Leg sınıfı oluşturun. {side} leg steps forward yazdıran bir :step() metodu ekleyin.
  • Head.lua: Bir :new() yapıcı metoduna sahip bir Head sınıfı oluşturun. Head nods yazdıran bir :nod() metodu ve Head shakes yazdıran bir :shake() metodu ekleyin.
  • Robot.lua: Yapıcı metodu :new(name) olan, ismi saklayan ve tüm bileşen parçalarını dahili olarak oluşturan bir Robot sınıfı oluşturun: bir sol kol, bir sağ kol, bir sol bacak, bir sağ bacak ve bir kafa. Robot, parçalarına delege eden şu metodlara sahip olmalıdır:
    • :greet(){name} says hello! yazdırır, ardından sağ kolu kaldırır, sonra indirir
    • :walk() — sol bacağın adım atmasını, ardından sağ bacağın adım atmasını sağlar
    • :respond(answer) — eğer cevap "yes" ise kafa sallanır (nod); eğer "no" ise kafa iki yana sallanır (shake)
  • main.lua: Robotun adı ve bir evet/hayır yanıtı için girdileri okuyun. Bir Robot oluşturun, onu selamlatın, yürütün ve ardından girdiye göre yanıt vermesini sağlayın.

İki girdi alacaksınız:

  1. Robotun adı (bir dize)
  2. Bir yanıt: yes veya no

Çıktınız, robotun parçalarını koordine ettiğini göstermelidir:

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

Veya yanıt no ise:

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

Örneğin, girdiler Robo ve yes ise, çıktı şöyle olmalıdır:

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

Robotun kolların nasıl kalktığını veya bacakların nasıl adım attığını bilmediğine dikkat edin; o sadece her parçaya ne yapacağını söyler. Her bileşen bağımsız ve yeniden kullanılabilirdir ve robot hepsini bir araya getiren bir koordinatör görevi görür!

Kendin dene

-- main.lua: Robot kompozisyon yarışması için giriş noktası

local Robot = require('Robot')

-- Girdileri oku
local name = io.read()
local answer = io.read()

-- TODO: Verilen isimle bir Robot oluştur
-- TODO: Robotun selam vermesini sağla
-- TODO: Robotun yürümesini sağla
-- TODO: Robotun cevap girdisine göre yanıt vermesini sağla

Object Oriented Programming bölümündeki tüm dersler