Menu
Coddy logo textTech

Geçersiz Hamleleri Ele Alma

Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 30 / 54.

challenge icon

Görev

Kolay

Oyuncu geçersiz bir yön girdiğinde geri bildirim sağlamak için hareket sistemine hata ayıklama ekleyin.

Önceki görevden startingRoom, gardenRoom ve player değişkenleri size sağlanmıştır.

Geçersiz hareket komutlarını işlemek için oyun döngüsünü değiştirin:

  • Odaları north/south çıkışlarını kullanarak bağlayın: startingRoom.exits["north"] değerini gardenRoom olarak ve gardenRoom.exits["south"] değerini startingRoom olarak ayarlayın.
  • Oyuncunun bulunduğu mevcut odanın açıklamasını yazdırın.
  • Yeni satır eklemeden "> " istemini (büyüktür işareti ve ardından bir boşluk) yazdırın.
  • io.read() kullanarak kullanıcının komutunu okuyun.
  • Komutun, mevcut odanın exits tablosundaki bir anahtarla eşleşip eşleşmediğini kontrol edin.
  • Eğer eşleşirse, player.currentRoom değerini o çıkışta saklanan oda ile güncelleyin.
  • Komut herhangi bir çıkışla eşleşmiyorsa ve "quit" değilse, "You can't go that way." yazdırın.
  • Komut "quit" ise, döngüden çıkmak için gameRunning değerini false olarak ayarlayın.

Döngü, kullanıcı "quit" yazana kadar devam etmelidir.

Beklenen Çıktı Formatı:

You find yourself in a dusty library filled with ancient books and scrolls.
> 
A hidden garden with overgrown plants and a small fountain.
> 
You can't go that way.
A hidden garden with overgrown plants and a small fountain.
> 
You find yourself in a dusty library filled with ancient books and scrolls.
> 

Kendin dene

-- Room definitions
local startingRoom = {
  description = "You find yourself in a dusty library filled with ancient books and scrolls.",
  exits = {}
}

local gardenRoom = {
  description = "A hidden garden with overgrown plants and a small fountain.",
  exits = {}
}

-- Set exits using east / west
startingRoom.exits = {
  east = gardenRoom
}

gardenRoom.exits = {
  west = startingRoom
}

-- Player
local player = {
  currentRoom = startingRoom
}

-- Game loop
local gameRunning = true

while gameRunning do
  print(player.currentRoom.description)
  io.write("> ")
  local command = io.read()

  if command == "quit" then
    gameRunning = false
  elseif player.currentRoom.exits[command] then
    player.currentRoom = player.currentRoom.exits[command]
  end
end

Logic & Flow bölümündeki tüm dersler