Esempio n. 1
0
        // Maximum Fitness = Win + N * (50 + H) + N * 50
        public double Calculate(string playerName, BattleResult result)
        {
            var score = 0.0;

            var players = new[] { result.Winner, result.Loser };
            var playerState = players.Single(p => p.Name == playerName);
            var opponentState = players.Single(p => p.Name != playerName);

            if (result.Winner == playerState)
            {
                score += 200;
            }

            score += playerState.AllNeuromon.Where(n => !n.IsDead).Sum(n => 50.0 + n.Health);

            score += opponentState.AllNeuromon.Where(n => n.IsDead).Sum(n => 50.0);
            score -= opponentState.AllNeuromon.Where(n => !n.IsDead).Sum(n => n.Health);

            return score >= 0.0 ? score : 0.0;
        }
Esempio n. 2
0
        private void RenderGameOver(BattleResult battleResult)
        {
            var playerOne = _battleSimulator.Player1.State;
            var playerTwo = _battleSimulator.Player2.State;

            RenderPlayerState(playerOne);
            RenderPlayerState(playerTwo);

            var scoreCalculator = new ScoreCalculator();
            var sb = new StringBuilder();

            sb.AppendLine(TurnMadeBorder);
            sb.AppendLine($"{battleResult.Loser.Name} has no remaining Neuromon...");
            sb.AppendLine($"{battleResult.Winner.Name} beat {battleResult.Loser.Name}!");
            sb.AppendLine();
            sb.AppendLine($"{playerOne.Name}'s score: {scoreCalculator.Calculate(playerOne.Name, battleResult)}");
            sb.AppendLine($"{playerTwo.Name}'s score: {scoreCalculator.Calculate(playerTwo.Name, battleResult)}");
            sb.AppendLine(TurnMadeBorder);

            RenderTextWithColour(sb.ToString(), ConsoleColor.DarkGreen);
        }