Python 进阶
项目:文字冒险游戏(下)
完成游戏主循环和交互系统
- 实现游戏主循环
- 命令解析和帮助系统
- 物品使用和胜利条件
Game 主循环
Python
class Game:
def __init__(self):
self.create_world()
self.player = Player("勇者", self.start_room)
self.running = True
def create_world(self):
hall = Room("大厅", "古老的大厅,墙上挂着剑")
garden = Room("花园", "美丽的花园,有一口井")
cave = Room("洞穴", "黑暗的洞穴,金光闪烁")
hall.add_exit("东", garden)
garden.add_exit("西", hall)
garden.add_exit("北", cave)
cave.add_exit("南", garden)
hall.add_item("剑")
garden.add_item("钥匙")
self.start_room = hall
def parse_command(self, cmd):
parts = cmd.strip().split()
if not parts:
return
verb = parts[0]
if verb == "看":
self.player.current.look()
elif verb == "去" and len(parts) > 1:
self.player.go(parts[1])
elif verb == "拿" and len(parts) > 1:
self.player.take(parts[1])
elif verb == "背包":
print(f"背包:{self.player.inventory or "空"}")
elif verb == "退出":
self.running = False
print("再见!")
else:
print("命令:看/去 方向/拿 物品/背包/退出")
# 演示(自动执行命令)
game = Game()
for cmd in ["看", "拿 剑", "去 东", "看", "拿 钥匙", "背包"]:
print(f"> {cmd}")
game.parse_command(cmd)💡扩展方向
加锁的门需要钥匙NPC对话系统战斗系统更多谜题存档读档(JSON序列化)
胜利条件
示例代码(可运行)
Python 0%
预测输出
inv = ["剑", "钥匙"]
print("钥匙" in inv)填空题填写空白处的代码
cmd = "去 东"
parts = cmd.split()
print(parts[0]) #
print(parts[1]) #
选择题
游戏主循环的核心模式?
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
list 底层是一段连续的指针数组,容量不够时整体扩容(CPython 约按 1.125 倍)。因此按下标取元素是 O(1),末尾 append 均摊 O(1),但在头部 insert(0,…) 或 pop(0) 要搬动全部元素、是 O(n)。dict/set 基于哈希表,平均查找 O(1) 但更耗内存。选对数据结构,往往比抠语法更影响性能。
挑战任务
完整游戏
简单+50 XP
就做个带3个房间、能捡物品、有胜利条件的完整游戏。
完整游戏
Python 0%
2 个测试用例
课后作业
扩展游戏
中等+20 XP
添加战斗系统或更多谜题。
扩展游戏
Python 0%
1 个测试用例