Título: EXAMEN! AYUDA MASTER MIND COLORES Publicado por: javierdieguez en 2 Abril 2013, 19:30 pm Buenas, llevo ya rato intentando y lo único que sé es sacar el código de este juego pero para que me diga los errores y los aciertos. Esto lo hemos hecho un amigo y yo pero no es lo que especificaba el enunciado:
#include <stdio.h> #include <stdlib.h> #include <time.h> #define CIFRAS 4 int comprobarLetra(char a,char combinacion[]); int main() { time_t t; int i,j,azar,intentos,colocadas,descolocadas,repetida,jugar,ola; char num[6]={'A','B','C','D','E','F'}; char combinacion[CIFRAS]={' ',' ',' ',' '}; // 5 6 4 7 char jugada[CIFRAS]={' ',' ',' ',' '}; char volver_jugar; jugar=intentos=repetida=azar=0; srand((unsigned)time(&t)); for(i=0;i<4;i++) { do { azar=rand()%5; /*metemos la letra en el array*/ /*comprobamos que no se repita, y en caso de repetirse, sobreescribiremos esa letra, por eso no salimos del do...while, para que la "i" siga valiendo lo mismo y estemos sobreescribiendo en la misma posición*/ repetida=comprobarLetra(letra[azar],combinacion); combinacion=letra[azar]; }while (repetida==1); } printf("\nLa combinación aleatoria es: "); for(j=0;j<CIFRAS;j++) printf("%c ",combinacion[j]); printf("\n\nIntroduce una letra por posicion, de la A a la F"); do { for(j=0;j<CIFRAS;j++) { printf("\nLetra %d: ",j+1); scanf("%c",&jugada[j]); fflush(stdin); } intentos++; colocadas=0; descolocadas=0; for (i=0;i<CIFRAS;i++) { for (j=0;j<CIFRAS;j++) { if (combinacion==jugada[j]) if (i==j) colocadas++; else descolocadas++; } } printf("\nTu jugada es: "); for(i=0;i<CIFRAS;i++) printf("%c ",jugada); printf("LETRAS BIEN COLOCADAS: %d] [LETRAS MAL COLOCADAS: %d] >>>>>>>",colocadas,descolocadas); if(colocadas==4) printf("\n\nENHORABUENA! HAS GANADO!(%d intentos)\n",intentos); else { printf("\n\nOTRA PARTIDA<S/N>?"); scanf("%c",&volver_jugar); fflush(stdin); if (volver_jugar=='S') jugar=1; else jugar=0; } }while (colocadas<CIFRAS && jugar==1); system("pause"); return 0; } int comprobarLetra(char a,char combinacion[]){ int i,j,repetida=0; for(i=0;i<4;i++) //Recorremos cada elemento del array (EMPIEZAN POR 0!) { if(combinacion==a) { repetida=1; } } return (repetida); } El enunciado al que recalco es el siguiente y hace mencion a colores cuando se acierta o se falla: 2. Programa en C el juego ADIVINA COMBINACIÓN, este consiste en generar 3 dígitos aleatorios del 0 al 9 y almacenar cada uno de ellos en una cadena. El jugador intentará adivinar los 3 dígitos introduciendo los valores en sus supuestas posiciones, dispondrá de 4 oportunidades para adivinar la combinación, el programa le responderá en cada oportunidad con una pista por pantalla indicando: Verde: Acierta valor y posición Amarillo: Acierta valor pero no en la posición correcta Rojo: No acierta ningún valor. Por ejemplo, si la generación aleatoria es 5-6-8 Jugador introduce valores: 1 2 5 rojo rojo amarillo Jugador introduce valores: 5 2 6 verde rojo amarillo Jugador introduce valores: 5 6 8 verde verde verde Acierta combinación en tres jugadas. Adios. Notas: Se debe usar una función aleatorio para generación de aleatorios (no procedimiento), los valores del usuario se leen en el procedimiento leer_combinación, se compararán con la cadena que contiene los valores aleatorios en la función compara (esta funcion muestra las pistas, gestiona los aciertos para el fin de programa) int aleatorio(); (0.5p) void leer_combinacion(int *v1,int *v2,int *v3);(0.5p) int compara (int v1,int v2,int v3, char cadena[]);(1.5p) main();(0.5p) POR FAVOR, tenemos mi clase este examen mañana y no sabes como sacarlo, seguro que alguno de vosotros lo habréis hecho, muchas gracias! Título: Re: EXAMEN! AYUDA MASTER MIND COLORES Publicado por: Almapa en 2 Abril 2013, 21:36 pm Un par de cosas que he cambiado para poder hacerlo funcionar:
- La variable "letra", supongo que es lo que se ha definido previamente como num[6] -Todos los bucles "for" en los que metes la variable "combinacion" debes poner "combinacion" pues de lo contrario no estarás recorriendo el array elemento a elemento. - La línea "combinacion=letra[azar]; " durante la definición de la combinación aleatoria correcta, debe estar fuera del "while" pues si no se repite la letra debe asignarla también en la posición correspondiente. Creo que eso es todo, a mi me funciona bien habiendo hecho esos cambios. Un saludo. Título: Re: EXAMEN! AYUDA MASTER MIND COLORES Publicado por: javierdieguez en 3 Abril 2013, 09:47 am podéis colgarme el código?
Título: Re: EXAMEN! AYUDA MASTER MIND COLORES Publicado por: Almapa en 3 Abril 2013, 14:42 pm Mira a ver que te parece este código, he modificado el tuyo tal cual lo pide en el enunciado, con las funciones que pide y los parámetros que utiliza cada función.
Código
|