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.
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ảngexitscủ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
exitscủa căn phòng hiện tại hay không - Nếu khớp, cập nhật
player.currentRoomthà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", đặtgameRunningthànhfalseđể 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
endTất cả bài học trong Logic và luồng chương trình
2Các hàm khác của thư viện table
table.concat()Tạo table và unpack()table.sort()Sắp xếp tùy chỉnh bằng hàmÔn tập: Bảng điểm cao5Dự án: Bộ máy trò chơi phiêu lưu bằng văn bản
Thiết lập dự án: Căn phòngLiên kết các phòngTự luyện tập: Trình biên dịch Lua online