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.
Código
#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; } break; } case '2':{ i = 0; j = 1; if (c[i][j] == 'X' || c[i][j] == 'O') { k = 1; } break; } case '3':{ i = 0; j = 2; if (c[i][j] == 'X' || c[i][j] == 'O') { k = 1; } break; } case '4':{ i = 1; j = 0; if (c[i][j] == 'X' || c[i][j] == 'O') { k = 1; } break; } case '5':{ i = 1; j = 1; if (c[i][j] == 'X' || c[i][j] == 'O') { k = 1; } break; } case '6':{ i = 1; j = 2; if (c[i][j] == 'X' || c[i][j] == 'O') { k = 1; } break; } case '7':{ i = 2; j = 0; if (c[i][j] == 'X' || c[i][j] == 'O') { k = 1; } break; } case '8':{ i = 2; j = 1; if (c[i][j] == 'X' || c[i][j] == 'O') { k = 1; } break; } case '9':{ i = 2; j = 2; if (c[i][j] == 'X' || c[i][j] == 'O') { k = 1; } break; } } }while(k == 1); c[i][j] = 'X'; } void seudoai(char c[3][3]) { int i, j, k; //char aux; do { 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; }