Пример #1
0
        public Task RunAsync(out FakeInputOutput inputOutput)
        {
            var localInputOutput = new FakeInputOutput(_token);
            var testGrid         = new TestGrid(_gridWidth, _gridHeight, _gridInput, localInputOutput);

            foreach (var pac in _pacs)
            {
                testGrid.AddPac(pac);
            }

            localInputOutput.AddInput($"{_gridWidth} {_gridHeight}");
            testGrid.WriteGrid();
            testGrid.WriteScores();
            testGrid.WritePacs();
            testGrid.WritePellets();

            var game = new Player(localInputOutput, _actionStrategy);
            var task = Task.Run(() =>
            {
                game.Run(_token);
                localInputOutput.CompleteOutput();
            }, _token);

            inputOutput = localInputOutput;
            return(task);
        }
Пример #2
0
        public TestGrid(int width,
                        int height,
                        string mapString,
                        FakeInputOutput inputOutput)
        {
            _inputOutput = inputOutput;
            _lines       = new string[height];
            var lines = mapString.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries).Select(l => l.ToCharArray()).ToArray();

            for (short line = 0; line < height; line++)
            {
                char[] finalLine = new char[width];

                for (short c = 0; c < width; c++)
                {
                    Location location = new Location(c, line);
                    switch (lines[line][c])
                    {
                    case '.':
                        Pellets.Add(new Pellet(location, 1));
                        finalLine[c] = ' ';
                        break;

                    case 'X':
                        Pellets.Add(new Pellet(location, 10));
                        finalLine[c] = ' ';
                        break;

                    case '#':
                        finalLine[c] = '#';
                        break;

                    default:
                        finalLine[c] = ' ';
                        break;
                    }
                }
                _lines[line] = new string(finalLine);
            }
        }