Oyuncuyu Hareket Ettirme
Coddy'nin Lua Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 29 / 54.
Görev
KolayOyuncunun girişini kullanılabilir çıkışlarla karşılaştırarak odalar arasında gezinmesini sağlayan hareket sistemini uygulayın.
Önceki mücadeleden startingRoom, gardenRoom ve player değişkenleri size verilmiştir.
Hareket komutlarını işlemek için oyun döngüsünü değiştirin:
- Başlangıç kodu odaları birbirine bağlar: kütüphaneden
eastbahçeye,westise geri döndürür - Oyuncunun bulunduğu odanın açıklamasını yazdırın
- İstem metnini
"> "(büyüktür işareti ve ardından bir boşluk) yeni satır olmadan yazdırın - Kullanıcının komutunu
io.read()ile okuyun - Komutun, bulunduğunuz odanın
exitstablosundaki bir anahtarla eşleşip eşleşmediğini kontrol edin - Eşleşiyorsa,
player.currentRoomdeğerini bu çıkışta kayıtlı odayla güncelleyin - Komut
"quit"ise, döngüden çıkmak içingameRunningdeğerinifalseolarak ayarlayın
Kullanıcı "quit" yazana kadar döngü devam etmelidir.
Not: io.write("> ") yeni satır eklemediği için, sonraki çıktı satırı (oda açıklaması) ham çıktı akışında istemin hemen ardından görünür. Her döngü yinelemesi şunları üretir: kendi satırında oda açıklaması, ardından yeni satır olmadan > ; bu nedenle sonraki açıklama aynı satırda devam eder.
Beklenen Çıktı Biçimi (girdiler: önce east, ardından quit):
You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> Kendin dene
-- Oda tanımları
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 = {}
}
-- Çıkışları east / west kullanarak ayarla
startingRoom.exits = {
east = gardenRoom
}
gardenRoom.exits = {
west = startingRoom
}
-- Oyuncu
local player = {
currentRoom = startingRoom
}
-- Oyun döngüsü
local gameRunning = true
-- TODO: while döngüsünü buraya yaz
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