عرض المخارج
جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy. الدرس 31 من 54.
التحدي
سهلقم بتحسين تجربة المستخدم في اللعبة من خلال عرض جميع المخارج المتاحة للاعب بعد إظهار وصف الغرفة.
لقد تم تزويدك بمتغيرات startingRoom و gardenRoom و player من التحدي السابق.
قم بتعديل حلقة اللعبة (game loop) لعرض المخارج المتاحة:
- اطبع وصف الغرفة الحالية للاعب
- اطبع
"Exits:"في سطر جديد - استخدم
pairs()للتكرار عبر جدولexitsالخاص بالغرفة الحالية - لكل مخرج، اطبع
" - "(مسافتان، شرطة، ومسافة) متبوعة باسم الاتجاه - اطبع رسالة الحث
"> "(علامة أكبر من متبوعة بمسافة) بدون سطر جديد - اقرأ أمر المستخدم باستخدام
io.read() - تحقق مما إذا كان الأمر يطابق مفتاحاً في جدول
exitsالخاص بالغرفة الحالية - إذا تطابق، قم بتحديث
player.currentRoomإلى الغرفة المخزنة في ذلك المخرج - إذا لم يتطابق الأمر مع أي مخرج ولم يكن
"quit"، اطبع"You can't go that way." - إذا كان الأمر
"quit"، قم بتعيينgameRunningإلىfalseللخروج من الحلقة
يجب أن تستمر الحلقة حتى يكتب المستخدم "quit".
تنسيق المخرجات المتوقع:
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
>
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You can't go that way.
A hidden garden with overgrown plants and a small fountain.
Exits:
- west
>
You find yourself in a dusty library filled with ancient books and scrolls.
Exits:
- east
> جرّب بنفسك
-- 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 = {}
}
-- Connect rooms
startingRoom.exits["north"] = gardenRoom
gardenRoom.exits["south"] = 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]
else
print("You can't go that way.")
end
endجميع دروس المنطق والتحكم في التدفق
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج5مشروع: محرك مغامرة نصية
إعداد المشروع: الغرفةربط الغرفتدرّب بنفسك: مترجم Lua عبر الإنترنت