i tried to make a game using 2d character arrays. but the if else statements are not working and the loop is not breaking. Also when i assign a character to the last element of my row , the next row's first element automatically changes.
my code is :
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void scoreprinter( int m , int n , char matrix[m][n]);
void newscore( int m , int n , char matrix[m][n]) ;
void maingame(int m , int n , char matrix[m][n]);
int main() {
system("cls");
char columns[2][2] ;
newscore(2,2,columns);
maingame(2,2,columns);
getch();
return 0;
}
void scoreprinter( int m , int n , char matrix[m][n]) {
printf("\n\n\t\tTICTACTOE GAME\n");
for(int i=0 ; i<=2 ; i++ ) {
for(int j=0 ; j<=2 ; j++) {
printf("\t%c\t",matrix[i][j]);
}
printf("\n");
}
}
void newscore( int m , int n , char matrix[m][n]) {
for(int i=0 ; i<=2 ; i++) {
for(int j=0 ; j<=2 ; j++){
matrix[i][j] = '_' ;
}
}
}
void maingame(int m , int n , char matrix[m][n]) {
int k=0;
int a,b;
for(k ; k<=9 ; k++) {
system("cls");
scoreprinter(2,2,matrix);
if (k%2 == 0)
{
if ( (matrix[0][0] == matrix[0][1] == matrix[0][2]) || (matrix[1][0] == matrix[1][1] == matrix[1][2]) || (matrix[2][0] == matrix[2][1] == matrix[2][2]) || (matrix[0][0] == matrix[1][0] == matrix[2][0]) || (matrix[0][1] == matrix[1][1] == matrix[2][1]) || (matrix[0][2] == matrix[1][2] == matrix[2][2]) || (matrix[0][0] == matrix[1][1] == matrix[2][2]) || (matrix[0][3] == matrix[1][1] == matrix[3][0]) )
{
printf("condition matched");
break;
}
printf("\nPlayer 1\nEnter row for marking\n");
scanf("%d",&a);
printf("\nEnter column for marking\n");
scanf("%d",&b);
matrix[(a-1)][(b-1)] = 'X';
scoreprinter(2,2,matrix);
}
else if (k%2 == 1)
{
if ( (matrix[0][0] == matrix[0][1] == matrix[0][2]) || (matrix[1][0] == matrix[1][1] == matrix[1][2]) || (matrix[2][0] == matrix[2][1] == matrix[2][2]) || (matrix[0][0] == matrix[1][0] == matrix[2][0]) || (matrix[0][1] == matrix[1][1] == matrix[2][1]) || (matrix[0][2] == matrix[1][2] == matrix[2][2]) || (matrix[0][0] == matrix[1][1] == matrix[2][2]) || (matrix[0][3] == matrix[1][1] == matrix[3][0]) )
{
printf("condition matched");
break;
}
printf("\nPlayer 2\nEnter row for marking\n");
scanf("%d",&a);
printf("\nEnter column for marking\n");
scanf("%d",&b);
matrix[(a-1)][(b-1)] = '0';
scoreprinter(2,2,matrix);
}
}
}
i tried creating another loop but it's not working.
For a noughts and crosses game, your array is normally 3x3. Your declaration is 2x2, so amending
columns[0][2]is really amendingcolumns[1][0].Since most of your for-loops seem to be hard-coded
i<=2orj<=2, they should work correctly once the array size is corrected.