Python 实现角色主动技:从技能池选技代码及开发注意要点
以下是一个使用 Python 实现该“主动技”功能的简单代码示例,假设我们有一个角色类,角色有技能列表,并且有一个全局的技能池。 ```python # 定义技能类 class Skill: def __init__(self, name, is_limit_skill=False): # 技能名称 self.name = name # 是否为限定技 self.is_limit_skill = is_limit_skill def __str__(self): return self.name # 定义角色类 class Character: def __init__(self, name, skills): # 角色名称 self.name = name # 角色拥有的技能列表 self.skills = skills # 记录本回合是否已经使用过主动技 self.used_active_skill_this_round = False def active_skill(self, skill_pool): # 检查本回合是否已经使用过主动技 if self.used_active_skill_this_round: print(f"{self.name} 本回合已经使用过主动技,无法再次使用。") return # 筛选出不是场上角色技能且非限定技的技能 available_skills = [skill for skill in skill_pool if skill not in self.skills and not skill.is_limit_skill] # 检查是否有至少三个可用技能 if len(available_skills) < 3: print(f"可用技能不足三个,无法使用主动技。") return # 随机选择三个技能 import random selected_skills = random.sample(available_skills, 3) print(f"{self.name} 可以从以下三个技能中选择一个:") for i, skill in enumerate(selected_skills, 1): print(f"{i}. {skill}") # 让用户选择一个技能 while True: try: choice = int(input("请输入你要选择的技能编号 (1-3): ")) if 1 <= choice <= 3: chosen_skill = selected_skills[choice - 1] self.skills.append(chosen_skill) print(f"{self.name} 获得了技能: {chosen_skill}") self.used_active_skill_this_round = True break else: print("输入的编号无效,请输入 1-3 之间的数字。") except ValueError: print("输入无效,请输入一个整数。") # 示例使用 # 创建一些技能 skill1 = Skill("技能1") skill2 = Skill("技能2") skill3 = Skill("技能3") skill4 = Skill("技能4") skill5 = Skill("技能5", is_limit_skill=True) # 创建一个技能池 skill_pool = [skill1, skill2, skill3, skill4, skill5] # 创建一个角色 character = Character("角色1", []) # 使用主动技 character.active_skill(skill_pool) ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 技能筛选时要确保准确排除场上角色已有的技能和限定技,避免逻辑错误。 2. 处理用户输入时,要考虑各种异常情况,如输入非整数、输入超出范围的数字等,保证程序的健壮性。 3. 每回合使用主动技的限制需要正确记录和检查,防止角色多次使用主动技。 ######[AI写代码神器 | 782点数解答 | 2025-08-06 19:38:00]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)478
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)362
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)205
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)432
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)426
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)333
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)406
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)429
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)542
- 解决Java调用Python接口时中文值乱码问题:设置字符编码为UTF-8(讯飞星火 | 264点数解答 | 2024-06-06 17:27:09)406
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)487
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)371