Creo que estas mezclando aritmética de punteros con arimética de variables.
El la funcion Juego:
*i=NumIntentos; // i es un puntero a la variable
si haces i--, no estás decrementando la variable,sino la direccion apuntada
por eso aparecen esos valores al imprimir los intentos, son direcciones de memoria ajenas a la variable i.
Se podría usar una variable temporal en la funcion juego, de la siguiente manera:
Juego(.........)
{
int temp;
temp=NumIntentos;
.......
ahora podremos decrementar temp,
temp--;
al salir del bucle podemos asignar el valor de temp a la variable i
*i=temp;
El la funcion Juego:
*i=NumIntentos; // i es un puntero a la variable
si haces i--, no estás decrementando la variable,sino la direccion apuntada
por eso aparecen esos valores al imprimir los intentos, son direcciones de memoria ajenas a la variable i.
Se podría usar una variable temporal en la funcion juego, de la siguiente manera:
Juego(.........)
{
int temp;
temp=NumIntentos;
.......
ahora podremos decrementar temp,
temp--;
al salir del bucle podemos asignar el valor de temp a la variable i
*i=temp;