Menu
CoddyTech

Hiển thị lối ra

Thuộc phần Logic và luồng chương trình trong hành trình Lua của Coddy. Bài học 31 trên 54.

challenge icon

Thử thách

Dễ

Nâng cao trải nghiệm người dùng của trò chơi bằng cách hiển thị mọi lối ra hiện có cho người chơi sau khi hiển thị mô tả căn phòng.

Bạn được cung cấp các biến startingRoom, gardenRoom và player từ thử thách trước.

Sửa vòng lặp của trò chơi để hiển thị các lối ra hiện có:

  • In mô tả căn phòng hiện tại của người chơi
  • In "Exits:" trên một dòng mới
  • Dùng pairs() để lặp qua bảng exits của căn phòng hiện tại
  • Với mỗi lối ra, in " - " (hai dấu cách, một dấu gạch ngang và một dấu cách), sau đó là tên hướng
  • In lời nhắc "> " (dấu lớn hơn, theo sau là một dấu cách) mà không xuống dòng
  • Đọc lệnh của người dùng bằng io.read()
  • Kiểm tra xem lệnh có khớp với một khóa trong bảng exits của căn phòng hiện tại hay không
  • Nếu khớp, cập nhật player.currentRoom thành căn phòng được lưu trong lối ra đó
  • Nếu lệnh không khớp với lối ra nào và không phải "quit", in "You can't go that way."
  • Nếu lệnh là "quit", đặt gameRunning thành false để thoát vòng lặp

Vòng lặp sẽ tiếp tục cho đến khi người dùng nhập "quit".

Định dạng đầu ra mong đợi:

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
> 

Tự làm thử

-- 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

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Lua online