Título: alguien que me diga el error es el juego de conecta cuatro en codigo c
Publicado por: cisar en 20 Mayo 2013, 02:09 am
#include <stdio.h> #include <stdlib.h>
int juego(); int main() {
int d, played=0;
while(d!=2) { system("cls"); printf("Conecta 4\n------\n"); printf("1)Jugar\n"); printf("2)Salir\n\n"); printf("\tJuegos jugados:%d\n", played); scanf("%d", &d); //pide opción del menú. switch(d) { case 1: juego(); //llama a la función juego. played++; //el contador de juegos se incrementa. break; case 2: break; default: printf("\nError.. Solo elige 1 o 2...\n");
break; } } return 0;
}
int juego() { int tablero[6][7], i, j, won=0, turno=1, seleccion; for(i=0;i<7;i++) for(j=0;j<6;j++) tablero[j]=0; //Pone todo vacio while(!won) { system("cls"); for(i=0;i<7;i++) printf(" %d\t", i+1); //imprime la numeración de las columnas printf("\n"); for(i=0;i<6;i++) { for(j=0;j<7;j++) //recorre cada espacio del tablero if(tablero[j]==0) printf("( )\t"); //imprimiendo la matriz, y segun lo que tenga else if(tablero[j]==1) printf("(X)\t"); //pone un espacio, X, o O else printf("(O)\t"); printf("\n"); } if(turno==1) printf("\nTurno de X."); else printf("\nTurno de O."); printf("En que columna tiraras?"); scanf("%d", &seleccion); seleccion--; //porque esta numerado desde el 1, y la compu cuenta desde el 0. if(tablero[seleccion][0]!=0) printf("\nError columna llena o fuera de rango\n"); else { for(i=0;i<6;i++) if(tablero[seleccion][i+1]!=0||i==5) { tablero[seleccion]=turno; //si el espacio que sigue esta lleno, o esta en el borde, lo ocupa. i=6; }
for(i=0;i<7;i++) { for(j=0;j<6;j++) { if(tablero[j]==1||tablero[j]==2) { if(tablero[j]==tablero[j+1]&&tablero[j]==tablero[j+2]&&tablero[j]==tablero[j+3]) won=1; //checa para la derecha
if(tablero[j]==tablero[i+1][j]&&tablero[j]==tablero[i+2][j]&&tablero[j]==tablero[i+3][j]) won=1; //checa para abajo
if(tablero[j]==tablero[i+1][j+1]&&tablero[j]==tablero[i+2][j+2]&&tablero[j]==tablero[i+3][j+3]) won=1;//diagonal a derecha if(tablero[j]==tablero[i+1][j-1]&&tablero[j]==tablero[i+2][j-2]&&tablero[j]==tablero[i+3][j-3]) won=1; //diag izquierda } } } if(won==1) { system("cls");
for(i=0;i<7;i++) printf(" %d\t", i+1); //imprime la numeración de las columnas printf("\n"); for(i=0;i<7;i++) { for(j=0;j<6;j++) if(tablero[j]==0) printf("( )\t"); else if(tablero[j]==1) printf("(X)\t"); else printf("(O)\t"); printf("\n"); } printf("Bien! gano "); if(turno==1) printf("X\n"); else printf("O\n"); } if(turno==1) turno=2; //cambia los turnos else turno=1;
} } fflush(stdin); getchar();
return juego; }
Título: Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
Publicado por: amchacon en 20 Mayo 2013, 15:00 pm
Usa las etiquetas GESHI #include <stdio.h> #include <stdlib.h> int juego(); int main() { int d, played=0; while(d!=2) { system("cls"); printf("Conecta 4\n------\n"); printf("1)Jugar\n"); printf("2)Salir\n\n"); printf("\tJuegos jugados:%d\n", played); scanf("%d", &d); //pide opción del menú. switch(d) { case 1: juego(); //llama a la función juego. played++; //el contador de juegos se incrementa. break; case 2: break; default: printf("\nError.. Solo elige 1 o 2...\n"); break; } } return 0; }
Por otro lado, deberías decirnos el error. Así acabamos antes (de momento veo que no has inicializado la variable d).
Título: Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
Publicado por: s00rk en 20 Mayo 2013, 16:45 pm
Cuando indicas donde puso la ficha el jugador esta mal tablero[seleccion]=turno;
Es una matriz no un vector, debes indicarle ambos puntos sobre donde guardaras, igualmente cuando buscas quien gano estas solo indicando un punto y no ambos.
Título: Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
Publicado por: leosansan en 20 Mayo 2013, 17:29 pm
Si estaban puestos. Lo que ocurre que al no meter el código entre las etiquetas GeSHi de C++ no salen. Simplemente lo que pongo a continuación es el mismo código entre dichas etiquetas: #include <stdio.h> #include <stdlib.h> int juego(); int main() { int d=3, played=0; while(d!=2) { system("cls"); printf("\tJuegos jugados:%d\n", played); printf("Conecta 4\n------\n"); printf("1)Jugar\n"); printf("2)Salir\n\n"); scanf("%d", &d); //pide opción del menú. switch(d) { case 1: juego(); //llama a la función juego. played++; //el contador de juegos se incrementa. break; case 2: break; default: printf("\nError.. Solo elige 1 o 2...\n"); break; } } return 0; } int juego() { int tablero[6][7], i, j, won=0, turno=1, seleccion; for(i=0;i<7;i++) for(j=0;j<6;j++) tablero[i][j]=0; //Pone todo vacio while(!won) { system("cls"); for(i=0;i<7;i++) printf(" %d\t", i+1); //imprime la numeración de las columnas printf("\n"); for(i=0;i<6;i++) { for(j=0;j<7;j++) //recorre cada espacio del tablero if(tablero[j][i]==0) printf("( )\t"); //imprimiendo la matriz, y segun lo que tenga else if(tablero[j][i]==1) printf("(X)\t"); //pone un espacio, X, o O else printf("(O)\t"); printf("\n"); } if(turno==1) printf("\nTurno de X."); else printf("\nTurno de O."); printf("En que columna tiraras?"); scanf("%d", &seleccion); seleccion--; //porque esta numerado desde el 1, y la compu cuenta desde el 0. if(tablero[seleccion][0]!=0) printf("\nError columna llena o fuera de rango\n"); else { for(i=0;i<6;i++) if(tablero[seleccion][i+1]!=0||i==5) { tablero[seleccion][i]=turno; //si el espacio que sigue esta lleno, o esta en el borde, lo ocupa. i=6; } for(i=0;i<7;i++) { for(j=0;j<6;j++) { if(tablero[i][j]==1||tablero[i][j]==2) { if(tablero[i][j]==tablero[i][j+1]&&tablero[i][j]==tablero[i][j+2]&&tablero[i][j]==tablero[i][j+3]) won=1; //checa para la derecha if(tablero[i][j]==tablero[i+1][j]&&tablero[i][j]==tablero[i+2][j]&&tablero[i][j]==tablero[i+3][j]) won=1; //checa para abajo if(tablero[i][j]==tablero[i+1][j+1]&&tablero[i][j]==tablero[i+2][j+2]&&tablero[i][j]==tablero[i+3][j+3]) won=1;//diagonal a derecha if(tablero[i][j]==tablero[i+1][j-1]&&tablero[i][j]==tablero[i+2][j-2]&&tablero[i][j]==tablero[i+3][j-3]) won=1; //diag izquierda } } } if(won==1) { system("cls"); for(i=0;i<7;i++) printf(" %d\t", i+1); //imprime la numeración de las columnas printf("\n"); for(i=0;i<7;i++) { for(j=0;j<6;j++) if(tablero[j][i]==0) printf("( )\t"); else if(tablero[j][i]==1) printf("(X)\t"); else printf("(O)\t"); printf("\n"); } printf("Bien! gano "); if(turno==1) printf("X\n"); else printf("O\n"); } if(turno==1) turno=2; //cambia los turnos else turno=1; } } fflush(stdin); getchar(); return juego; }
Saluditos!. .... ..(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Título: Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
Publicado por: leosansan en 20 Mayo 2013, 18:25 pm
¡¡¡Ya puedes jugar!!!, tan solo tenías mal declaradas las dimensiones de la matriz tablero en los for. Te he incluido una pequeña variante por si entran un caracter no numérico no se quede en un bucle el programa: #include <stdio.h> #include <stdlib.h> int juego(); int main() { int d,played=0,cont=0; while(d!=2) { //system("cls"); cont=0; printf("Conecta 4\n------\n"); printf("1)Jugar\n"); printf("2)Salir\n\n"); printf("\tJuegos jugados:%d\n", played); cont=scanf("%d", &d); if (cont==0){ d=3; while(getchar()!='\n'); } //pide opción del menú. switch(d) { case 1: juego(); //llama a la función juego. played++; //el contador de juegos se incrementa. break; case 2: break; default: printf("\nError.. Solo elige 1 o 2...\n"); break; } } return 0; } int juego() { int tablero[6][7], i, j, won=0, turno=1, seleccion; for(i=0;i<6;i++) for(j=0;j<7;j++) tablero[i][j]=0; //Pone todo vacio while(!won) { system("cls"); for(i=0;i<6;i++) printf(" %d\t", i+1); //imprime la numeración de las columnas printf("\n"); for(i=0;i<6;i++) { for(j=0;j<7;j++) //recorre cada espacio del tablero if(tablero[j][i]==0) printf("( )\t"); //imprimiendo la matriz, y segun lo que tenga else if(tablero[j][i]==1) printf("(X)\t"); //pone un espacio, X, o O else printf("(O)\t"); printf("\n"); } if(turno==1) printf("\nTurno de X."); else printf("\nTurno de O."); printf("En que columna tiraras?"); scanf("%d", &seleccion); seleccion--; //porque esta numerado desde el 1, y la compu cuenta desde el 0. if(tablero[seleccion][0]!=0) printf("\nError columna llena o fuera de rango\n"); else { for(i=0;i<6;i++) if(tablero[seleccion][i+1]!=0||i==5) { tablero[seleccion][i]=turno; //si el espacio que sigue esta lleno, o esta en el borde, lo ocupa. i=6; } for(i=0;i<7;i++) { for(j=0;j<6;j++) { if(tablero[i][j]==1||tablero[i][j]==2) { if(tablero[i][j]==tablero[i][j+1]&&tablero[i][j]==tablero[i][j+2]&&tablero[i][j]==tablero[i][j+3]) won=1; //checa para la derecha if(tablero[i][j]==tablero[i+1][j]&&tablero[i][j]==tablero[i+2][j]&&tablero[i][j]==tablero[i+3][j]) won=1; //checa para abajo if(tablero[i][j]==tablero[i+1][j+1]&&tablero[i][j]==tablero[i+2][j+2]&&tablero[i][j]==tablero[i+3][j+3]) won=1;//diagonal a derecha if(tablero[i][j]==tablero[i+1][j-1]&&tablero[i][j]==tablero[i+2][j-2]&&tablero[i][j]==tablero[i+3][j-3]) won=1; //diag izquierda } } } if(won==1) { system("cls"); for(i=0;i<7;i++) printf(" %d\t", i+1); //imprime la numeración de las columnas printf("\n"); for(i=0;i<7;i++) { for(j=0;j<6;j++) if(tablero[j][i]==0) printf("( )\t"); else if(tablero[j][i]==1) printf("(X)\t"); else printf("(O)\t"); printf("\n"); } printf("Bien! gano "); if(turno==1) printf("X\n"); else printf("O\n"); } if(turno==1) turno=2; //cambia los turnos else turno=1; } } fflush(stdin); getchar(); return juego; }
Ssaluditos!. ... ..(http://st.forocoches.com/foro/images/smilies/dancer2.gif) P.D: Sería interesante que desarrollaras una variante donde el "otro" jugador sea "la máquina". LLeva algo de desarrollo de I.A pero vale la pena el intentarlo.
Título: Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
Publicado por: leosansan en 21 Mayo 2013, 17:18 pm
¡¡¡Ya puedes jugar!!:
Sólo comentar que en lugar de un tablero "aburrido" como éste:
(http://i1280.photobucket.com/albums/a497/leosansan/GRAFICOS1/conecta4sin_zps82c8059a.jpg)
podemos tener algo más "vistoso", sin usar librerías adicionales":
(http://i1280.photobucket.com/albums/a497/leosansan/GRAFICOS1/conecta4color_zpse19ce4b7.jpg)
siguiendo lo indicado en
http://foro.elhacker.net/programacion_cc/c-t390579.0.html
sin más que añadir a lo expuesto en el post que indico encima system("color 70)" ....... ¡y a jugar con colorines!.
¡Saluditos! .... ..(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
|