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); }
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); }
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); }
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); }
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); }
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"; } }
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 }