Autor
|
Tema: juego de cuatro en linea en lenguaje C (Leído 3,641 veces)
|
gwennnnnn26
Desconectado
Mensajes: 6
|
Hola! oigan tengo que hacer un código en lenguaje c pero no tengo idea de como hacerlo me confundo a la hora de escribirlo y no se si si agarre porque no tengo donde ejecutarlo y no se si esta bien o mal, no les pido que me den el codigo pero si que si me pueden orientar a como va a a ir el codigo porque de verdad no se que hacer estoy perdida.
me pidieron que deba tener estas características:
1- debe de ser un tablero de 10 x 10 casillas (ese es uno de mis principales prblemas no se como hacer el tablero) 2-o sea yo no voy a jugarlo si no que mi programa sera el arbitro
El programa puede ser ejecutado de varias maneras: 1. ./cuatro –h : el programa deberá desplegar una ayuda sobre cómo ejecutar y usar el juego. Terminando de desplegar la ayuda no hará nada más y terminará la ejecución. 2. ./cuatro : Al comenzar el programa de esta manera, debe aparecer en pantalla el nombre de las personas que lo elaboraron. Se deberá esperar a que se presione un enter para continuar. Posteriormente debe desplegarse en pantalla un mensaje que explique brevemente el objetivo y reglas del juego, y se deberá esperar nuevamente a que se presione un enter para comenzar a jugar. El programa deberá validar que las entradas de los jugadores sean válidas e introducidas con un formato correcto. El jugador deberá especificar la columna en la que desea tirar su ficha. El programa deberá validar que esa columna exista, que no esté llena, y si algún jugador ganó. En cualquier momento se puede elegir, en vez de la columna a tirar, la letra ‘S’. Esto servirá para guardar en un archivo de texto, la historia del juego. El nombre del archivo se generará automáticamente y estará formado por la fecha y la hora con el formato: ddmmaa_hhmm.jgo
Para esto, se deberá haber llevado, en una lista dinámica, la secuencia de tiros realizados, mismos que serán guardados en el archivo. El nombre del archivo deberá ser mostrado a los jugadores para confirmar que quedó grabado y enseñarles el nombre. También se podrá introducir, en vez de una columna de tiro, una ‘T’ de terminar, con lo que se deberá terminar la ejecución del juego.
3. ./cuatro –r ddmmaa_hhmm.jgo : al ejecutarlo de esta manera se deberá notificar a los jugadores que se recuperará el juego con ese nombre, buscará el archivo, en caso de no existir notificará y terminará la ejecución. En caso de existir cargará la historia del archivo en una lista dinámica y mostrará a los jugadores tirada por tirada del juego guardado. Una vez que termine deberá indicar de quien es turno y el juego podrá ser reanudado entonces. Para mostrar cada jugada, el jugador deberá presionar la letra ‘p’ (próxima) para ir de jugada en jugada. En cualquiera de ellas se podrá presionar la letra ‘c’; esto significará que el juego será continuado a partir de esa jugada, debiendo descartar el resto de jugadas guardadas.
|
|
|
En línea
|
|
|
|
engel lex
|
Hola! oigan es un foro, leemos no te escuchamos a la hora de escribirlo y no se si si agarre porque no tengo donde ejecutarlo muy malo, dificultosamente la gente puede programar sin probar algo a su nivel y que funcione no les pido que me den el codigo pero si que si me pueden orientar a como va a a ir el codigo que llevas hecho? en que tienes tu duda? te digo algo de antemano, poca gente se va a detener a leer más que 1- debe de ser un tablero de 10 x 10 casillas (ese es uno de mis principales prblemas no se como hacer el tablero) 2-o sea yo no voy a jugarlo si no que mi programa sera el arbitro así que te recomiendo bajarte un compilador para probar, hacer el codigo y hacer preguntas puntuales cuando te de errores o no sepas como avanzar
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
palacio29
Desconectado
Mensajes: 103
|
Para el tablero podes crear una matriz usando arreglos bidimensionales. Pero como dijo el de arriba, te recomiendo pensarlo mucho y que empieces a hacerlo y consultar dudas puntuales o mostrar lo que tenes hecho. 1) Escribi toda la logica en un papel borrador 2) Escribi en un borrador como lo harias en lenguaje c 3) Empeza a programarlo usando algun compilador, yo uso el codeblocks.
|
|
|
En línea
|
|
|
|
gwennnnnn26
Desconectado
Mensajes: 6
|
Que malos son chicos luego luego se enojan pero ok los entiendo. bien estuve muy desesperada buscando referencias con otros codigos y metiendole y sacandole a lo que sengun yo entiendo a la hora de correnlo dice que todo esta cutre y que tiene errores a los cules no entiendo porque la mayoria estan en ingles, le he tratado de mover pero no queda. de todas maneras les paso mi codigo y diganme que opinan por favor #include <stdio.h> #include <stdlib.h> void main() { int getMatriz( int [10] filas, int [10] columnas); int getArray(int [10]); printTablero (int matriz, int [10] filas, int [10] columnas); void IniciarContador (int *array, int n, int vi); } int main(int argc, char* argv) //*El parámetro argv contiene un puntero a cada uno de los argumentos (strings) de la línea de ordenes de la llamada al programa*// //*El parámetro argc contiene el número de argumentos en la línea de ordenes de la llamada al programa*// { printf("¡¡¡Bienvenido a 4 en linea!!!\n"); } do { switch () { case 1: filas=10; columnas=10; jug=2; break; } default: printf("Valor no valido\n"); scanf("%d", &opt); break; } }while (opt < 1 || opt > 2 || jug < 2 || jug > 4 ); A=getMatriz(filas, columnas); contador=getArray(columnas); IniciarContador(contador, columnas, filas-1); printTablero(A, filas, columnas); juego(A, contador, filas, columnas, jug); } int **getMatriz( int filas, int columnas) { int **var; int i; var=(int**) calloc (filas, sizeof(int*)); for( i=0; i<filas; i++) var[i]=(int*) calloc (columnas, sizeof(int)); return(var); } int *getArray(int n) { return ((int*) (n, sizeof(int))); } { int i; for(i=0; i<n; i++)} void printTablero(int **matriz, int filas, int columnas) { int i, j; for (i=0; i<columnas; i++) printf("%4d", i); printf("\n "); for (i=0; i< filas; i++) { printf("|"); for (j=0; j<columnas; j++) { switch (matriz[i][j]) { caso 1://*Letra que le toca a cada jugador en este caso la letra X le toca al jugador 1*// printf(" X "); break; caso 2://*Letra que le toca a cada jugador en este caso la letra O le toca al jugador 2*// printf(" O "); break; } void IniciarContador(int *array, int n, int vi) { int i; for (i=0; i<n; i++) array[i]=vi; } int SumaArray (int *array, int n) { int i, suma=0; for (i=0; i<n; i++) suma=suma+array[i]; return(suma); } int CompFilas (int **A, int fila, int columnas, int turno) { int i, i2, tmp, res=0; for (i=0; i< columnas-10; i++) { tmp=0; for (i2=i; i2<i+4; i2++) if (A[fila][i2]==turno) tmp++; if (tmp==4) res=turno; } return (res); } int CompCols (int **A, int filas, int columna, int turno) { int i, i2, tmp, res=0; for (i=filas-1; i>3; i--) { tmp=0; for (i2=i; i2>i-4; i2--) if (A[i2][columna]==turno) tmp++; if (tmp==4) res=turno; } return (res); } int CompDiagPrim(int **A, int filas, int columnas, int turno) { int i, j, n, tmp, res=0; for(i=filas-1; i>2; i--) { for(j=3; j<columnas; j++) { tmp=0; for(n=0; n<4; n++) if(A[i-n][j-n]==turno) tmp++; if (tmp==4) res=turno; } } return(res); } int CompDiagSec(int **A, int filas, int columnas, int turno) { int i, j, n, tmp, res=0; for(i=filas-1; i>2; i--) { for(j=0; j<columnas-3; j++) { tmp=0; for(n=0; n<4; n++) if(A[i-n][j+n]==turno) tmp++; if (tmp==4) res=turno; } } return(res); } void juego(int **A, int *contador, int filas, int columnas, int jug) { int , turno=1, sumacont, ganador=0; sumacont=SumaArray(contador, columnas); while(sumacont != -columnas && ganador == 0) { printf("Turno del jugador %d: \t", turno); scanf("%d", &); if <0 || >= columnas || contador[i] == -1) printf("Dato erróneo, por favor ingresa otro dato .\n"); else { A[contador]=turno; ganador=CompFilas(A,contador,columnas,turno); if (ganador==0) ganador=CompCols(A, filas, turno); if (ganador==0) ganador=CompDiagSec(A, filas, columnas, turno); if (ganador==0) ganador=CompDiagPrim(A, filas, columnas, turno); contador; } printTablero(A, filas, columnas); if (ganador!=0) printf("\n\n¡Gana el jugador %d!\n"); if (turno==jug) turno=1; else turno++; sumacont=SumaArray(contador, columnas); } }
Mod: Los códigos deben ir en etiquetas GeSHi
|
|
« Última modificación: 1 Diciembre 2016, 00:09 am por engel lex »
|
En línea
|
|
|
|
engel lex
|
y que tiene errores a los cules no entiendo porque la mayoria estan en ingles no importa que estén en inglés y son importantes si quieres ayuda, a que dice... bueno, donde está el error y cual es... sin eso es dificil proceder... por otro lado el codigo desde el primer vistazo es un desastre.... void main() //<- maint siempre debe ser int { int getMatriz( int [10] filas, int [10] columnas);//<- las funcinoes no se declaran en main, menos los prototipos int getArray(int [10]); //<- mismo que arriba printTablero (int matriz, int [10] filas, int [10] columnas); //<- todas las funciones deben tener tipo void IniciarContador (int *array, int n, int vi); } //el codigo solo puede tener un main y si empiezas el comentario con // entonces el /* no se toma en cuenta int main(int argc, char* argv) //*El parámetro argv contiene un puntero a cada uno de los argumentos (strings) de la línea de ordenes de la llamada al programa*// //*El parámetro argc contiene el número de argumentos en la línea de ordenes de la llamada al programa*//
y no veo más porque realmente no se que esperar de abajo (en las primeras 10 lineas 4 están mal)... recomiendo antes de irte de cabeza a hacer todo el programa mal en cada paso, hacer un tutorial basico de C y aprender lo esencial
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
jvm1994
Desconectado
Mensajes: 29
|
Veo en el código estructuras mal anidadas. A tal punto de que logré ver algo así. do{ switch: { -- -- -- } default: -- -- }
void printTablero(int **matriz, int filas, int columnas) { int i, j; for (i=0; i<columnas; i++) for (i=0; i< filas; i++) { for (j=0; j<columnas; j++) { switch (matriz[i][j]) { caso 1://*Letra que le toca a cada jugador en este caso la letra X le toca al jugador 1*// break; caso 2://*Letra que le toca a cada jugador en este caso la letra O le toca al jugador 2*// break; }
Y ni hablemos de las tabulaciones, odio responder para hacer una crítica, es muy importante entender que un código se escribe una vez y se puede llegar a leer miles y miles de veces, por lo que si estas interesada en ser buena programadora, sería interesante que aprendas a respetar los standares de estilo que tiene C. Es importante comentar, respetar tabulaciones y anidar correctamente.
|
|
« Última modificación: 7 Diciembre 2016, 01:26 am por jvm1994 »
|
En línea
|
"La posibilidad de crear tu mundo." int main() { eMundo * Own = world_new(); if(Own != NULL) { world_create(Own); } return 0; }
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Sobreescribir línea ya escrita lenguaje C
Programación C/C++
|
Sagrini
|
8
|
10,046
|
30 Diciembre 2011, 14:01 pm
por El_Java
|
|
|
Duda sobre Cuatro en línea
« 1 2 »
Programación C/C++
|
DickGumshoe
|
13
|
6,242
|
19 Enero 2012, 19:12 pm
por satu
|
|
|
lenguaje ensamblador , dividir pantalla en cuatro colores y algo mas
Programación General
|
edwardjoanmedina
|
0
|
4,413
|
4 Junio 2013, 05:37 am
por edwardjoanmedina
|
|
|
Cuatro expulsados de EVE Online por estropear el monumento del juego
Noticias
|
wolfbcn
|
0
|
1,083
|
8 Mayo 2014, 21:21 pm
por wolfbcn
|
|
|
[AYUDA[Error/Problema Cuatro en Línea
Programación C/C++
|
toomi.143
|
2
|
2,123
|
25 Marzo 2017, 07:31 am
por toomi.143
|
|