[ Foro de C ]

DUDA EN JUEGO EN LENGUAJE C

15-Apr-2022 12:45
Invitado (Juan Francisco)
1 Respuestas

Acabo de empezar en esto de la programación, lo que tengo que hacer es un juego, donde el ordenador saca un número  aleatorio y el "jugador" tiene que introducir otro. La diferencia entre esos dos números tiene que ser menor e igual que 2 para que se comparen los valores, gana el valor más grande (en un juego absurdo). La partida la gana el que gane las 5 rondas, la duda es que no sé como hacer el recuento de puntos para determinar el ganador, y por otro lado el número aleatorio que sale siempre es el mismo,  además tampoco sé muy bien cómo hacer para que solo se ejecute cuando la diferencia de los valores sean menor e igual que dos.
No sé cómo avanzar. Ayuuda, muchas gracias


Lo que llevo hecho y seguramente mal es lo siguiente:



    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    
    int numsascpu(), numsasplayer, opcion, contador1=0, contador2=0;
    
    int numsascpu (int minimo, int maximo){
       return minimo + rand() / (RAND_MAX / (maximo - minimo + 1) + 1);
    }
    
    void main(){
       
    do {  printf("\n Escoge una opcion (1,o 2):");
        printf("\n 1ª: Comenzar el juego, ¡Intenta vencer a la máaquina! ");
        printf("\n 2º: Salir del juego ");
        scanf("%d", &opcion);
       
     switch(opcion)  
    {
     case 1:  
     do {   printf ("Selecciona un número del uno al diez: ");
        scanf ("%d", &numsasplayer);
        srand(getpid());
        printf("Tu rival ha obtenido %d\n", numsascpu(1, 10));
       
    
        if(numsasplayer-numsascpu(1, 10)==(-2,2)){
        printf("¡Tú ganas esta ronda!");}
        else{ printf("La diferencia es demasiado pequeña, vuelve a intentarlo \n");}
        } while(contador1 <3 || contador2 <3) ;{
        if(contador1=3){
            printf("Has ganado el juego");
        }
        else{
            printf("Tu rival gana el juego");
        }
        }
        break;
    
    case 2:
                  printf("El juego ha terminado");
                  break;
    }
    }  while (opcion!=2);
    }


 


18-Apr-2022 13:46
Nacho Cabanes (+82)

Para empezar, para que el número al azar no sea siempre el mismo, deberías tomar la semilla desde el reloj, no desde el identificador del proceso, como puedes ver aquí:

https://www.aprendeaprogramar.com/mod/resource/view.php?id=643

Confírmame cuando eso te funcione y seguimos mejorando.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)