Menu
CoddyTech

تحريك اللاعب

جزء من قسم المنطق وتسلسل التنفيذ في رحلة Lua على Coddy. الدرس 29 من 54.

challenge icon

التحدي

سهل

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

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

عدّل حلقة اللعبة للتعامل مع أوامر الحركة:

  • اربط الغرف: يؤدي الاتجاه east من المكتبة إلى الحديقة، ويؤدي الاتجاه west إلى العودة
  • اطبع وصف الغرفة الحالية للاعب
  • اطبع المطالبة "> " (علامة أكبر من تتبعها مسافة) دون سطر جديد
  • اقرأ أمر المستخدم باستخدام 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.
> 

جرّب بنفسك

-- تعريفات الغرف
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 = {}
}

-- حدّد المخارج باستخدام east / west
startingRoom.exits = {
  east = gardenRoom
}

gardenRoom.exits = {
  west = startingRoom
}

-- اللاعب
local player = {
  currentRoom = startingRoom
}

-- حلقة اللعبة
local gameRunning = true

-- TODO: اكتب حلقة while هنا

جميع دروس المنطق وتسلسل التنفيذ

تدرّب بنفسك: مترجم Lua عبر الإنترنت