معالجة الحركات غير الصالحة
جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 30 من 54.
التحدي
سهلأضف معالجة الأخطاء إلى نظام الحركة لتقديم ملاحظات عندما يدخل اللاعب اتجاهاً غير صالح.
لقد تم تزويدك بمتغيرات startingRoom و gardenRoom و player من التحدي السابق.
قم بتعديل حلقة اللعبة (game loop) للتعامل مع أوامر الحركة غير الصالحة:
- قم بتوصيل الغرف باستخدام مخارج north/south: قم بتعيين
startingRoom.exits["north"]إلىgardenRoom، وgardenRoom.exits["south"]إلىstartingRoom - اطبع وصف الغرفة الحالية للاعب
- اطبع المطالبة
"> "(علامة أكبر من متبوعة بمسافة) بدون سطر جديد - اقرأ أمر المستخدم باستخدام
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.
>
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.
> جرّب بنفسك
-- 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
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج5مشروع: محرك مغامرة نصية
إعداد المشروع: الغرفةربط الغرف