I have written the program and it runs allright, there is just one problem. I can't get the loop to break after a winner is declared and I'm not sure if my winner function is working properly.
Any help would be greatly appreciated.
Here is my code:
Code:#include <iostream> #include <iomanip> using namespace std; //Global constants const int COLS = 3; //Number of columns on the board const int ROWS = 3; //Number of rows on the board void initBoard (char [][COLS], int ); void displayBoard(char [][COLS], int); void player1 (int rowX, int colX, char array[][COLS] ); void player2 (int rowO, int colO, char array[][COLS] ); char winner (char array[][COLS], char answer); void playOneGame(char B[][COLS], char answer); int main () { char yes; char B[ROWS][COLS] = {{'*','*','*'},{'*','*','*'},{'*','*','*'}}; char A[ROWS][COLS] = {{'*','*','*'},{'*','*','*'},{'*','*','*'}}; char answer = 'n' ; cout << "To play the game enter the row in which you would like to place your marker and press enter. Then do the same for the column.\n"; initBoard(A, ROWS); do { playOneGame(B, answer); cout << "Another game? Y/N" ; cin >> yes; } while (yes == 'Y' || yes == 'y') ; system("pause"); return 0; } void playOneGame (char B[][COLS], char answer) { int rowX = 0 ; int colX = 0 ; int rowO = 0 ; int colO = 0 ; for (int i = 0; i < 6 ; i++) { player1 (rowX, colX, B); winner (B, answer) ; if (answer == 'x') break; displayBoard(B, ROWS); player2 (rowO, colO, B); winner (B, answer); if (answer == 'o') break; displayBoard(B, ROWS); } } void displayBoard ( char array[][COLS], int rows ) { for (int x = 0; x < rows; x++) { for (int y = 0; y < COLS; y++) { cout << array[x][y] << " "; } cout << endl; } } void initBoard ( char array2[][COLS], int rows ) { for (int x = 0; x < rows; x++) { for (int y = 0; y < COLS; y++) { cout << array2[x][y] << " "; } cout << endl; } } void player1 (int rowX, int colX, char array[][COLS]) { cout << "Please select a space on the board to place your 'x'\n"; cin >> rowX >> colX ; if (rowX == 1 && colX == 1) array[0][0] = 'x' ; if (rowX == 1 && colX == 2) array[0][1] = 'x' ; if (rowX == 1 && colX == 3) array[0][2] = 'x' ; if (rowX == 2 && colX == 1) array[1][0] = 'x' ; if (rowX == 2 && colX == 2) array[1][1] = 'x' ; if (rowX == 2 && colX == 3) array[1][2] = 'x' ; if (rowX == 3 && colX == 1) array[2][0] = 'x' ; if (rowX == 3 && colX == 2) array[2][1] = 'x' ; if (rowX == 3 && colX == 3) array[2][2] = 'x' ; } void player2 (int rowO, int colO, char array[][COLS] ) { cout << "Please select a space on the board to place your 'o'\n"; cin >> rowO >> colO ; if (rowO == 1 && colO == 1) array[0][0] = 'o' ; if (rowO == 1 && colO == 2) array[0][1] = 'o' ; if (rowO == 1 && colO == 3) array[0][2] = 'o' ; if (rowO == 2 && colO == 1) array[1][0] = 'o' ; if (rowO == 2 && colO == 2) array[1][1] = 'o' ; if (rowO == 2 && colO == 3) array[1][2] = 'o' ; if (rowO == 3 && colO == 1) array[2][0] = 'o' ; if (rowO == 3 && colO == 2) array[2][1] = 'o' ; if (rowO == 3 && colO == 3) array[2][2] = 'o' ; } char winner ( char B[][COLS], char answer) { if (B[0][0] == B[0][1] && B[0][1] == B[0][2]) answer = B[0][0] ; if (B[1][0] == B[1][1] && B[1][1] == B[1][2]) answer = B[1][0]; if (B[2][0] == B[2][1] && B[2][1] == B[2][2]) answer = B[2][0]; if (B[0][0] == B[1][0] && B[1][0] == B[2][0]) answer = B[1][0]; if (B[0][1] == B[1][1] && B[1][1] == B[2][1]) answer = B[1][1]; if (B[0][2] == B[1][2] && B[1][2] == B[2][2]) answer = B[2][2]; if (B[0][0] == B[1][1] && B[1][1] == B[2][2]) answer = B[2][2]; if (B[0][2] == B[1][1] && B[1][1] == B[2][0]) answer = B[1][1]; if (answer == 'x' || answer == 'o') cout << "player " << answer << " has won\n" ; }



LinkBack URL
About LinkBacks


