Пример #1
0
        private static Game RandomizeBoard(byte failedAttempts)
        {
            var game = new RandomGame();

            Game solution = null;

            try
            {
                solution = game.Solve();
            }
            catch (UnsolvableSudokuException)
            {
                const int maxAllowedAttempts = 100;
                if (failedAttempts < maxAllowedAttempts)
                {
                    return(RandomizeBoard(++failedAttempts));
                }
                else
                {
                    throw new GenerateSudokuFailedException();
                }
            }

            return(solution);
        }
Пример #2
0
        public void RandomBowl()
        {
            var game = new RandomGame();

            var roll = game.Bowl();

            Assert.AreEqual(roll.PinsBowled, game.Frames[0].RollOne.PinsBowled, $@"Expected Pins Bowled {roll.PinsBowled}, Actual Pins Bowled {game.Frames[0].RollOne.PinsBowled}");
        }
Пример #3
0
        public void RandomBowl_FrameSet()
        {
            var game = new RandomGame();

            var roll = game.Bowl();
            var frameSetPinsBowled = game.FrameSet.Where(p => p == 1).Sum();

            Assert.AreEqual(roll.PinsBowled, game.Frames[0].RollOne.PinsBowled, $@"Expected Pins Bowled {roll.PinsBowled}, Actual Pins Bowled {game.Frames[0].RollOne.PinsBowled}");
        }
Пример #4
0
        public void OneRandomFrame()
        {
            // Track the random generated numbers to validate the frame total.
            var game = new RandomGame();

            var rollOnePinsBowled = game.Bowl().PinsBowled;
            var rollTwoPinsBowled = game.Bowl().PinsBowled;

            var score      = rollOnePinsBowled + rollTwoPinsBowled;
            var frameTotal = rollOnePinsBowled + rollTwoPinsBowled;

            Assert.AreEqual(score, game.Score, $@"Expected score {score} Game score {game.Score}");
            Assert.AreEqual(frameTotal, game.Frames[0].Total, $@"Expected total {frameTotal} Frame total {game.Frames[0].Total}");
        }
Пример #5
0
        public static void SaveGame(RandomGame game, Player p1, Player p2)
        {
            float  reward = 0;
            double mod1   = game.result1.MineralValueKilled - game.result2.MineralValueKilled;

            mod1 = mod1 / 1000;

            double mod2 = game.result1.DamageDone - game.result2.DamageDone;

            mod2 = mod2 / 10000;

            float rewardp1 = (float)mod1;

            rewardp1 += (float)mod2;

            float rewardp2 = (float)mod1 * -1;

            rewardp2 -= (float)mod2;

            if (game.Result == 0)
            {
                rewardp1 += 1;
                rewardp2 += 1;
            }
            else if (game.Result == 1)
            {
                rewardp1 += 2;
                rewardp2 += 0;
            }
            else if (game.Result == 2)
            {
                rewardp1 += 0;
                rewardp2 += 2;
            }

            List <string> presult = new List <string>();

            //presult.Add(rewardp1 + "," + BBuild.PrintMatrix(game.player1.GetMatrix(p1)));
            //presult.Add(rewardp2 + "," + BBuild.PrintMatrix(game.player2.GetMatrix(p2)));

            lock (locker)
            {
                File.AppendAllLines(mlgamesFile, presult);
            }
        }
Пример #6
0
        public void RandomBowl_GameIsFinished()
        {
            var isFinished = true;

            var game = new RandomGame();
            var roll = game.Bowl();

            for (int i = 0; i < 19; i++)
            {
                roll = game.Bowl();
            }

            // Is an extra roll warranted?
            if (game.IsExtraRoll)
            {
                roll = game.Bowl();
            }

            Assert.AreEqual(isFinished, game.IsFinished, $@"Expected Game Finished {isFinished}, Actual Game Finished {game.IsFinished}");
            Assert.AreEqual(isFinished, game.IsFinished, $@"Expected Game Finished {isFinished}, Actual Game Finished {game.IsFinished}");
        }
Пример #7
0
        public async Task RunGameMenuAsync()
        {
            string logo = @" _____                                            _      
|  __ \                                          | |     
| |  \/ __ _ _ __ ___   ___   _ __ ___   ___   __| | ___ 
| | __ / _` | '_ ` _ \ / _ \ | '_ ` _ \ / _ \ / _` |/ _ \
| |_\ \ (_| | | | | | |  __/ | | | | | | (_) | (_| |  __/
 \____/\__,_|_| |_| |_|\___| |_| |_| |_|\___/ \__,_|\___|
                                                         
                                                         ";

            string[] options = new string[] { "Random game", "Private game", "Training with bot",
                                              "Show personal statistic", "Back" };
            Menu gameMenu = new Menu(logo, options);
            int  selected = gameMenu.Run();

            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();
            PersonalStatistic ps = new PersonalStatistic(auth);

            switch (selected)
            {
            case 0:
                Console.Clear();
                RandomGame randomGame = new RandomGame(auth);
                await randomGame.RandomGameAsync("api/RandomPlay", "game");

                break;

            case 1:
                Console.Clear();
                PrivateGame privateGame = new PrivateGame(auth);
                await privateGame.PrivateGameAsync("api/PrivatePlay", "game");

                break;

            case 2:
                Console.Clear();
                GameWithBot gameWithBot = new GameWithBot(auth);
                await gameWithBot.BotGame("api/BotPlay");

                break;

            case 3:
                Console.WriteLine(auth.Stat);
                Console.ReadKey();
                break;

            case 4:
                Console.Clear();
                stopWatch.Stop();
                TimeSpan timeSpan = stopWatch.Elapsed;
                TimeSpan ts       = TimeSpan.Parse(auth.Stat.TimeInGame).Multiply(100);
                auth.Stat.TimeInGame = ts.Add(timeSpan).ToString();
                await ps.PostStatsAsync(auth.Stat);

                return;
            }


            //stopWatch.Stop();
            //TimeSpan ts = stopWatch.Elapsed;
            //stat.TimeInGame.Add(ts);
            //await PostStatsAsync(stat);

            await RunGameMenuAsync();
        }
Пример #8
0
        public static RandomGame RandomFight(int minerals = 2000, bool save = false)
        {
            Player _player = new Player();

            _player.Name   = "Player#1";
            _player.Pos    = 1;
            _player.ID     = paxgame.GetPlayerID();
            _player.Race   = UnitRace.Terran;
            _player.inGame = true;
            _player.Units  = new List <Unit>(UnitPool.Units.Where(x => x.Race == _player.Race));

            Player _opp = new Player();

            _opp.Name   = "Player#2";
            _opp.Pos    = 4;
            _opp.ID     = paxgame.GetPlayerID();
            _opp.Race   = UnitRace.Terran;
            _opp.inGame = true;
            _opp.Units  = new List <Unit>(UnitPool.Units.Where(x => x.Race == _opp.Race));

            GameHistory game = new GameHistory();

            _player.Game    = game;
            _player.Game.ID = paxgame.GetGameID();
            _player.Game.Players.Add(_player);
            _player.Game.Players.Add(_opp);

            _opp.Game = _player.Game;

            _player.Units = new List <Unit>(UnitPool.Units.Where(x => x.Race == _player.Race && x.Cost > 0));
            _opp.Units    = new List <Unit>(UnitPool.Units.Where(x => x.Race == _opp.Race && x.Cost > 0));

            _player.MineralsCurrent = minerals;
            _opp.MineralsCurrent    = minerals;

            OppService.BPRandom(_player).GetAwaiter().GetResult();
            OppService.BPRandom(_opp).GetAwaiter().GetResult();

            BBuild bplayer = new BBuild(_player);
            BBuild bopp    = new BBuild(_opp);

            bplayer.SetBuild(_player);
            bopp.SetBuild(_opp);

            GameService.GenFight(_player.Game).GetAwaiter().GetResult();
            StatsService.GenRoundStats(game, false).GetAwaiter().GetResult();
            Stats result    = new Stats();
            Stats oppresult = new Stats();

            result.DamageDone            = game.Stats.Last().Damage[1];
            result.MineralValueKilled    = game.Stats.Last().Killed[1];
            oppresult.DamageDone         = game.Stats.Last().Damage[0];
            oppresult.MineralValueKilled = game.Stats.Last().Killed[0];

            RandomResult result1 = new RandomResult();

            result1.DamageDone         = oppresult.DamageDone;
            result1.MineralValueKilled = oppresult.MineralValueKilled;
            RandomResult result2 = new RandomResult();

            result2.DamageDone         = result.DamageDone;
            result2.MineralValueKilled = result.MineralValueKilled;

            RandomGame rgame = new RandomGame();

            rgame.player1 = bplayer;
            rgame.player2 = bopp;
            rgame.result1 = result1;
            rgame.result2 = result2;
            rgame.Result  = game.Stats.Last().winner;

            if (save == true)
            {
                SaveGame(rgame, _player, _opp);
            }

            return(rgame);
        }