Tengo un juego, escrito en C, el cúal se trata del tres en raya.
Tu compites contra la computadora (el juego tiene una seudo IA)
Todo funciona bien, pero si el jugador o la seudo IA pone una ficha en el casillero 5, (el de almedio), se vuelve invisible y se bugea el juego.
Espero que logren leer mi código espagueti.
Saludos.
#include <stdio.h>
#include <time.h>
void mainloop(char c[3][3]);
void inum(char c[3][3]);
void tablero(char c[3][3]);
void inusr(char c[3][3]);
void seudoai(char c[3][3]);
int win(char c[3][3]);
int main()
{
char c[3][3];
mainloop(c);
return 0;
}
void mainloop(char c[3][3])
{
int j;
int i = 0;
inum(c);
tablero(c);
do
{
tablero(c);
if(i % 2 == 0)
{
inusr(c);
}
else
{
seudoai(c);
}
j = win(c);
++i;
}while(i <= 9 && j == 2);
if(j == 0)
{
}
else if(j == 1)
{
}
else
{
}
}
void inum(char c[3][3])
{
int i, j;
char aux = '0';
for(i = 0; i < 3; ++i)
{
for(j = 0; j < 3; ++j)
{
c[i][j] = ++aux;
}
}
}
void inusr(char c[3][3])
{
char aux;
int i, j, k;
do
{
do
{
}while(aux < '1' || aux > '9');
k = 0;
switch(aux)
{
case '1':{
i = 0;
j = 0;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
case '2':{
i = 0;
j = 1;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
case '3':{
i = 0;
j = 2;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
case '4':{
i = 1;
j = 0;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
case '5':{
i = 1;
j = 1;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
case '6':{
i = 1;
j = 2;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
case '7':{
i = 2;
j = 0;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
case '8':{
i = 2;
j = 1;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
case '9':{
i = 2;
j = 2;
if (c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
printf("Casilla ocupada!\n\n"); }
break;
}
}
}while(k == 1);
c[i][j] = 'X';
}
void seudoai(char c[3][3])
{
int i, j, k;
//char aux;
do
{
i
= rand() % 3; // n rand entre 0 y 2 k = 0;
if(c[i][j] == 'X' || c[i][j] == 'O')
{
k = 1;
}
}while(k == 1);
c[i][j] = 'O';
}
void tablero(char c[3][3])
{
int i, j;
for(i = 0; i < 3; ++i)
{
for(j = 0; j < 3; ++j) //replace ++j with ++i, and have fun!
{
if(j < 2)
{
}
else
{
}
}
if(i < 2)
{
}
}
}
int win(char c[3][3])
{
if(c[0][0] == 'X' || c[0][0] == 'O')
{
if(c[0][0] == c[0][1] && c[0][0] == c[0][2])
{
if(c[0][0] == 'X')
{
return 0;
}
else
{
return 1;
}
}
else if(c[0][0] == c[1][0] && c[0][0] == c[2][0])
{
if(c[0][0] == 'X')
{
return 0;
}
else
{
return 1;
}
}
}
if(c[1][1] == 'X' || c[1][1] == 'O')
{
if(c[1][1] = c[0][0] && c[1][1] == c[2][2])
{
if(c[1][1] == 'X')
{
return 0;
}
else
{
return 1;
}
}
if(c[1][1] == c[1][0] && c[1][1] == c[1][2])
{
if(c[1][1] == 'X')
{
return 0;
}
else
{
return 1;
}
}
if(c[1][1] == c[2][0] && c[1][1] == c[0][2])
{
if(c[1][1] == 'X')
{
return 0;
}
else
{
return 1;
}
}
if(c[1][1] == c[0][1] && c[1][1] == c[2][1])
{
if(c[1][1] == 'X')
{
return 0;
}
else
{
return 1;
}
}
}
if(c[2][2] == 'X' || c[2][2] == 'O')
{
if(c[2][2] == c[2][0] && c[2][1] == c[2][1])
{
if(c[2][2] == 'X')
{
return 0;
}
else
{
return 1;
}
}
if(c[2][2] == c[0][2] && c[2][2] == c[1][2])
{
if(c[2][2] == 'X')
{
return 0;
}
else
{
return 1;
}
}
}
return 2;
}