Menu
Coddy logo textTech

הזזת השחקן

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 29 מתוך 54.

challenge icon

אתגר

קל

ממשו את מערכת התנועה שמאפשרת לשחקן לעבור בין חדרים באמצעות בדיקת הקלט שלו מול היציאות הזמינות.

המשתנים startingRoom, gardenRoom ו-player מהאתגר הקודם זמינים לכם.

שנו את לולאת המשחק כדי לטפל בפקודות תנועה:

  • הדפיסו את התיאור של החדר הנוכחי של השחקן
  • הדפיסו את ההנחיה "> " (סימן גדול מ־ ואחריו רווח) ללא מעבר שורה
  • קראו את הפקודה של המשתמש באמצעות 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

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Lua אונליין