// 評価 int SumEvaluation(Data d, BoardController board) { int score = 0; foreach (ICharacter character in _player.GetCharacters()) { // バトルの相性を調べる int distance = BattleManager.Instance.GetDistance(d._x, d._y, character.X(), character.Y()); BattleManager.Compatibility compaibliy = BattleManager.Instance.CheckCompatibility(d._type, character.GetMyType()); if (distance == 1) { // スコアの割り当て if (compaibliy == BattleManager.Compatibility.Strong) { score += 30; } if (compaibliy == BattleManager.Compatibility.Weak) { score -= 15; } } if (d._character && d._character.GetMyState() == ICharacter.STATE.GREEN) { score -= 20; } if (d._x == character.X()) { int vecY = (character.Y() - d._y > 0) ? 1 : -1; Tile tile = board.SlideMove(d._x, d._y, 0, vecY); if (tile.Y() + vecY == character.Y()) { if (compaibliy == BattleManager.Compatibility.Strong) { score += 5; } else if (compaibliy == BattleManager.Compatibility.Weak) { score -= 5; } else { score += 3; } if (d._character) { if (d._character.X() == d._x) { if (compaibliy == BattleManager.Compatibility.Strong) { score += 5; } else if (compaibliy == BattleManager.Compatibility.Weak) { score -= 5; } } } } } if (d._y == character.Y()) { int vecX = (character.X() - d._x > 0) ? 1 : -1; Tile tile = board.SlideMove(d._x, d._y, vecX, 0); if (tile.X() + vecX == character.X()) { if (compaibliy == BattleManager.Compatibility.Strong) { score += 5; } else if (compaibliy == BattleManager.Compatibility.Weak) { score -= 5; } else { score += 3; } if (d._character) { if (d._character.Y() == d._y) { if (compaibliy == BattleManager.Compatibility.Strong) { score += 5; } else if (compaibliy == BattleManager.Compatibility.Weak) { score -= 5; } } } } } } for (int i = -1; i <= 1; i++) { int y = d._y + i; Tile tile = board.GetTile(y, board.GetWidth() - 1); if (!tile || tile.OnPiece()) { continue; } tile = board.SlideMove(tile.X(), tile.Y(), -1, 0); if (BattleManager.Instance.GetDistance(tile.X(), tile.Y(), d._x, d._y) <= 1) { score -= 10; break; } } #region // 置いた場所で勝てるかどうか // // //for (int i = 0; i < board.GetHeight(); i++) //{ // for (int j = 0; j < board.GetWidth(); j++) // { // Tile t = board.GetTile(i, j); // if (t == null) score += 3; // } //} #endregion return(score); }