Geçersiz Hamleleri Ele Alma
Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 30 / 54.
Görev
KolayOyuncu geçersiz bir yön girdiğinde geri bildirim sağlamak için hareket sistemine hata işleme 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ı kuzey/güney çıkışlarını kullanarak birbirine bağlayın:
startingRoom.exits["north"]değerinigardenRoomolarak vegardenRoom.exits["south"]değerinistartingRoomolarak 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 - Kullanıcının komutunu
io.read()kullanarak okuyun - Komutun mevcut odanın
exitstablosundaki bir anahtarla eşleşip eşleşmediğini kontrol edin - Eşleşiyorsa
player.currentRoomdeğerini o çıkışta saklanan odayla güncelleyin - Komut hiçbir çıkışla eşleşmiyor ve
"quit"değilse"You can't go that way."yazdırın - Komut
"quit"ise döngüden çıkmak içingameRunningdeğerinifalseolarak ayarlayın
Kullanıcı "quit" yazana kadar döngü devam etmelidir.
Beklenen Çıktı Biçimi:
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
Mantık ve Akış bölümündeki tüm dersler
1İleri Düzey Tablo Yineleme
pairs() ile Yinelemeipairs() ile Yinelemepairs() vs. ipairs()Özet - Karakter Sayfası2Daha Fazla Tablo Kütüphanesi Fonksiyonu
table.concat()Tablo Oluşturma ve unpack()table.sort()Fonksiyonlar ile Özel SıralamaÖzet - Yüksek Skor Tablosu5Proje: Metin Tabanlı Macera Motoru
Proje Kurulumu: OdaOdaları BağlamaKendi başına pratik yap: Online Lua derleyicisi