Пример #1
0
 public void PlacePiece(IPieceType piece)
 {
     if (IsEmpty())
         _contents = piece;
        else
        throw new Exception("This square is occupied");
 }
Пример #2
0
 public void Play(IOthelloBoard board, IPlayer player1, IPlayer player2, string gridRef, IPieceType piece)
 {
     PlayerToPlayNext.Play(board, gridRef, piece);
     _passCount = 0;
     UpdateScores(player1, player2);
     NextPlayersTurn();
 }
Пример #3
0
        public Dictionary<Directions, List<IPieceType>> CheckAlongCompassPoints(string originalGridRef, List<Directions> locations, IPieceType pieceToPlay )
        {
            var countersAlongLine = new Dictionary<Directions, List<IPieceType>>();

            foreach (Directions direction in locations)
            {
                var listOfStuffToTurnOver = new List<IPieceType>();
                var gridRef = originalGridRef;
                do
                {
                    var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board);
                    if (neighbouringCounter == null)
                        break;
                    if (neighbouringCounter.Colour != pieceToPlay.Colour)
                        listOfStuffToTurnOver.Add(neighbouringCounter);
                    else
                    {
                        countersAlongLine.Add(direction, listOfStuffToTurnOver);
                        break;
                    }

                    gridRef = _gridRefFinder.FindGridRef(direction, gridRef);
                } while (true);
            }
            return countersAlongLine;
        }
Пример #4
0
        public IPieceType ViewBoardSquare(string gridRef)
        {
            Square     square;
            IPieceType contents = null;

            if (_board.TryGetValue(gridRef, out square))
            {
                contents = square.Contents();
            }
            return(contents);
        }
Пример #5
0
 public void PlacePiece(IPieceType piece)
 {
     if (IsEmpty())
     {
         _contents = piece;
     }
     else
     {
         throw new Exception("This square is occupied");
     }
 }
Пример #6
0
        public override void AcceptPlay(string gridRef, IPieceType pieceToPlay)
        {
            var locationOfOpposingCounters = _rules.CheckAtLeastOneNeighbourOfOppositeColour(gridRef,
                pieceToPlay);

            if (locationOfOpposingCounters.Count <= 0) return;

            var countersAlongLine = _rules.CheckAlongCompassPoints(gridRef,
                locationOfOpposingCounters, pieceToPlay);

            if (countersAlongLine.Count <= 0) return;

            PlacePiece(gridRef, (Counter)pieceToPlay);
            IncrememtOwnScore(pieceToPlay.Colour);
            FlipCounters(countersAlongLine);
        }
Пример #7
0
        public List<Directions> CheckAtLeastOneNeighbourOfOppositeColour(string gridRef, IPieceType pieceToPlay)
        {
            var locationOfOpposingCounters = new List<Directions>();
            var compasspoints = Enum.GetValues(typeof(Directions));

            foreach (Directions direction in compasspoints)
            {

                    var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board);
                    if (neighbouringCounter != null && neighbouringCounter.Colour != pieceToPlay.Colour)
                    {
                        locationOfOpposingCounters.Add(direction);
                    }

            }
            return locationOfOpposingCounters;
        }
Пример #8
0
        public override void AcceptPlay(string gridRef, IPieceType pieceToPlay)
        {
            var locationOfOpposingCounters = _rules.CheckAtLeastOneNeighbourOfOppositeColour(gridRef,
                                                                                             pieceToPlay);

            if (locationOfOpposingCounters.Count <= 0)
            {
                return;
            }

            var countersAlongLine = _rules.CheckAlongCompassPoints(gridRef,
                                                                   locationOfOpposingCounters, pieceToPlay);

            if (countersAlongLine.Count <= 0)
            {
                return;
            }

            PlacePiece(gridRef, (Counter)pieceToPlay);
            IncrememtOwnScore(pieceToPlay.Colour);
            FlipCounters(countersAlongLine);
        }
Пример #9
0
        private void PlacePiece(string gridRef, IPieceType piece)
        {
            var square = _board[gridRef];

            square.PlacePiece(piece);
        }
Пример #10
0
        public Dictionary <Directions, List <IPieceType> > CheckAlongCompassPoints(string originalGridRef, List <Directions> locations, IPieceType pieceToPlay)
        {
            var countersAlongLine = new Dictionary <Directions, List <IPieceType> >();

            foreach (Directions direction in locations)
            {
                var listOfStuffToTurnOver = new List <IPieceType>();
                var gridRef = originalGridRef;
                do
                {
                    var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board);
                    if (neighbouringCounter == null)
                    {
                        break;
                    }
                    if (neighbouringCounter.Colour != pieceToPlay.Colour)
                    {
                        listOfStuffToTurnOver.Add(neighbouringCounter);
                    }
                    else
                    {
                        countersAlongLine.Add(direction, listOfStuffToTurnOver);
                        break;
                    }

                    gridRef = _gridRefFinder.FindGridRef(direction, gridRef);
                } while (true);
            }
            return(countersAlongLine);
        }
Пример #11
0
        public void SetUp(string gridRef, IPieceType pieceType)
        {
            Square square = _board[gridRef];

            square.PlacePiece(pieceType);
        }
Пример #12
0
 public void Play(IBoard board, string gridRef, IPieceType piece)
 {
     board.AcceptPlay(gridRef, piece);
 }
Пример #13
0
 public void Play(IBoard board, string gridRef, IPieceType piece)
 {
     board.AcceptPlay(gridRef, piece);
 }
Пример #14
0
 public virtual void AcceptPlay(string gridRef, IPieceType pieceToPlay)
 {
 }
Пример #15
0
 private void PlacePiece(string gridRef, IPieceType piece)
 {
     var square = _board[gridRef];
     square.PlacePiece(piece);
 }
Пример #16
0
 public void Play(IOthelloBoard board, IPlayer player1, IPlayer player2, string gridRef, IPieceType piece)
 {
     PlayerToPlayNext.Play(board, gridRef, piece);
     _passCount = 0;
     UpdateScores(player1, player2);
     NextPlayersTurn();
 }
Пример #17
0
        public List <Directions> CheckAtLeastOneNeighbourOfOppositeColour(string gridRef, IPieceType pieceToPlay)
        {
            var locationOfOpposingCounters = new List <Directions>();
            var compasspoints = Enum.GetValues(typeof(Directions));

            foreach (Directions direction in compasspoints)
            {
                var neighbouringCounter = _gridRefFinder.NeighbouringSquare(direction, gridRef, _board);
                if (neighbouringCounter != null && neighbouringCounter.Colour != pieceToPlay.Colour)
                {
                    locationOfOpposingCounters.Add(direction);
                }
            }
            return(locationOfOpposingCounters);
        }
Пример #18
0
 public virtual void AcceptPlay(string gridRef, IPieceType pieceToPlay)
 {
 }
Пример #19
0
 public void SetUp(string gridRef, IPieceType pieceType)
 {
     Square square = _board[gridRef];
     square.PlacePiece(pieceType);
 }