示例#1
0
    bool checkXLeadDiag(Buttn[] but, Buttn clicked)
    {
        int leadDiag = 0;

        if ((clicked.getX() == 0 && clicked.getY() == 2) || (clicked.getX() == 1 && clicked.getY() == 1) ||
            (clicked.getX() == 2 && clicked.getY() == 0))
        {
            for (int i = 0; i < 9; i = i + 4)
            {
                if (but[i].getText() == "X")
                {
                    leadDiag++;
                }
                else if (but[i].getText() == "O")
                {
                    leadDiag = 0;
                    break;
                }
            }
        }
        else if (leadDiag == 2)
        {
            for (int i = 0; i < 9; i = i + 4)
            {
                if (but[i].getText() == "")
                {
                    but[i].setText("O");
                    return(true);
                }
            }
        }
        return(false);
    }
示例#2
0
    bool checkXDiagonal(Buttn[] but, Buttn clicked)
    {
        int diag = 0;

        if (clicked.getX() == clicked.getY())
        {
            for (int i = 2; i < 7; i = i + 2)
            {
                if (but[i].getText() == "X")
                {
                    diag++;
                }
                else if (but[i].getText() == "O")
                {
                    diag = 0;
                    break;
                }
            }
        }
        if (diag == 2)
        {
            for (int i = 2; i < 7; i = i + 2)
            {
                if (but[i].getText() == "")
                {
                    but[i].setText("O");
                    return(true);
                }
            }
        }
        return(false);
    }
示例#3
0
    bool checkXColumn(Buttn[] but, Buttn clicked)
    {
        int xs = 0;

        for (int i = clicked.getX() % 3; i < 9; i = i + 3)
        {
            if (but[i].getText() == "X")
            {
                xs++;
            }
            else if (but[i].getText() == "O")
            {
                xs = 0;
                break;
            }
        }
        if (xs == 2)
        {
            for (int i = clicked.getX() % 3; i < 9; i = i + 3)
            {
                if (but[i].getText() == "")
                {
                    but[i].setText("O");
                    return(true);
                }
            }
        }
        return(false);
    }
示例#4
0
    bool checkXRow(Buttn[] but, Buttn clicked)
    {
        int ys = 0;

        for (int i = (2 - clicked.getY()) * 3; i < (2 - clicked.getY()) * 3 + 3; i++)
        {
            if (but[i].getText() == "X")
            {
                ys++;
            }
            else if (but[i].getText() == "O")
            {
                ys = 0;
                break;
            }
        }
        if (ys == 2)
        {
            for (int i = (2 - clicked.getY()) * 3; i < (2 - clicked.getY()) * 3 + 3; i++)
            {
                if (but[i].getText() == "")
                {
                    but[i].setText("O");
                    return(true);
                }
            }
        }
        return(false);
    }
示例#5
0
 void ai(Buttn[] but, Buttn clicked)
 {
     if (gameFinished)
     {
         return;
     }
     clicks++;
     int[]  buttonValues = new int[9];
     int[]  loss         = new int[9];
     bool[] free         = new bool[9];
     if (checkColumns(but))
     {
         return;
     }
     if (checkRows(but))
     {
         return;
     }
     if (checkDiagonal(but))
     {
         return;
     }
     if (checkLeadDiagonal(but))
     {
         return;
     }
     if (checkXRow(but, clicked))
     {
         return;
     }
     if (checkXColumn(but, clicked))
     {
         return;
     }
     if (checkXDiagonal(but, clicked))
     {
         return;
     }
     if (checkXLeadDiag(but, clicked))
     {
         return;
     }
     buttonValues = getButtonValues(but);
     free         = emptCells(buttonValues);
     if (checkCorners(buttonValues, but))
     {
         return;
     }
     if (checkXTwoLines(buttonValues, but, free))
     {
         return;
     }
     loss = getLosses(free, buttonValues);
     makeTurn(free, loss, buttonValues, but);
 }
示例#6
0
    void ChngTxt(Buttn x, Buttn[] y)
    {
        bool mid      = false;
        int  row      = 0;
        int  column   = 0;
        int  LeadDiag = 0;
        int  Diag     = 0;

        if (clicks % 2 == 0 && x.getText() == "")
        {
            x.setText("X");
            xs++;
            if (xs > 2)
            {
                if (x.getX() - x.getY() == 0 || x.getX() - x.getY() == 2 || x.getX() - x.getY() == -2)
                {
                    mid = true;
                }
                for (int i = 0; i < 9; i++)
                {
                    if (y[i].getX() == x.getX() && y[i].getText() == "X")
                    {
                        column++;
                    }
                    if (y[i].getY() == x.getY() && y[i].getText() == "X")
                    {
                        row++;
                    }
                    if (mid && ((y[i].getX() == 0 && y[i].getY() == 2) || (y[i].getX() == 1 && y[i].getY() == 1) ||
                                (y[i].getX() == 2 && y[i].getY() == 0)) && y[i].getText() == "X")
                    {
                        LeadDiag++;
                    }
                    if (mid && ((y[i].getX() == 0 && y[i].getY() == 0) || (y[i].getX() == 1 && y[i].getY() == 1) ||
                                (y[i].getX() == 2 && y[i].getY() == 2)) && y[i].getText() == "X")
                    {
                        Diag++;
                    }
                }
                if (row == 3 || column == 3 || LeadDiag == 3 || Diag == 3)
                {
                    panel.SetActive(true);
                    panelText.text = "X won";
                }
            }
            clicks++;
        }
        if (clicks == 9 && (row != 3 && column != 3 && LeadDiag != 3 && Diag != 3))
        {
            panel.SetActive(true);
            panelText.text = "Draw";
        }
    }
示例#7
0
    private int os            = 0;     // the number of O's in a line

    /**
     * The function which is called when the program is launched
     */
    void Start()
    {
        Buttn[] x = new Buttn[9];// Creating button objects for each button
        x[0] = new Buttn(NW, NWt, 0, 2);
        x[1] = new Buttn(N, Nt, 1, 2);
        x[2] = new Buttn(NE, NEt, 2, 2);
        x[3] = new Buttn(W, Wt, 0, 1);
        x[4] = new Buttn(C, Ct, 1, 1);
        x[5] = new Buttn(E, Et, 2, 1);
        x[6] = new Buttn(SW, SWt, 0, 0);
        x[7] = new Buttn(S, St, 1, 0);
        x[8] = new Buttn(SE, SEt, 2, 0);

        NW.onClick.AddListener(delegate // Adding listeners for all of the buttons
        {
            if (x[0].getText() == "" && !gameFinished)
            {
                ChngTxt(x[0], x);
                if (clicks < 9)
                {
                    ai(x, x[0]);
                }
            }
        });
        N.onClick.AddListener(delegate
        {
            if (x[1].getText() == "" && !gameFinished)
            {
                ChngTxt(x[1], x);
                if (clicks < 9)
                {
                    ai(x, x[1]);
                }
            }
        });
        NE.onClick.AddListener(delegate
        {
            if (x[2].getText() == "" && !gameFinished)
            {
                ChngTxt(x[2], x);
                if (clicks < 9)
                {
                    ai(x, x[2]);
                }
            }
        });
        W.onClick.AddListener(delegate
        {
            if (x[3].getText() == "" && !gameFinished)
            {
                ChngTxt(x[3], x);
                if (clicks < 9)
                {
                    ai(x, x[3]);
                }
            }
        });
        C.onClick.AddListener(delegate
        {
            if (x[4].getText() == "" && !gameFinished)
            {
                ChngTxt(x[4], x);
                if (clicks < 9)
                {
                    ai(x, x[4]);
                }
            }
        });
        E.onClick.AddListener(delegate
        {
            if (x[5].getText() == "" && !gameFinished)
            {
                ChngTxt(x[5], x);
                if (clicks < 9)
                {
                    ai(x, x[5]);
                }
            }
        });
        SW.onClick.AddListener(delegate
        {
            if (x[6].getText() == "" && !gameFinished)
            {
                ChngTxt(x[6], x);
                if (clicks < 9)
                {
                    ai(x, x[6]);
                }
            }
        });
        S.onClick.AddListener(delegate
        {
            if (x[7].getText() == "" && !gameFinished)
            {
                ChngTxt(x[7], x);
                if (clicks < 9)
                {
                    ai(x, x[7]);
                }
            }
        });
        SE.onClick.AddListener(delegate
        {
            if (x[8].getText() == "" && !gameFinished)
            {
                ChngTxt(x[8], x);
                if (clicks < 9)
                {
                    ai(x, x[8]);
                }
            }
        });
        restart.onClick.AddListener(delegate { rstrt(x); }); // adds a listener to a button shown when the game is over
    }