コード例 #1
0
        private double GetScore(Board board, ISlot <ICard <CardType> > slot)
        {
            var        card       = slot.Card;
            SquareDesc squareDesc = board.Desc();
            var        state      = new GameState()
            {
                HeroGold      = board.Gold,
                HeroHealth    = board.HeroHealth,
                HeroWeapon    = board.Weapon,
                CardGold      = 0,
                MonsterHealth = 0,
                CardWeapon    = 0,
            };

            switch (card.Type)
            {
            case CardType.Monster:
                state.MonsterHealth = card.Value;
                return(ScoreMonsterCard(squareDesc, state));

            case CardType.Weapon:
                state.CardWeapon = card.Value;
                return(ScoreWeaponCard(squareDesc, state));

            case CardType.Gold:
                state.CardGold = card.Value;
                return(ScoreGoldCard(squareDesc, state));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #2
0
 private double ScoreMonsterCard(SquareDesc squareDesc, GameState state)
 {
     if (state.HeroWeapon > 0)
     {
         return(_multipliers.MonsterWhenPossessingWeaponScoreMultiplier[(int)squareDesc] * _multipliers.MonsterWhenPossessingWeaponScoreFunc.Evaluate(state));
     }
     else if (state.MonsterHealth > state.HeroHealth)
     {
         return(ScoreMonsterWhenNotPossessingWeaponAndMonsterHealthIsGreater(state));
     }
     else
     {
         return(_multipliers.MonsterWhenNotPossessingWeaponScoreMultiplier[(int)squareDesc] * _multipliers.MonsterWhenNotPossessingWeaponScoreFunc.Evaluate(state));
     }
 }
コード例 #3
0
ファイル: GameAgent.cs プロジェクト: gowland/GeneticAlgo
        private double GetScore(Board board, ISlot <ICard <CardType> > slot)
        {
            var        card       = slot.Card;
            SquareDesc squareDesc = board.Desc();

            switch (card.Type)
            {
            case CardType.Monster:
                return(ScoreMonsterCard(board.Weapon, card.Value, board.HeroHealth, squareDesc));

            case CardType.Weapon:
                return(ScoreWeaponCard(board.Weapon, card.Value, squareDesc));

            case CardType.Gold:
                return(ScoreGoldCard(card.Value, squareDesc));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #4
0
ファイル: GameAgent.cs プロジェクト: gowland/GeneticAlgo
 private double ScoreMonsterCard(int heroWeapon, int monsterHealth, int heroHealth, SquareDesc squareDesc)
 {
     if (heroWeapon > 0)
     {
         return(_multipliers.MonsterWhenPossessingWeaponScoreMultiplier[(int)squareDesc] * ScoreMonsterWhenPossessingWeapon(heroWeapon, monsterHealth));
     }
     else if (monsterHealth > heroHealth)
     {
         return(ScoreMonsterWhenNotPossessingWeaponAndMonsterHealthIsGreater(heroHealth, monsterHealth));
     }
     else
     {
         return(_multipliers.MonsterWhenNotPossessingWeaponScoreMultiplier[(int)squareDesc] * ScoreMonsterWhenNotPossessingWeaponAndHeroHealthIsGreater(heroHealth, monsterHealth));
     }
 }
コード例 #5
0
ファイル: GameAgent.cs プロジェクト: gowland/GeneticAlgo
 private double ScoreWeaponCard(int heroWeapon, int weaponValue, SquareDesc squareDesc)
 {
     return(heroWeapon > 0
         ? _multipliers.WeaponWhenPossessingWeaponScoreMultiplier[(int)squareDesc] * ScoreWeaponCardWhenPossessingWeapon(heroWeapon, weaponValue)
         : _multipliers.WeaponWhenPossessingNotWeaponScoreMultiplier[(int)squareDesc] * ScoreWeaponCardWhenNotPossessingWeapon(weaponValue));
 }
コード例 #6
0
ファイル: GameAgent.cs プロジェクト: gowland/GeneticAlgo
 private double ScoreGoldCard(int goldScore, SquareDesc squareDesc)
 {
     return(_multipliers.GoldScoreMultiplier[(int)squareDesc] * goldScore);
 }
コード例 #7
0
 private double ScoreWeaponCard(SquareDesc squareDesc, GameState state)
 {
     return(state.HeroWeapon > 0
         ? _multipliers.WeaponWhenPossessingWeaponScoreMultiplier[(int)squareDesc] * _multipliers.WeaponWhenPossessingWeaponScoreFunc.Evaluate(state)
         : _multipliers.WeaponWhenNotPossessingWeaponScoreMultiplier[(int)squareDesc] * _multipliers.WeaponWhenNotPossessingWeaponScoreFunc.Evaluate(state));
 }
コード例 #8
0
 private double ScoreGoldCard(SquareDesc squareDesc, GameState state)
 {
     return(_multipliers.GoldScoreMultiplier[(int)squareDesc] * state.CardGold);
 }