Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تحريك اللاعب

جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 29 من 54.

challenge icon

التحدي

سهل

قم بتنفيذ نظام الحركة الذي يسمح للاعب بالتنقل بين الغرف من خلال التحقق من مدخلاتهم مقابل المخارج المتاحة.

لقد تم تزويدك بمتغيرات startingRoom و gardenRoom و player من التحدي السابق.

قم بتعديل حلقة اللعبة (game loop) للتعامل مع أوامر الحركة:

  • اطبع وصف الغرفة الحالية للاعب
  • اطبع علامة الإدخال "> " (علامة أكبر من متبوعة بمسافة) بدون سطر جديد
  • اقرأ أمر المستخدم باستخدام io.read()
  • تحقق مما إذا كان الأمر يطابق مفتاحاً في جدول exits الخاص بالغرفة الحالية
  • إذا تطابق، قم بتحديث player.currentRoom إلى الغرفة المخزنة في ذلك المخرج
  • إذا كان الأمر هو "quit"، فقم بتعيين gameRunning إلى false للخروج من الحلقة

يجب أن تستمر الحلقة حتى يكتب المستخدم "quit".

ملاحظة: لأن io.write("> ") لا يضيف سطراً جديداً، فإن السطر التالي من المخرجات (وصف الغرفة) يظهر مباشرة بعد علامة الإدخال في نفس السطر في تدفق المخرجات الخام. تنتج كل دورة في الحلقة: وصف الغرفة في سطر خاص به، ثم > بدون سطر جديد، بحيث يستمر الوصف التالي في نفس السطر.

تنسيق المخرجات المتوقع (المدخلات: east، ثم quit):

You find yourself in a dusty library filled with ancient books and scrolls.
> A hidden garden with overgrown plants and a small fountain.
> 

جرّب بنفسك

-- Game rooms
local startingRoom = {
    description = "You find yourself in a dusty library filled with ancient books and scrolls."
}

local gardenRoom = {
    description = "You step into a beautiful garden with blooming flowers and a gentle breeze."
}

-- Player
local player = {
    currentRoom = startingRoom
}

-- Game loop
local gameRunning = true

while gameRunning do
    print(player.currentRoom.description)
    io.write("> ")
    local command = io.read()
    print("You entered: " .. command)
    
    if command == "quit" then
        gameRunning = false
    end
end

جميع دروس Logic & Flow