예제 #1
0
        private void FillMaze()
        {
            _logicalMaze = new LogicalMaze
            {
                Field = new MazeTile[_rowCount, _rowLenght]
            };

            for (var row = 0; row < _rowCount; row++)
            {
                FillRow(_lines[row], row);
            }
        }
예제 #2
0
        public LogicalGhost(int row, int col, ILogicalMaze logicalMaze, LogicalPacman logicalPacman) : base(col, row, logicalMaze)
        {
            this._logicalPacman = logicalPacman;
            _distanceToPacman   = GetDistanceToPacman();

            _movementMapping = new Dictionary <int, Direction>
            {
                { 0, Direction.Up },
                { 1, Direction.Right },
                { 2, Direction.Down },
                { 3, Direction.Left }
            };
        }
예제 #3
0
        private void DrawRow(int rowNumber, ILogicalMaze logicalMaze)
        {
            _currentColumn = 0;

            for (var columnNumber = 0; columnNumber < _numberOfColumns; columnNumber++)
            {
                var template = _panelMapping[logicalMaze.Field[rowNumber, columnNumber]];
                var panel    = template?.Clone();
                panel.Draw(columnNumber, rowNumber);
                Panels[_currentRow, _currentColumn] = panel;
                _currentColumn++;
            }
            _currentRow++;
        }
예제 #4
0
        private void GenerateDynamicMaze(ILogicalMaze logicalMaze)
        {
            _currentRow = 0;

            _numberOfRows    = logicalMaze.Field.GetLength(0);
            _numberOfColumns = logicalMaze.Field.Length / _numberOfRows;

            Panels = new BasePanel[_numberOfRows, _numberOfColumns];

            for (var rowNumber = 0; rowNumber < _numberOfRows; rowNumber++)
            {
                DrawRow(rowNumber, logicalMaze);
            }
        }
예제 #5
0
        public GameController(ILogicalMaze logicalMaze)
        {
            this._logicalMaze = logicalMaze;
            this._pacman      = new LogicalPacman(1, 1, logicalMaze);
            this._ghost       = new LogicalGhost(4, 4, logicalMaze, _pacman);

            var paceMaker = new Timer
            {
                Interval = 350,
                Enabled  = true
            };

            paceMaker.Elapsed += NextStep;
        }
예제 #6
0
        public LogicalPiece(int col, int row, ILogicalMaze logicalMaze)
        {
            _logicalMaze = logicalMaze;
            this.Column  = col;
            this.Row     = row;

            MovementDeltaMapping = new Dictionary <Direction, Tuple <int, int> >
            {
                { Direction.Up, new Tuple <int, int>(-1, 0) },
                { Direction.Right, new Tuple <int, int>(0, 1) },
                { Direction.Left, new Tuple <int, int>(0, -1) },
                { Direction.Down, new Tuple <int, int>(1, 0) }
            };

            _movement = new Dictionary <Direction, Action>
            {
                { Direction.Up, () => { Move(Direction.Up); } },
                { Direction.Right, () => { Move(Direction.Right); } },
                { Direction.Left, () => { Move(Direction.Left); } },
                { Direction.Down, () => { Move(Direction.Down); } }
            };
        }
예제 #7
0
 public VisualMaze(ILogicalMaze logicalMaze)
 {
     GenerateDynamicMaze(logicalMaze);
 }
예제 #8
0
 public PacmanTest()
 {
     this._logicalMaze    = new LogicalMaze();
     this._pacmanPanel    = new PacmanPanel();
     this._gameController = new GameController(_logicalMaze, _pacmanPanel, new Panel());
 }
예제 #9
0
 public LogicalPacman(int row, int col, ILogicalMaze logicalMaze) : base(col, row, logicalMaze)
 {
 }