Menu
Coddy logo textTech

Özet - Robot Birleştirme

Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 54 / 70.

challenge icon

Görev

Kolay

Bireysel bileşen parçalarından bir Robot oluşturalım! Kalıtım kullanmak yerine, robotu ayrı Arm, Leg ve Head nesnelerinden bir araya getirerek oluşturacaksın: her birinin kendine özgü davranışı olacak. Robot, bu parçaları delegasyon yoluyla koordine edecek.

Kodunu beş dosyaya ayıracaksın:

  • Arm.lua: :new(side) yapıcısına sahip bir Arm sınıfı oluştur; bu yapıcı kolun hangi tarafta olduğunu (örneğin "left" veya "right") saklasın. :raise() yazdıran bir {side} arm raised metodu ve :lower() yazdıran bir {side} arm lowered metodu ekle.
  • Leg.lua: :new(side) yapıcısına sahip bir Leg sınıfı oluştur; bu yapıcı tarafı saklasın. :step() yazdıran bir {side} leg steps forward metodu ekle.
  • Head.lua: :new() yapıcısına sahip bir Head sınıfı oluştur. :nod() yazdıran bir Head nods metodu ve :shake() yazdıran bir Head shakes metodu ekle.
  • Robot.lua: :new(name) yapıcısı adı saklayan ve tüm bileşen parçalarını dahili olarak oluşturan bir Robot sınıfı oluştur: bir sol kol, bir sağ kol, bir sol bacak, bir sağ bacak ve bir baş. Robotun, parçalarına delegasyon yapan şu metotları olmalı:
    • :greet(): {name} says hello! yazdırır, ardından sağ kolu kaldırır ve sonra indirir
    • :walk(): önce sol bacağın, sonra sağ bacağın adım atmasını sağlar
    • :respond(answer): answer "yes" ise baş başını sallar; "no" ise başını iki yana sallar
  • main.lua: Robotun adı ve evet/hayır yanıtı için girdileri oku. Bir Robot oluştur, selam vermesini ve yürümesini sağla, ardından girdiye göre yanıt vermesini sağla.

İki girdi alacaksın:

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

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

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

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ı:

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

Robotun kolların nasıl kaldırıldığını veya bacakların nasıl adım attığını bilmediğine dikkat et. Robot yalnızca her parçaya ne yapacağını söyler. Her bileşen bağımsız ve yeniden kullanılabilir; robot ise hepsini bir araya getiren bir koordinatör olarak görev yapar!

Kendin dene

-- main.lua: Robot composition challenge 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

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Lua derleyicisi