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!
|