Esempio n. 1
0
    //[UnityTest]
    public IEnumerator WinRow()
    {
        //// Use the Assert class to test conditions.
        //// yield to skip a frame
        int[,] current = new int[9, 9];
        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                current[i, j] = -1;
            }
        }
        current[0, 0] = 1;
        current[1, 0] = 1;
        current[2, 0] = 1;
        current[3, 0] = 1;
        current[4, 0] = 1;
        bool actual = ValidityTests.CheckForWin(current, 0, 0);

        Assert.IsTrue(actual);
        Assert.Fail();
        return(null);
    }
Esempio n. 2
0
    public bool PlacePiece(Player player)
    {
        if (m_piece || !m_piecePrefab)
        {
            return(false);
        }
        if (Game.m_instance.FirstTurn)
        {
            if (Convert.ToInt32(m_coordinate.x) != 0 || Convert.ToInt32(m_coordinate.y) != 0)
            {
                return(false);
            }
            Game.m_instance.FirstTurn = false;
        }
        else if (Game.m_instance.SecondTurn && player.Equals(Game.m_instance.m_player1))
        {
            if (m_coordinate.magnitude < 2.9f)
            {
                return(false);
            }
            Game.m_instance.SecondTurn = false;
        }
        m_piece       = Instantiate(m_piecePrefab, transform.position, Quaternion.identity, transform);
        m_piece.Owner = player;
        int offset = ((Convert.ToInt32(Game.m_instance.m_board.m_slider.value) * 2) + 7) / 2;

        if (ValidityTests.CheckForWin(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            Menu.m_instance.win.SetActive(true);
            Menu.m_instance.winText.text    = Game.m_instance.m_currentPlayer.Name + " has won!";
            Game.m_instance.m_isPlayingGame = false;
        }
        //Check and make captures

        if (ValidityTests.CheckForCaptureTop(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            m_topNeighbor.m_topNeighbor.Clear();
            m_topNeighbor.Clear();
            Game.m_instance.m_currentPlayer.m_numberOfCaptures++;
        }
        if (ValidityTests.CheckForCaptureBottom(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            m_bottomNeighbor.m_bottomNeighbor.Clear();
            m_bottomNeighbor.Clear();
            Game.m_instance.m_currentPlayer.m_numberOfCaptures++;
        }
        if (ValidityTests.CheckForCaptureLeft(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            m_leftNeighbor.m_leftNeighbor.Clear();
            m_leftNeighbor.Clear();
            Game.m_instance.m_currentPlayer.m_numberOfCaptures++;
        }
        if (ValidityTests.CheckForCaptureRight(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            m_rightNeighbor.m_rightNeighbor.Clear();
            m_rightNeighbor.Clear();
            Game.m_instance.m_currentPlayer.m_numberOfCaptures++;
        }
        //Diagonals
        if (ValidityTests.CheckForCaptureBottomLeft(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            m_bottomLeftNeighbor.m_bottomLeftNeighbor.Clear();
            m_bottomLeftNeighbor.Clear();
            Game.m_instance.m_currentPlayer.m_numberOfCaptures++;
        }
        if (ValidityTests.CheckForCaptureBottomRight(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            m_bottomRightNeighbor.m_bottomRightNeighbor.Clear();
            m_bottomRightNeighbor.Clear();
            Game.m_instance.m_currentPlayer.m_numberOfCaptures++;
        }
        if (ValidityTests.CheckForCaptureTopLeft(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            m_topLeftNeighbor.m_topLeftNeighbor.Clear();
            m_topLeftNeighbor.Clear();
            Game.m_instance.m_currentPlayer.m_numberOfCaptures++;
        }
        if (ValidityTests.CheckForCaptureTopRight(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            m_topRightNeighbor.m_topRightNeighbor.Clear();
            m_topRightNeighbor.Clear();
            Game.m_instance.m_currentPlayer.m_numberOfCaptures++;
        }

        if (Game.m_instance.m_currentPlayer.m_numberOfCaptures >= 5)
        {
            Game.m_instance.PlayerWon();
        }

        //Check for Trias

        if (ValidityTests.CheckForTriaHorizontal(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)) ||
            ValidityTests.CheckForTriaVertical(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)) ||
            ValidityTests.CheckForTriaBottomRightToTopLeftDiagonal(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)) ||
            ValidityTests.CheckForTriaTopRightToBottomLeftDiagonal(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            Menu.m_instance.tria.SetActive(true);
            Menu.m_instance.triaText.text   = Game.m_instance.m_currentPlayer.Name + " has made a tria!";
            Game.m_instance.m_isPlayingGame = false;
        }
        if (ValidityTests.CheckForTesseraHorizontal(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)) ||
            ValidityTests.CheckForTesseraVertical(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)) ||
            ValidityTests.CheckForTesseraBottomRightToTopLeftDiagonal(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)) ||
            ValidityTests.CheckForTesseraTopRightToBottomLeftDiagonal(Game.m_instance.m_board.ToArray(), Convert.ToInt32(m_coordinate.x) + offset, Mathf.Abs(Convert.ToInt32(m_coordinate.y) - offset)))
        {
            Menu.m_instance.tessera.SetActive(true);
            Menu.m_instance.tesseraText.text = Game.m_instance.m_currentPlayer.Name + " has made a tessera!";
            Game.m_instance.m_isPlayingGame  = false;
        }

        Game.m_instance.m_board.OpenPlacementCircles.Remove(this);
        return(true);
    }