| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- # -*- coding: utf-8 -*-
- """三国狼人杀角色定义"""
- from typing import Dict, List
- class GameRoles:
- """游戏角色管理类"""
-
- ROLES = {
- "狼人": {
- "description": "狼人",
- "ability": "夜晚可以击杀一名玩家",
- "win_condition": "消灭所有好人或与好人数量相等",
- "team": "狼人阵营"
- },
- "预言家": {
- "description": "预言家",
- "ability": "每晚可以查验一名玩家的身份",
- "win_condition": "消灭所有狼人",
- "team": "好人阵营"
- },
- "女巫": {
- "description": "女巫",
- "ability": "拥有解药和毒药各一瓶,可以救人或杀人",
- "win_condition": "消灭所有狼人",
- "team": "好人阵营"
- },
- "猎人": {
- "description": "猎人",
- "ability": "被投票出局时可以开枪带走一名玩家",
- "win_condition": "消灭所有狼人",
- "team": "好人阵营"
- },
- "村民": {
- "description": "村民",
- "ability": "无特殊技能,依靠推理和投票",
- "win_condition": "消灭所有狼人",
- "team": "好人阵营"
- },
- "守护者": {
- "description": "守护者",
- "ability": "每晚可以守护一名玩家免受狼人攻击",
- "win_condition": "消灭所有狼人",
- "team": "好人阵营"
- }
- }
-
- CHARACTER_TRAITS = {
- "刘备": "仁德宽厚,善于团结众人,说话温和有礼",
- "关羽": "忠义刚烈,言辞直接,重情重义",
- "张飞": "性格豪爽,说话大声直接,容易冲动",
- "诸葛亮": "智慧超群,分析透彻,言辞谨慎",
- "赵云": "忠勇双全,话语简洁有力",
- "曹操": "雄才大略,善于权谋,话语犀利",
- "司马懿": "深谋远虑,城府极深,言辞含蓄",
- "周瑜": "才华横溢,略显傲气,分析精准",
- "孙权": "年轻有为,善于决断,话语果决"
- }
-
- @classmethod
- def get_role_desc(cls, role: str) -> str:
- """获取角色描述"""
- return cls.ROLES.get(role, {}).get("description", "未知角色")
-
- @classmethod
- def get_role_ability(cls, role: str) -> str:
- """获取角色技能"""
- return cls.ROLES.get(role, {}).get("ability", "无特殊技能")
-
- @classmethod
- def get_character_trait(cls, character: str) -> str:
- """获取角色性格特点"""
- return cls.CHARACTER_TRAITS.get(character, "性格温和,说话得体")
-
- @classmethod
- def is_werewolf(cls, role: str) -> bool:
- """判断是否为狼人"""
- return role == "狼人"
-
- @classmethod
- def is_villager_team(cls, role: str) -> bool:
- """判断是否为好人阵营"""
- return cls.ROLES.get(role, {}).get("team") == "好人阵营"
-
- @classmethod
- def get_standard_setup(cls, player_count: int) -> List[str]:
- """获取标准角色配置"""
- if player_count == 6:
- return ["狼人", "狼人", "预言家", "女巫", "村民", "村民"]
- elif player_count == 8:
- return ["狼人", "狼人", "狼人", "预言家", "女巫", "猎人", "村民", "村民"]
- elif player_count == 9:
- return ["狼人", "狼人", "狼人", "预言家", "女巫", "猎人", "守护者", "村民", "村民"]
- else:
- # 默认配置:约1/3狼人
- werewolf_count = max(1, player_count // 3)
- roles = ["狼人"] * werewolf_count
-
- # 添加神职
- remaining = player_count - werewolf_count
- if remaining >= 1:
- roles.append("预言家")
- remaining -= 1
- if remaining >= 1:
- roles.append("女巫")
- remaining -= 1
- if remaining >= 1:
- roles.append("猎人")
- remaining -= 1
-
- # 剩余为村民
- roles.extend(["村民"] * remaining)
-
- return roles
|