Nie dysponuję teraz kompilatorem do C++, ale lepiej byłoby Tobie zrobić tablicę dwuwymiarową, potem rysować ją podwójną pętlą for. Tą Twoją tablicę trudno jest sprawdzić jedną pętlą. We wszystkie strony to bardzo skomplikowanie wyglądałoby. Jakbyś miał tablicę dwuwymiarową, to mógłbyś jedną pętlą sprawdzać np. poziomo, a drugą pionowo i kolejną na ukos.
Kiedyś pisałem coś takiego w Javie. Może Tobie się przydać.
import java.util.Scanner;
import java.util.Random;
public class TicTacToe {
static Scanner input = new Scanner(System.in);
static String charWinner;
public static void main(String[] args) {
int x, y;
Random randomNumber = new Random();
int end = 0;
String charUser = " X ", charBot = " O ";
String[][] tab = new String[4][4];
tab[0][0] = " ";
tab[0][1] = " 1 ";
tab[0][2] = " 2 ";
tab[0][3] = " 3 ";
tab[1][0] = " 1 ";
tab[1][1] = " ";
tab[1][2] = " ";
tab[1][3] = " ";
tab[2][0] = " 2 ";
tab[2][1] = " ";
tab[2][2] = " ";
tab[2][3] = " ";
tab[3][0] = " 3 ";
tab[3][1] = " ";
tab[3][2] = " ";
tab[3][3] = " ";
do {
for(int i = 0; i < 4; ++i) {
for(int j = 0; j < 4; ++j) {
System.out.print(tab[i][j]);
}
System.out.println("");
}
System.out.println("");
System.out.println("");
System.out.print("Enter a value X: ");
x = input.nextInt();
System.out.print("Enter a value Y: ");
y = input.nextInt();
if(checkPosition(x, y, tab)) {
tab[y][x] = charUser;
} else {
continue;
}
if(endGame(tab)) {
end = 1;
}
while(true) {
x = 1+randomNumber.nextInt(3);
y = 1+randomNumber.nextInt(3);
if(checkPositionBot(x, y, tab)) {
tab[y][x] = charBot;
break;
} else {
continue;
}
}
}while(end != 1);
System.out.println("");System.out.println("");
for(int i = 0; i < 4; ++i) {
for(int j = 0; j < 4; ++j) {
System.out.print(tab[i][j]);
}
System.out.println("");
}
if(charWinner.equals(charUser.trim())) {
System.out.println("");
System.out.println("YOU WON!");
} else {
System.out.println("");
System.out.println("YOU LOST!");
}
}
public static boolean checkPosition(int x, int y, String[][] tab) {
if(tab[y][x].equals(" X ") || tab[y][x].equals(" O ")) {
System.out.println("");
System.err.println("This position is occupied.");
return false;
} else {
return true;
}
}
public static boolean checkPositionBot(int x, int y, String[][] tab) {
if(tab[y][x].equals(" X ") || tab[y][x].equals(" O ")) {
return false;
} else {
return true;
}
}
static boolean endGame(String[][] tab) {
if(tab[1][1].equals(" X ") && tab[1][2].equals(" X ") && tab[1][3].equals(" X ")
|| tab[2][1].equals(" X ") && tab[2][2].equals(" X ") && tab[2][3].equals(" X ")
|| tab[3][1].equals(" X ") && tab[3][2].equals(" X ") && tab[3][3].equals(" X ")
|| tab[1][1].equals(" X ") && tab[2][1].equals(" X ") && tab[3][1].equals(" X ")
|| tab[1][2].equals(" X ") && tab[2][2].equals(" X ") && tab[3][2].equals(" X ")
|| tab[1][3].equals(" X ") && tab[2][3].equals(" X ") && tab[3][3].equals(" X ")
|| tab[1][1].equals(" X ") && tab[2][2].equals(" X ") && tab[3][3].equals(" X ")
|| tab[1][3].equals(" X ") && tab[2][2].equals(" X ") && tab[3][1].equals(" X ")) {
charWinner = "X";
return true;
} else if(tab[1][1].equals(" Y ") && tab[1][2].equals(" Y ") && tab[1][3].equals(" Y ")
|| tab[2][1].equals(" Y ") && tab[2][2].equals(" Y ") && tab[2][3].equals(" Y ")
|| tab[3][1].equals(" Y ") && tab[3][2].equals(" Y ") && tab[3][3].equals(" Y ")
|| tab[1][1].equals(" Y ") && tab[2][1].equals(" Y ") && tab[3][1].equals(" Y ")
|| tab[1][2].equals(" Y ") && tab[2][2].equals(" Y ") && tab[3][2].equals(" Y ")
|| tab[1][3].equals(" Y ") && tab[2][3].equals(" Y ") && tab[3][3].equals(" Y ")
|| tab[1][1].equals(" Y ") && tab[2][2].equals(" Y ") && tab[3][3].equals(" Y ")
|| tab[1][3].equals(" Y ") && tab[2][2].equals(" Y ") && tab[3][1].equals(" X ")) {
charWinner = "Y";
return true;
} else {
return false;
}
}
}