public void Equals_OtherDiffSquare_False()
        {
            var square = new CheckersSquare(3, 2);
            var other  = new CheckersSquare(3, 3);

            Assert.IsFalse(square.Equals(other));
        }
        public void Equals_OtherEqualSquare_True()
        {
            var square = new CheckersSquare(3, 3);
            var other  = new CheckersSquare(3, 3);

            Assert.IsTrue(square.Equals(other));
        }
示例#3
0
        private void playComputerMove()
        {
            while (r_GameManager.CurrentPlayer.IsComputer)
            {
                r_GameManager.matchManager(string.Empty);
                CheckersSquare moveFrom = getCheckersCheckBoxByName(r_GameManager.CurrentMove.CurrentSquare.getSquare());
                CheckersSquare moveTo   = getCheckersCheckBoxByName(r_GameManager.CurrentMove.NextSquare.getSquare());

                if (MovementValidation.IsTryingToJump(r_GameManager.CurrentMove, getCheckersCheckBoxByName(r_GameManager.CurrentMove.CurrentSquare.getSquare()).CoinType))
                {
                    Square middleSquare = r_GameManager.CurrentMove.calculateMiddleSquare();
                    clearSquare(middleSquare);
                }

                moveCoinInForm(moveFrom, moveTo);

                if (r_GameManager.NewKingWasMade)
                {
                    changeCoinToKing(moveTo);
                }

                if (r_GameManager.ThereAreMoreJumps)
                {
                    disableAllButChecked();
                }
                else
                {
                    disableAllNonCurrentPlayerSquares();
                }
            }
        }
        public void GetHashCode_DiffSquares_DiffHashes()
        {
            var square = new CheckersSquare(3, 3);
            var other  = new CheckersSquare(3, 2);

            Assert.AreNotEqual(square.GetHashCode(), other.GetHashCode());
        }
        public void PutPiece_PlayerSquare_False()
        {
            var square = new CheckersSquare(3, 2);

            square.PutPiece(new CheckersPiece(CheckersPlayer.PlayerOne));

            Assert.IsFalse(square.PutPiece(new CheckersPiece(CheckersPlayer.PlayerOne)));
        }
示例#6
0
        public static GameObject CreateGameObject(CheckersSquare model)
        {
            var go = (GameObject)GameObject.Instantiate(s_squarePrefab);

            go.GetComponent <SquareController> ().Model = model;

            return(go);
        }
        public void PutPiece_NoPlayableSquare_Exception()
        {
            var square = new CheckersSquare(0, 0);

            Assert.Catch <ArgumentException>(() =>
            {
                square.PutPiece(new CheckersPiece(CheckersPlayer.PlayerOne));
            }, "Attempt to put a piece in a not playable square.");
        }
        public void PutPiece_NoPlayableSquare_Exception()
        {
            var square = new CheckersSquare(0, 0);

            ExceptionAssert.IsThrowing(new ArgumentException("Attempt to put a piece in a not playable square."), () =>
            {
                square.PutPiece(new CheckersPiece(CheckersPlayer.PlayerOne));
            });
        }
示例#9
0
        private void moveCoinInForm(CheckersSquare i_MoveFrom, CheckersSquare i_MoveTo)
        {
            i_MoveTo.CoinType   = i_MoveFrom.CoinType;
            i_MoveFrom.CoinType = null;

            i_MoveTo.BackgroundImage       = i_MoveFrom.BackgroundImage;
            i_MoveTo.BackgroundImageLayout = ImageLayout.Stretch;
            i_MoveFrom.BackgroundImage     = null;
        }
示例#10
0
        public void IsNotPlayableSquare_DiffSquares_DiffResults()
        {
            Assert.IsTrue(CheckersSquare.IsNotPlayableSquare(0, 0));
            Assert.IsFalse(CheckersSquare.IsNotPlayableSquare(0, 1));
            Assert.IsTrue(CheckersSquare.IsNotPlayableSquare(0, 2));

            Assert.IsFalse(CheckersSquare.IsNotPlayableSquare(1, 0));
            Assert.IsTrue(CheckersSquare.IsNotPlayableSquare(1, 1));
            Assert.IsFalse(CheckersSquare.IsNotPlayableSquare(1, 2));
        }
示例#11
0
 private void changeCoinToKing(CheckersSquare squareToMoveTo)
 {
     squareToMoveTo.CoinType = squareToMoveTo.CoinType.Equals(Coin.coinType.O) ? Coin.coinType.K : Coin.coinType.U;
     if (squareToMoveTo.CoinType == Coin.coinType.K)
     {
         squareToMoveTo.BackgroundImage = Resources.King_Black;
     }
     else
     {
         squareToMoveTo.BackgroundImage = Resources.King_Red;
     }
 }
示例#12
0
        private CheckersSquare getCheckersCheckBoxByName(string i_CheckBoxName)
        {
            CheckersSquare foundCheckBox = null;

            foreach (CheckersSquare currentCheckBox in m_CheckersCheckBoxList)
            {
                if (currentCheckBox.Name.Equals(i_CheckBoxName))
                {
                    foundCheckBox = currentCheckBox;
                    break;
                }
            }

            return(foundCheckBox);
        }
示例#13
0
        private void initializeGameBoard()
        {
            for (int row = 0; row < r_BoardSize; row++)
            {
                for (int column = 0; column < r_BoardSize; column++)
                {
                    r_CheckersBoard[row, column]          = new CheckersSquare();
                    r_CheckersBoard[row, column].Location = new int[2] {
                        row, column
                    };
                }
            }

            initLPieceLocations(CheckersPiece.ePieceType.O);
            initLPieceLocations(CheckersPiece.ePieceType.X);
        }
示例#14
0
        private void makeMoveInBoard(object sender)
        {
            m_CurrentCheckBoxChecked.BackColor = Color.White;
            CheckersSquare moveTo = sender as CheckersSquare;

            moveTo.BackColor = Color.White;

            PlayerMove currentMove = new PlayerMove(m_CurrentCheckBoxChecked.Name + ">" + moveTo.Name);

            if (MovementValidation.IsTryingToJump(currentMove, m_CurrentCheckBoxChecked.CoinType))
            {
                Square middleSquare = currentMove.calculateMiddleSquare();
                clearSquare(middleSquare);
            }

            r_GameManager.matchManager(currentMove.ToString());
            moveCoinInForm(m_CurrentCheckBoxChecked, moveTo);
            paintAllInWhite();

            if (r_GameManager.NewKingWasMade)
            {
                changeCoinToKing(moveTo);
            }

            if (r_GameManager.ThereAreMoreJumps)
            {
                disableAllButChecked();
            }
            else
            {
                disableAllNonCurrentPlayerSquares();
            }

            playSounds();

            m_CurrentCheckBoxChecked = null;

            playComputerMove();

            if (r_GameManager.GameIsOver)
            {
                gameOverOperation();
            }
        }
示例#15
0
        public void Constructor_ColumnAndRowIndex_FreeOrNotPlayable()
        {
            var target = new CheckersSquare(0, 0);

            Assert.AreEqual(CheckersSquareState.NotPlayable, target.State);

            target = new CheckersSquare(7, 7);
            Assert.AreEqual(CheckersSquareState.NotPlayable, target.State);

            target = new CheckersSquare(1, 0);
            Assert.AreEqual(CheckersSquareState.Free, target.State);

            target = new CheckersSquare(2, 0);
            Assert.AreEqual(CheckersSquareState.NotPlayable, target.State);

            target = new CheckersSquare(3, 0);
            Assert.AreEqual(CheckersSquareState.Free, target.State);

            target = new CheckersSquare(4, 0);
            Assert.AreEqual(CheckersSquareState.NotPlayable, target.State);
        }
示例#16
0
        private void validate_Click(object sender, EventArgs e)
        {
            m_PossibleMoves = r_GameManager.getAllowedMoves((sender as CheckersSquare).Name);

            if (m_CurrentCheckBoxChecked == null)
            {
                m_CurrentCheckBoxChecked = sender as CheckersSquare;

                disableAllButChecked();
                showAvailableMoves();
            }
            else
            {
                if ((sender as CheckersSquare) == m_CurrentCheckBoxChecked)
                {
                    cancelClick();
                }
                else
                {
                    makeMoveInBoard(sender);
                }
            }
        }
示例#17
0
        public void Contructor_ValidSize_FreeAndNotPlayableSquaresOk()
        {
            var target = new CheckersBoard(8);

            Assert.AreEqual(8, target.Size);

            for (int c = 0; c < 8; c++)
            {
                for (int r = 0; r < 8; r++)
                {
                    var notPlayable = CheckersSquare.IsNotPlayableSquare(c, r);
                    var actual      = target.GetSquare(c, r).State;

                    if (notPlayable)
                    {
                        Assert.AreEqual(CheckersSquareState.NotPlayable, actual);
                    }
                    else
                    {
                        Assert.AreNotEqual(CheckersSquareState.NotPlayable, actual);
                    }
                }
            }
        }
示例#18
0
 private void showAvailableMoves()
 {
     foreach (PlayerMove possibleMove in m_PossibleMoves)
     {
         foreach (Control control in this.Controls)
         {
             CheckersSquare currentCheckerSquare = control as CheckersSquare;
             if (currentCheckerSquare != null)
             {
                 if (currentCheckerSquare.Name == possibleMove.NextSquare.getSquare())
                 {
                     currentCheckerSquare.BackColor = Color.Green;
                     currentCheckerSquare.Enabled   = true;
                     m_NextPossibleSquares.Add(currentCheckerSquare);
                 }
                 else if (currentCheckerSquare != m_CurrentCheckBoxChecked && !m_NextPossibleSquares.Contains(currentCheckerSquare))
                 {
                     currentCheckerSquare.Name    = currentCheckerSquare.Name;
                     currentCheckerSquare.Enabled = false;
                 }
             }
         }
     }
 }
示例#19
0
        private void initComponents()
        {
            this.Text              = "Damka";
            this.Icon              = Resources.IconKing;
            this.StartPosition     = FormStartPosition.CenterScreen;
            this.FormClosing      += new FormClosingEventHandler(Damka_Closing);
            m_CheckersCheckBoxList = new List <CheckersSquare>();
            m_NextPossibleSquares  = new List <CheckersSquare>();
            this.Controls.Clear();
            this.Size            = new Size(((r_BoardSize + 2) * 50) + 15, (r_BoardSize + 2) * 50);
            this.FormBorderStyle = FormBorderStyle.FixedSingle;

            this.player1Name          = new Label();
            this.player1Name.AutoSize = true;
            this.player1Name.Top      = 25;
            this.player1Name.Left     = (int)(((r_BoardSize / 2) - ((double)r_BoardSize / 4)) * 50);
            this.player1Name.Name     = "player1Name";
            this.player1Name.TabIndex = 0;
            this.player1Name.Text     = r_FirstPlayerName + ": " + r_GameManager.FirstPlayer.TotalNumberOfPoints;

            this.player2Name          = new Label();
            this.player2Name.AutoSize = true;
            this.player2Name.Top      = 25;
            this.player2Name.Left     = (int)((r_BoardSize - ((double)r_BoardSize / 4)) * 50);
            this.player2Name.Name     = "player2Name";
            this.player2Name.TabIndex = 1;
            this.player2Name.Text     = r_SecondPlayerName + ": " + r_GameManager.SecondPlayer.TotalNumberOfPoints;

            this.muteSounds = new CheckBox();
            muteSounds.Text = "Mute";
            muteSounds.Top  = player1Name.Top - 4;
            muteSounds.Left = player1Name.Left - 70;

            this.Controls.Add(player1Name);
            this.Controls.Add(player2Name);
            this.Controls.Add(muteSounds);

            for (int i = 0; i < r_BoardSize; i++)
            {
                for (int j = 0; j < r_BoardSize; j++)
                {
                    CheckersSquare checkersCheckBox = new CheckersSquare();
                    char           row    = PlaceIndexConvertor.GetSmallCharByIndex(i);
                    char           column = PlaceIndexConvertor.GetCapitalCharByIndex(j);
                    checkersCheckBox.Square = new Square(column, row);
                    this.Controls.Add(checkersCheckBox);

                    if ((i + j) % 2 == 0)
                    {
                        checkersCheckBox.BackColor = System.Drawing.Color.Black;
                        checkersCheckBox.Enabled   = false;
                        checkersCheckBox.Top       = (i + 1) * 50;
                        checkersCheckBox.Left      = (j + 1) * 50;
                        checkersCheckBox.Name      = checkersCheckBox.Square.getSquare();
                        checkersCheckBox.Size      = new System.Drawing.Size(50, 50);
                        checkersCheckBox.UseVisualStyleBackColor = false;
                    }
                    else
                    {
                        checkersCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
                        checkersCheckBox.BackColor  = System.Drawing.Color.White;
                        checkersCheckBox.Top        = (i + 1) * 50;
                        checkersCheckBox.Left       = (j + 1) * 50;
                        checkersCheckBox.Name       = checkersCheckBox.Square.getSquare();
                        checkersCheckBox.Size       = new System.Drawing.Size(50, 50);
                        checkersCheckBox.Square     = null;

                        if (r_GameManager.Board.BoardArray[i, j] != null)
                        {
                            checkersCheckBox.CoinType = r_GameManager.Board.BoardArray[i, j].CoinType;

                            if (checkersCheckBox.CoinType == Coin.coinType.O)
                            {
                                checkersCheckBox.BackgroundImage = Resources.Chip_Black;
                            }
                            else
                            {
                                checkersCheckBox.BackgroundImage = Resources.Chip_Red;
                            }

                            checkersCheckBox.BackgroundImageLayout = ImageLayout.Stretch;
                        }

                        checkersCheckBox.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
                        checkersCheckBox.UseVisualStyleBackColor = false;
                    }
                }
            }

            assignCheckersCheckBoxToEvent();
            disableAllNonCurrentPlayerSquares();
        }
示例#20
0
 private void cancelClick()
 {
     paintAllInWhite();
     disableAllNonCurrentPlayerSquares();
     m_CurrentCheckBoxChecked = null;
 }
        public void RemovePiece_CurrentSquareNull_False()
        {
            var square = new CheckersSquare(3, 2);

            Assert.IsFalse(square.RemovePiece());
        }
        public void Equals_NotPiece_False()
        {
            var square = new CheckersSquare(3, 2);

            Assert.IsFalse(square.Equals("square"));
        }