He reconstruido un poco el código. No he llegado a entender tus intenciones en la función Gen_Num_Aleatorio_y_Comp, parece que querías que el ordenador mismo fuera adivinando los números; pero no se ve muy claro.
Sobran muchos argumentos a las funciones, las interconexiones entre ellas son muy difusas. Además debes recordar que en C los argumentos se pasan por valor, eso es, las funciones no modifican el valor de las variables que se les pasan, a no ser que explícitamente las pases por referencia o sean arrays.
Dicho esto aquí te dejo un código un poco reconstruido que deberás completar. Para que te sea fácil retomar el hilo: el programa, a la hora de iniciar el juego, en un array de 4 elementos de tipo entero introduce 4 números aleatorios de 0 a 9. El jugador tiene tantos intentos como marca la variable dificultad para adivinar. La opción 2 del menú inicia el juego con siempre 100 intentos.
Tu deberás incluir el código en la función JugarPart en donde lo tienes marcado con un comentario.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//FUNCIONES CREADAS:
#define ARRAY_COUNT(x) sizeof((x))/sizeof((x)[0])
void impresionCARATULA();
void JugarPart(int dificultad);
void Gene_Num_Aleatorios(int array_numeros_aleatorios[], size_t size);
int NivelDificultad();
int MENU();
int main(){
// int num_jugador;
int opcion;
int dificultad = 100;
impresionCARATULA();
do {
opcion = MENU();
switch(opcion) {
case 1:
JugarPart(dificultad);
break;
case 2:
JugarPart(100);
break;
case 3:
dificultad = NivelDificultad();
break;
case 4:
printf("Has selecionado Listar historial de partidas\n"); break;
case 0:
printf("Has seleccionado Salir\n"); opcion = 0;
break;
default:
printf("Has seleccionado una opcion no valida\n"); break;
}
} while(opcion);
return 0;
}
//CODIGO DE LAS FUNCIONES CREADAS:
void impresionCARATULA() { //imprimir la caratula intentar que sea lo mas corto posible.
int i;
int linea = 0;
do {
linea++;
if(linea != 4) {
for(i = 0; i < 80; i++) {// LINEA DE ASTERISCOS
}
}
else {
for(i = 0; i < 32; i++) {
}
for(i = 0; i < 35; i++) {
}
}
} while(linea < 7);
}
int MENU() { //imprimir el menú
int opcion;
puts("1) Jugar partida"); puts("2) Jugar partida de prueba"); puts("3) Establecer nivel de dificultad"); puts("4) Listar historial de partidas");
return opcion;
}
int NivelDificultad() {
int c1;
int dificultad;
do {
printf("Seleccione un numero de 1 a 100 para establecer el numero de intentos:\t"); scanf("%i", &dificultad
); if(1 <= dificultad && dificultad <= 100) {
printf("Has establecido numero de intentos máximo como: %i\n\n", dificultad
); c1 = 0;
}
else {
puts("Has selecionado un numero no valido"); c1 = 1;
}
} while(c1);
return dificultad;
}
void Gen_Num_Aleatorio(int array_numeros_aleatorios[], size_t size) {
int i;
for(i = 0; i < size; i++) {
array_numeros_aleatorios
[i
] = rand() % 10; //del 0 al 9 }
}
void JugarPart(int dificultad) {
int numeros[4];
int i;
/* Declara aquí las variables que vayas a usar para la lógica
* del juego.
*/
printf("Has seleccionado Jugar Partida con dificultad %i\n", dificultad
); Gen_Num_Aleatorio(numeros, ARRAY_COUNT(numeros));
for(i = 0; i < dificultad; ++i) {
/* Inserta aquí tu lógica para que
* el jugador adivine los números
*/
}
}