Ejemplo n.º 1
0
        public GameResult PlayGame()
        {
            logger.Log(this, $"Request to Admiral {admiralWhite.Nome} to set the fleet...");
            admiralWhite.PosizionaFlotta();
            logger.Log(this, $"Request to Admiral {admiralWhite.Nome} to set the fleet completed.");

            logger.Log(this, $"Request to Admiral {admiralBlack.Nome} to set the fleet...");
            admiralBlack.PosizionaFlotta();
            logger.Log(this, $"Request to Admiral {admiralBlack.Nome} to set the fleet completed.");

            int turn = 1;

            attacker = admiralWhite;
            defender = admiralBlack;

            while (!gameEnded && turn <= 500)
            {
                //logger.Log(this, $"Turn {turn} : Attacker is {attacker.Nome}, defender is {defender.Nome}.");

                //logger.Log(this, $"Request to attacker {attacker.Nome} to shot...");
                Coordinate sparo = attacker.Spara();
                logger.Log(this, $"[{turn}] Attacker {attacker.Nome} shooted at ({sparo.Riga}, {sparo.Colonna}).");

                // Forza lo sparo in (2,1)
                // sparo = new Coordinate(2, 1);

                //logger.Log(this, $"Request to defender {defender.Nome} to report shot effects...");
                EffettoSparo effetto = defender.Rapporto(sparo);
                logger.Log(this, $"Defender {defender.Nome} reported '{TestoEffetto(effetto)}'.");

                //logger.Log(this, $"Report to attacker {attacker.Nome} shot effects...");
                attacker.RiceviRapporto(effetto);
                //logger.Log(this, $"Report to attacker {attacker.Nome} delivered.");

                //logger.Log(this, $"Swap attacker and defender and start new turn.");
                SwapRoles();
                turn++;
            }

            return(new GameResult(winner, looser));
        }