Hola a todos de nuevo!! Acabo de terminar mi programa 3 en raya (en la consola, sin gráficos) y quiero exponerlo, para que todos aportemos código y hagamos mejor el juego (entre otras cosas: Gráficos e Inteligencia artificial.) Espero que me entendáis y os animéis.
Código:/*UN SENCILLO JUEGO DE TRES EN RAYA by:K0rl3oN*/ #include "stdio.h" #include "stdlib.h" char matriz[3] [3]; /*La matriz de tres en raya*/ char comprobar(void); void inic_matriz(void); void obt_mov_jugador(void); void obt_mov_computadora(void); void mostrar_matriz(void); void main(void) { char hecho; printf("Este es el juego de tres en raya.\n\n"); printf("Vd. jugara contra la computadora.\n\n"); printf("Vd. es \"X\"\n"); hecho = ' '; inic_matriz(); do { mostrar_matriz(); obt_mov_jugador(); hecho=comprobar(); /*Ver si gana*/ if(hecho!=' ') break; /*Ganador*/ obt_mov_computadora(); hecho=comprobar(); /*Ganador*/ } while(hecho==' '); if(hecho=='X') printf("Ha ganado Vd.!!\n\n"); else printf("Ha ganado la maquina!! You lose!\n"); mostrar_matriz(); /*mostrar las posiciones finales*/ } /*Inicializar la matriz*/ void inic_matriz(void) { int i, j; for(i=0; i<3; i++) for(j=0; j<3; j++) matriz [j] = ' '; } /*Obtener un movimiento del jugador*/ void obt_mov_jugador(void) { int x, y; printf("Introduzca sus coordenadas de su X Y (ej. 2 3): "); scanf("%d%d", &x, &y); x--; y--; if(matriz[x] [y] != ' ') { printf("Movimiento invalido, pruebe de nuevo.\n\n"); obt_mov_jugador(); } else matriz[x] [y] = 'X'; } /*Obtener un movimiento de la computadora*/ void obt_mov_computadora(void) { int i, j; for(i=0; i<3; i++) { for(j=0; j<3; j++) if(matriz [j]==' ') break; if(matriz [j]==' ') break; } if(i*j==9) { printf ("Tablas.\n"); exit(0); } else matriz [j] = 'O'; } /*Mostrar la matriz en la pantalla*/ void mostrar_matriz(void) { int t; for(t=0; t<3; t++) { printf(" %c | %c | %c ", matriz[t] [0], matriz[t] [1], matriz[t] [2]); if(t!=2) printf("\n---|---|---\n"); } printf("\n"); } /*Ver si hay un ganador*/ char comprobar(void) { int i; for(i=0; i<3; i++) /*Comprobar filas*/ if(matriz [0]==matriz [1] && matriz [0] ==matriz [2]) return matriz [0]; for(i=0; i<3; i++) /*Comprobar columnas*/ if(matriz[0] ==matriz[1] && matriz[0] ==matriz[2] ) return matriz[0] ; /*Comprobar diagonales*/ if(matriz[0] [0]==matriz[1] [1] && matriz[1] [1]==matriz[2][2]) return matriz[0] [0]; if(matriz[0] [2]==matriz[1] [1] && matriz[1] [1]==matriz[2] [0]) return matriz[0] [2]; return ' '; }
P.D: El programa lo hice en Code::Blocks, en la sección C++, utilizando código C (porque estoy acostumbrado)
Salu2...Edited by: K0rl3oN