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!