Hey im tryng to make a tic tac toe game but no matter what my game keeps returning "game is a draw" after the first round of turns. any ideas?
Code:
#include <stdio.h>
#include <stdlib.h>
#define ROW 3
#define COL 3
void printboard (char b[ROW][COL]);
void clearboard (char b[ROW][COL]);
void play(char b[ROW][COL], char p);
int checkwinner(char b [ROW][COL]);
char testrow(char b[ROW][COL]);
char testcols(char b[ROW][COL]);
char testdiag(char b[ROW][COL]);
char testdraw(char b[ROW][COL]);
int main(){
char player;
int check=0;
char board[3][3];
clearboard(board);
printboard(board);
while(check==0){
player='X';
play(board, player);
printboard(board);
player = 'O';
play (board,player);
printboard(board);
check=checkwinner(board);
}
return 0;
}
void clearboard (char b[ROW][COL]){
int row, col;
for (row=0; row<3; ++row){
for (col=0; col<3; ++col){
b[row][col] = '-';
}
}
}
void printboard(char b[ROW][COL]){
int row, col;
printf("\t0\t1\t2\n");
for (row=0; row<3; ++row){
printf("%i\t", row);
for (col=0; col<3; ++col){
printf ("%c\t",b[row][col]);
}
printf("\n");
}
}
void play(char b[ROW][COL], char p){
int x, y;
printf("Player %c, please enter a row and column between 0 and 2:\n", p);
scanf("%i %i", &y, &x);
b[y][x]= p;
}
int checkwinner(char b[ROW][COL]){
if (testrow(b)!=' '){
printf("Player %c is the winner", testrow(b));
return 1;
}
else if (testcols(b)!=' '){
printf("Player %c is the winner", testcols(b));
return 1;
}
else if (testdiag(b)!=' '){
printf("Player %c is the winner", testdiag(b));
return 1;
}
else if (testdraw(b)!=' '){
printf("The Game is a Draw");
return 1;
}
else{
return 0;
}}
char testrow(char b[ROW][COL]){
int r=0;
char winner='n';
for (r=0;r<3; ++r){
if (b[r][0]==b[r][1]&&b[r][0]==b[r][2]){
return (b[r][0]);
}//no else- do nothing
}
return ' ';
}
char testcols(char b[ROW][COL]){
int c=0;
for (c=0;c<3;++c){
if (b[0][c]==b[1][c]&& b[0][c]==b[2][c]){
return (b[0][c]);
//no else- do nothing
}
}
return ' ';
}
char testdiag(char b[ROW][COL]){
if (b[0][0]==b[1][1]&&b[0][0]==b[2][2]){
return (b[0][0]);
}
if (b[0][2]==b[1][1]&&b[0][2]==b[2][0]){
return (b[0][2]);
}
return ' ';
}
char testdraw(char b[ROW][COL]){
int a,b;
for (a=0; a<3; ++a){
for (b=0;b<3;++b){
if (b[a][b]=='-'){
return ' ';
}
if (b[a][b]=='-'){
return ' ';
}
if (a*b==9){
return 'draw';
}}}
return ' ';}