You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python哥布林小游戏修改求助:显示血量与扩展攻击动词

哥布林攻击游戏修改方案

解决问题1:攻击后显示血量及对应描述

通过血量阈值映射实现不同血量对应不同台词:定义字典存储血量下限与对应描述,每次攻击后更新血量,再根据当前血量匹配对应台词。

解决问题2:添加通用攻击动词统一判定

将所有有效攻击动词存入列表,输入时拆分动词和名词,检查动词是否在列表内、名词是否为“哥布林”,满足条件则触发攻击逻辑。后续添加新动词只需往列表中补充即可。


完整示例代码

# 初始化哥布林血量
goblin_health = 100

# 所有有效攻击动词,可直接添加新动词扩展
attack_verbs = ["stab", "stroke", "hit", "slash", "punch"]

# 血量对应的描述,键为血量下限,值为对应台词
health_descriptions = {
    80: "Tis but a flesh wound!",
    50: "That stings a bit...",
    20: "I'm starting to feel it!",
    0: "Ugh... I'm done for!"
}

def get_health_description(health):
    # 从高到低匹配血量对应的描述
    for threshold in sorted(health_descriptions.keys(), reverse=True):
        if health >= threshold:
            return health_descriptions[threshold]
    return health_descriptions[0]

# 游戏主循环
while goblin_health > 0:
    user_input = input("输入攻击指令(格式:动词+哥布林,例:hit 哥布林):").strip().lower()
    input_parts = user_input.split()
    
    # 验证输入格式
    if len(input_parts) != 2:
        print("格式错误!请输入「动词+哥布林」的组合。")
        continue
    
    action, target = input_parts
    # 验证攻击有效性
    if action in attack_verbs and target == "哥布林":
        # 每次攻击扣除10血量,可自行调整数值
        goblin_health -= 10
        goblin_health = max(goblin_health, 0)  # 防止血量为负数
        # 输出血量和对应描述
        print(f"哥布林当前血量:{goblin_health}")
        print(get_health_description(goblin_health))
    else:
        print("无效指令!请使用有效攻击动词攻击哥布林。")

print("哥布林被击败了!游戏结束。")

关键逻辑说明

  1. 攻击动词扩展:要添加新攻击动词(比如kick、chop),直接往attack_verbs列表里加即可,无需修改其他逻辑。
  2. 血量描述匹配:get_health_description函数从高到低遍历阈值,确保当前血量匹配最贴合的台词,比如血量75时会匹配80阈值对应的“Tis but a flesh wound!”。
  3. 输入验证:先检查输入是否为“动词+名词”格式,再验证动词和目标是否符合要求,避免无效输入触发错误。

内容的提问来源于stack exchange,提问作者nichinungas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:25:28