コード例 #1
0
        private static void AutomaticLoop(Game game, StringBuilder innerBuffer, int[][] wins, int[][] loses, int loops)
        {
            var r = Console.CursorTop;
            Console.CursorVisible = false;

            while (loops > 0) {
                loops--;
                game.StartNew();
                // PLANNING
                game.PlanningState();

                // GAME
                while (!game.Finished) {
                    innerBuffer.Clear();
                    game.TurnState();
                }

                ProgressBar.Value = (_totalLoops - loops)/(float)_totalLoops;

                for (var i = 0; i < game.Winners.Count; i++) wins[game.Winners[i]][i]++;
                for (var i = 0; i < game.Losers.Count; i++) loses[game.Losers[i]][i]++;

                if (game.Winners.Count == 0) _noWinners++;
                if (game.Losers.Count == 0) _noLosers++;

                Buffer.Clear();
            }
            Console.SetCursorPosition(1, 1);
            Console.Write("".PadRight(160));
            Console.SetCursorPosition(0, r);
        }
コード例 #2
0
        private static void ManualLoop(Game game, StringBuilder innerBuffer, int[][] wins, int[][] loses)
        {
            while (Console.ReadKey().Key != ConsoleKey.Escape) {
                game.StartNew();
                // PLANNING
                game.PlanningState();
                Print("PLANNING", game.ToString(), true);
                Console.ReadKey();

                // GAME

                while (!game.Finished) {
                    innerBuffer.Clear();
                    game.TurnState();
                    PrintToBuffer(innerBuffer, true);
                    Console.ReadKey();
                }

                // RESULTS
                _totalLoops++;
                Print("WINNERS", game.Winners.Aggregate("", (s, i) => s + i + " ") + "\n", true);
                Print("LOSERS", game.Losers.Aggregate("", (s, i) => s + i + " ") + "\n", true);
                Console.WriteLine("\n\nPRESS <ENTER> TO CONTINUE ...");
                while (Console.ReadKey().Key != ConsoleKey.Enter) { }

                for (var i = 0; i < game.Winners.Count; i++) wins[game.Winners[i]][i]++;
                for (var i = 0; i < game.Losers.Count; i++) loses[game.Losers[i]][i]++;

                if (game.Winners.Count == 0) _noWinners++;
                if (game.Losers.Count == 0) _noLosers++;

                File.AppendAllText(BufferFilePath, Buffer.ToString());
                Console.WriteLine("\n\nPRESS <ESC> TO EXIT OR ANY OTHER KEY TO CONTINUE ...");
                Buffer.Clear();
            }
        }