如何优化文本冒险游戏中的多选项look命令实现?
优化文本冒险游戏Look命令的几种方案
针对你现在用一堆elif处理look命令的情况,有几个更简洁易维护的优化方向:
1. 合并相同输出的命令判断
把触发相同文本的命令放到一个集合里,用in关键字判断,省去重复的elif块:
from colorama import Back, Fore, Style # 把输出相同的命令归为一组 river_related_looks = {"look river", "look river bank"} water_look = "look water" if choice in river_related_looks: print(f"{Back.BLUE}河水浑浊不清。{Style.RESET_ALL}") print(f"{Fore.YELLOW}河里有什么东西在反射阳光。{Style.RESET_ALL}") elif choice == water_look: print(f"{Back.BLUE}河水浑浊不清。{Style.RESET_ALL}") print(f"{Fore.YELLOW}河里有什么东西。{Style.RESET_ALL}")
这种方式比一堆elif清爽很多,后续要加同类命令直接往集合里加就行。
2. 用字典做命令-输出映射(更适合扩展)
如果后续要加大量look命令,用字典映射是最优解,把每个命令对应到它的输出内容,灵活性拉满:
from colorama import Back, Fore, Style # 提取重复的输出片段,避免冗余 murky_water = f"{Back.BLUE}河水浑浊不清。{Style.RESET_ALL}" river_sun_reflect = f"{Fore.YELLOW}河里有什么东西在反射阳光。{Style.RESET_ALL}" river_something = f"{Fore.YELLOW}河里有什么东西。{Style.RESET_ALL}" # 定义命令与输出的映射关系 look_commands = { "look river": [murky_water, river_sun_reflect], "look river bank": [murky_water, river_sun_reflect], "look water": [murky_water, river_something] } # 执行命令逻辑 output = look_commands.get(choice) if output: for line in output: print(line) else: print("你不知道要看什么。") # 处理无效命令
后续新增命令只需要往字典里加键值对就行,完全不用改判断逻辑,维护起来特别方便。
3. 支持模糊匹配(进阶玩法)
如果想让玩家输入更灵活(比如输入"look at river"也能触发),可以拆分命令关键词,判断是否包含目标对象:
from colorama import Back, Fore, Style murky_water = f"{Back.BLUE}河水浑浊不清。{Style.RESET_ALL}" river_sun_reflect = f"{Fore.YELLOW}河里有什么东西在反射阳光。{Style.RESET_ALL}" river_something = f"{Fore.YELLOW}河里有什么东西。{Style.RESET_ALL}" choice_parts = choice.lower().split() if "river" in choice_parts: print(murky_water) print(river_sun_reflect) elif "water" in choice_parts: print(murky_water) print(river_something)
这样玩家输入的命令容错率更高,游戏体验更好。
内容的提问来源于stack exchange,提问作者Python_enjoyer
相关产品推荐
相关产品推荐

