public bool IsMatch(MonsterSidePattern pattern) { // 「~である」系 条件を満たさない場合をチェック if ((isWerewolf & pattern.IsWerewolfBits) != isWerewolf) { return(false); } if ((isPossessed & pattern.IsPossessedBits) != isPossessed) { return(false); } if ((isWerewolfTeam & pattern.IsWerewolfTeamBits) != isWerewolfTeam) { return(false); } // 「~ではない」系 条件を満たさない場合をチェック if ((isNotWerewolf & ~pattern.IsWerewolfBits) != isNotWerewolf) { return(false); } if ((isNotPossessed & ~pattern.IsPossessedBits) != isNotPossessed) { return(false); } if ((isNotWerewolfTeam & ~pattern.IsWerewolfTeamBits) != isNotWerewolfTeam) { return(false); } // 満たさない条件が無ければ条件を満たしている return(true); }
public bool IsMatch(MonsterSidePattern pattern) { switch (Team) { case Team.VILLAGER: return(!pattern.WerewolfAgent.Contains(Agent) && !pattern.PossessedAgent.Contains(Agent) && !pattern.FoxAgent.Contains(Agent)); //return !pattern.IsExist(Agent, Role.WEREWOLF) && // !pattern.IsExist(Agent, Role.POSSESSED) && // !pattern.IsExist(Agent, Role.FOX); case Team.WEREWOLF: return(pattern.WerewolfAgent.Contains(Agent) || pattern.PossessedAgent.Contains(Agent)); //return pattern.IsExist(Agent, Role.WEREWOLF) || pattern.IsExist(Agent, Role.POSSESSED); case Team.OTHERS: return(pattern.FoxAgent.Contains(Agent)); //return pattern.IsExist(Agent, Role.FOX); } // 引数が不正だった場合など return(false); }
public bool IsMatch(MonsterSidePattern pattern) { // 条件が無い場合は、条件を満たしていない扱いにする if (condition == null) { return(false); } // 条件へのマッチをNOTして返す return(!condition.IsMatch(pattern)); }
public bool IsMatch(MonsterSidePattern pattern) { int matchNum = 0; // 条件を1つずつチェック foreach (ICondition condition in conditions) { if (condition.IsMatch(pattern)) { matchNum++; } } // マッチ数が最低~最高の範囲内かを返す return(matchNum >= MinNum && matchNum <= MaxNum); }
public bool IsMatch(MonsterSidePattern pattern) { int matchNum = 0; // 「~である」系 matchNum += BitCnt(isWerewolf & pattern.IsWerewolfBits); matchNum += BitCnt(isPossessed & pattern.IsPossessedBits); matchNum += BitCnt(isWerewolfTeam & pattern.IsWerewolfTeamBits); // 「~ではない」系 matchNum += BitCnt(isNotWerewolf & ~pattern.IsWerewolfBits); matchNum += BitCnt(isNotPossessed & ~pattern.IsPossessedBits); matchNum += BitCnt(isNotWerewolfTeam & ~pattern.IsWerewolfTeamBits); // マッチ数が最低~最大なら条件を満たしている return(matchNum >= MinNum && matchNum <= MaxNum); }
public bool IsMatch(MonsterSidePattern pattern) { switch (Role) { case Role.WEREWOLF: return(pattern.IsExist(Agent, Role.WEREWOLF)); case Role.POSSESSED: return(pattern.IsExist(Agent, Role.POSSESSED)); case Role.FOX: return(pattern.IsExist(Agent, Role.FOX)); } // 引数が不正だった場合など return(false); }
public bool IsMatch(MonsterSidePattern pattern) { switch (Team) { case Team.VILLAGER: return(!pattern.IsExist(Agent, Role.WEREWOLF) && !pattern.IsExist(Agent, Role.POSSESSED) && !pattern.IsExist(Agent, Role.FOX)); case Team.WEREWOLF: return(pattern.IsExist(Agent, Role.WEREWOLF) || pattern.IsExist(Agent, Role.POSSESSED)); case Team.OTHERS: return(pattern.IsExist(Agent, Role.FOX)); } // 引数が不正だった場合など return(false); }
public bool IsMatch(MonsterSidePattern pattern) { // 条件が1つも無い場合は、条件を満たした扱いにする if (conditions.Count == 0) { return(true); } // 条件を1つずつチェックし、1つでも満せば OR条件を満たす foreach (ICondition condition in conditions) { if (condition.IsMatch(pattern)) { return(true); } } // 条件を満たすものが無ければOR条件を満たさない return(false); }
public bool IsMatch(MonsterSidePattern pattern) { switch (Role) { case Role.WEREWOLF: return(pattern.WerewolfAgent.Contains(Agent)); //return pattern.IsExist(Agent, Role.WEREWOLF); case Role.POSSESSED: return(pattern.PossessedAgent.Contains(Agent)); //return pattern.IsExist(Agent, Role.POSSESSED); case Role.FOX: return(pattern.FoxAgent.Contains(Agent)); //return pattern.IsExist(Agent, Role.FOX); } // 引数が不正だった場合など return(false); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="pattern">人外陣営のパターン</param> public AggregateGuess(MonsterSidePattern pattern) { Pattern = pattern; }