Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Juego del 100 en lenguaje C

Estas en el tema de Juego del 100 en lenguaje C en el foro de C/C++ en Foros del Web. Hola, soy nuevo en la comunidad, me inicio recientemente en la programacion y me esta gustando en verdad. Directo al grano: en la clase de ...
  #1 (permalink)  
Antiguo 25/07/2014, 19:47
 
Fecha de Ingreso: julio-2014
Mensajes: 7
Antigüedad: 10 años, 3 meses
Puntos: 0
Juego del 100 en lenguaje C

Hola, soy nuevo en la comunidad, me inicio recientemente en la programacion y me esta gustando en verdad. Directo al grano: en la clase de programacion me asignaron unos 10 programas de los cuales tengo ya 9 hechos, pero este programa (El juego del 100) ya no encuentro como hacerlo y desearia que alguien me ayude con el.

Explico a continuacion en que consiste el juego:

El juego del 100 se realiza de la siguiente manera: Juegan dos jugadores: el usuario y la máquina. Cada jugador toma su turno de forma intercalada y selecciona un número entero entre 1 y 10. El valor escogido se suma al valor que seleccionó el otro jugador y se siguen acumulando hasta que uno de los jugadores selecciona un número que haga que la suma sea 100. El jugador que haga que la suma sea 100 es el ganador. Escribir un programa para simular el juego del 100.

En otras palabras, un jugador da un número entre 1 y 10, y la máquina da otro también entre 1 y 10, ambos se suman y da una cantidad. Si dicha cantidad es igual a 100 al momento del turno del jugador, gana el jugador. por el contrario, si dicha cantidad es igual a 100 al momento del turno de la maquina, gana la máquina.

El concepto del juego me queda muy claro, pero soy muy nuevo en lenguaje C y la verdad se me hace dificil escribir este algoritmo, espero ayuda de alguien, por favor, gracias de antemano!
  #2 (permalink)  
Antiguo 25/07/2014, 23:07
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: Juego del 100 en lenguaje C

Lo primero que debes tener claro es que un juego es un bucle. Ese bucle se llama gameloop.
Debes buscar información sobre ese gameloop. Sin complicar quédate en la cabeza que es un bucle while.
Ese bucle controla algunos casos que los llamaremos eventos.
Un evento puede ser por ejemplo que el jugador haya pulsado una tecla con la intención de salir y en ese caso ese bucle debe romperse inmediatamente o despues de algunas acciones como salvar la partida y otras cosas.
Un ejemplo de un gameloop seria:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main (){
  4.     int tecla = 0;
  5.    
  6.     //gameloop
  7.     while( 1 ){
  8.         //Aqui comprobaremos las teclas pulsadas
  9.         printf("pulsa una tecla\n1-Jugar\n2-Salir");
  10.         scanf("%d%*c",&tecla);        
  11.  
  12.         //Aqui la logica del juego
  13.         //Si tecla es cualquier numero menos 0 el bucle va entrar en if y no en else. Y no hace nada if
  14.         if ( tecla != 0 ){
  15.             //Si entramos en if no hacemos nada. Simplemente el juego sigue su curso.
  16.         }else{
  17.             //si tecla es igual a 0 entonces entramos en else y no en if. Aqui rompemos el gameloop.
  18.             printf("adios!");
  19.             break; //rompemos el bucle
  20.         }
  21.  
  22.     }//fin del game loop
  23.  
  24.     getchar();  
  25.     return 0;
  26. }

Eso es la base para tu juego.

Ahora solo crear unas variables y preguntar el numero que el jugador quiere escoger para que el NPC (jugador no humano) en ingles (non-player character) adicione su numero.

¿Como se hace eso?
necesitas 2 variables, una para guardar tu numero y otra para guardar el numero de el.
Eso se hace facil.
En la parte del bucle que dice comprobar las teclas... haces una pregunta.¿que numero elijes? Entonces elijes uno claro...y lo guardas en tu variable. XD
Ahora viene la movida...
Al NPC no le puedes preguntar eso sino que usaremos la función rand() para generar números aleatorios =D. Esos números aleatorios tienen que estar en el rango entro el numero que tu quieres o sea si lo que quieres es de 1 a 10 busca no superarlo.

En lógica de computación seria así mas o menos...

bucle
player: ¿que numero quieres?
player: guardar numero que jugador elejio

NPC: generar un numero aleatorio y guardar en la variable NPC.
NPC: Mostrar un mensaje diciendo el numero elegido por NPC

hacer el calculo... o sea sumar esos numeros y ver si NPC ha ganado. Si no seguimos todo el proceso pero ahora inverso.

NPC: genera un numero
NPC:mostrar mensaje de numero elegido

PLAYER: Pedir numero a jugador y guardarlo en su variable

sumar a la variable de NPC la variable de jugador
verificar si el numero es 100 y si es 100 ha ganado jugador.

Si no hay ganadores el bucle se repite nuevamente.
fin del bucle

a la hora de que haya un vencedor debes hacer un break; para romper el bucle igual que hicimos una para decir que queremos salir.

Eso todo que he dicho es muy básico. No creo que tengas dificultades.

usaras cosas como la función rand, if()else(), break; printf y scanf... solo cosillas básicas.
El juego lo adornas cuanto quieras según sus conocimientos.

Prueba hacerlo y si tienes dudas pega el código aquí y te iremos ayudando.

lo que no entiendo en tu juego es el de sumar 10+10 y eso va dar 100 :S
No lo pillo pero supongo que te refieres de ir sumando numeros de uno a 10 hasta llegar a 100?? O no lo pillo.

Bueno le detenidamente que ese código no es para tanto.
Solo debes aprender que eso todo va sobre un bucle.
No voy a decir todos los juegos por que me pillo los dedos pero un 99% de los juegos están dentro de bucles XDDD
Suerte!
  #3 (permalink)  
Antiguo 25/07/2014, 23:24
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 8 meses
Puntos: 0
Sonrisa Respuesta: Juego del 100 en lenguaje C

Te voy a dar unos pasos mas no te voy a hacer todo el algoritmo.

Código C:
Ver original
  1. #include <stdlib.h>
  2. #include <time.h>
  3.  
  4. int main(){
  5.  
  6.   srand(time(NULL)); //Esto generara numeros aleatorios de acuerdo a la semilla que en este caso sera la hora.
  7.  
  8. int suma,var,turno;
  9.  
  10.    while(suma<=100){
  11.  
  12.      if(turno%2==0){
  13.        var=(1+rand()%10);//esto genera un numero aleatorio de 1 a 10
  14.        suma = suma+var;
  15.      }
  16.  
  17.      if(turno%2!=0){
  18.       scanf("%d",&var);
  19.       suma=suma+var;
  20.      }
  21.  
  22. }
  23.  
  24. }
  #4 (permalink)  
Antiguo 26/07/2014, 02:08
 
Fecha de Ingreso: julio-2014
Mensajes: 7
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Juego del 100 en lenguaje C

Cita:
Iniciado por vangodp Ver Mensaje
Lo primero que debes tener claro es que un juego es un bucle. Ese bucle se llama gameloop.
Debes buscar información sobre ese gameloop. Sin complicar quédate en la cabeza que es un bucle while.
Ese bucle controla algunos casos que los llamaremos eventos.
Un evento puede ser por ejemplo que el jugador haya pulsado una tecla con la intención de salir y en ese caso ese bucle debe romperse inmediatamente o despues de algunas acciones como salvar la partida y otras cosas.
Un ejemplo de un gameloop seria:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main (){
  4.     int tecla = 0;
  5.    
  6.     //gameloop
  7.     while( 1 ){
  8.         //Aqui comprobaremos las teclas pulsadas
  9.         printf("pulsa una tecla\n1-Jugar\n2-Salir");
  10.         scanf("%d%*c",&tecla);        
  11.  
  12.         //Aqui la logica del juego
  13.         //Si tecla es cualquier numero menos 0 el bucle va entrar en if y no en else. Y no hace nada if
  14.         if ( tecla != 0 ){
  15.             //Si entramos en if no hacemos nada. Simplemente el juego sigue su curso.
  16.         }else{
  17.             //si tecla es igual a 0 entonces entramos en else y no en if. Aqui rompemos el gameloop.
  18.             printf("adios!");
  19.             break; //rompemos el bucle
  20.         }
  21.  
  22.     }//fin del game loop
  23.  
  24.     getchar();  
  25.     return 0;
  26. }

Eso es la base para tu juego.

Ahora solo crear unas variables y preguntar el numero que el jugador quiere escoger para que el NPC (jugador no humano) en ingles (non-player character) adicione su numero.

¿Como se hace eso?
necesitas 2 variables, una para guardar tu numero y otra para guardar el numero de el.
Eso se hace facil.
En la parte del bucle que dice comprobar las teclas... haces una pregunta.¿que numero elijes? Entonces elijes uno claro...y lo guardas en tu variable. XD
Ahora viene la movida...
Al NPC no le puedes preguntar eso sino que usaremos la función rand() para generar números aleatorios =D. Esos números aleatorios tienen que estar en el rango entro el numero que tu quieres o sea si lo que quieres es de 1 a 10 busca no superarlo.

En lógica de computación seria así mas o menos...

bucle
player: ¿que numero quieres?
player: guardar numero que jugador elejio

NPC: generar un numero aleatorio y guardar en la variable NPC.
NPC: Mostrar un mensaje diciendo el numero elegido por NPC

hacer el calculo... o sea sumar esos numeros y ver si NPC ha ganado. Si no seguimos todo el proceso pero ahora inverso.

NPC: genera un numero
NPC:mostrar mensaje de numero elegido

PLAYER: Pedir numero a jugador y guardarlo en su variable

sumar a la variable de NPC la variable de jugador
verificar si el numero es 100 y si es 100 ha ganado jugador.

Si no hay ganadores el bucle se repite nuevamente.
fin del bucle

a la hora de que haya un vencedor debes hacer un break; para romper el bucle igual que hicimos una para decir que queremos salir.

Eso todo que he dicho es muy básico. No creo que tengas dificultades.

usaras cosas como la función rand, if()else(), break; printf y scanf... solo cosillas básicas.
El juego lo adornas cuanto quieras según sus conocimientos.

Prueba hacerlo y si tienes dudas pega el código aquí y te iremos ayudando.

lo que no entiendo en tu juego es el de sumar 10+10 y eso va dar 100 :S
No lo pillo pero supongo que te refieres de ir sumando numeros de uno a 10 hasta llegar a 100?? O no lo pillo.

Bueno le detenidamente que ese código no es para tanto.
Solo debes aprender que eso todo va sobre un bucle.
No voy a decir todos los juegos por que me pillo los dedos pero un 99% de los juegos están dentro de bucles XDDD
Suerte!
Si, es como dices, ir sumando valores de 1 a 10 hasta llegar a 100, tendre que sentarme a leer detenidamente todo esto que escribiste, cualquier cosa te aviso amigo, nunca habia programado en C, asi que estas cosas se me hacen un poco complicadas de entender a la primera, pero si no logro construirlo, te vendre a buscar, GRACIAS de antemano.
  #5 (permalink)  
Antiguo 26/07/2014, 03:41
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: Juego del 100 en lenguaje C

Si sabes if-else, while, variables, salida y entrada de datos por teclado, expresiones condicionales, la función rand() para generar números aleatorios estas apto para hacer el programa. Si sabes funciones mejor.
Si no sabes algo de arriba pues dele una repasada a los libros y ahí tienes la oportunidad de practicar.
Mete mano en el código y vaya probando.
Comprenda el ejemplo que te pase y vaya adaptando hasta conseguir, y si te surje dudas aqui estamos.
No desanimes. La unica forma de hacerlo es escribiendo código. ;)
Espero resultados, vamos a lograrlo.
¡¡Animo!!
Estoy aquí esperando.
Si necesitas ayuda me puedes agregar en skype y te explico mejor ;)
Allá me llamo igual. ;)
  #6 (permalink)  
Antiguo 26/07/2014, 08:55
 
Fecha de Ingreso: julio-2014
Mensajes: 7
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Juego del 100 en lenguaje C

Cita:
Iniciado por vangodp Ver Mensaje
Si sabes if-else, while, variables, salida y entrada de datos por teclado, expresiones condicionales, la función rand() para generar números aleatorios estas apto para hacer el programa. Si sabes funciones mejor.
Si no sabes algo de arriba pues dele una repasada a los libros y ahí tienes la oportunidad de practicar.
Mete mano en el código y vaya probando.
Comprenda el ejemplo que te pase y vaya adaptando hasta conseguir, y si te surje dudas aqui estamos.
No desanimes. La unica forma de hacerlo es escribiendo código. ;)
Espero resultados, vamos a lograrlo.
¡¡Animo!!
Estoy aquí esperando.
Si necesitas ayuda me puedes agregar en skype y te explico mejor ;)
Allá me llamo igual. ;)
aqui te muestro lo que tenia hecho hasta el momento, creo que va mas o menos por donde debe ir:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

main(){

bool turnoJugador = true;
bool gamOver = false;
int acumulado = 0;
int tempValor = 0;
srand(9);

while(!gameOver){
if(turnoJugador){
do{
tempValor = printf("Introduzca un numero entre 1 y 10:");
scanf("%i", &tempValor);
}while((tempValor>10 || tempValor<=0))
}else{
if(acumulado>=90){
acumulado = 100;
}else{
tempValor = (rand())+1;
printf("La maquina ha escogido: %i", tempValor);
}
}
acumulado+=tempValor;
if(acumulado>=100){
if(turnoJugador){
printf("Gana jugador!");
}else{
printf("Gana la maquina!");
}
gameOver = true;
}else{
printf("Acumulado:", acumulado);
}
turnoJugador = !turnoJugador;

}

eso lo consegui con ayuda de un amigo, el lo construyo en Javasript y le quedo perfecto, y este codigo que acabo de pegar es lo que he podido traducir a C buscando en Internet porque no se nada de Javascript, pero no me trabaja este algoritmo.
te agregare a Skype desde que pueda.
  #7 (permalink)  
Antiguo 26/07/2014, 22:07
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: Juego del 100 en lenguaje C

Tal como esta se puede dar por echo.
Te lo voy arreglar pero quiero que te detengas en el código y lo estudie bien, que estudies todos los temas que aquí se presentan hasta entenderlos 100%.
No adelanta tu seguir aprendiendo si no sabes el anterior. Eso es como mates, debes meter eso en la cabeza por que vas a necesitar saber bien eso para seguir avanzando sin carencias ;)
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. int main() {
  6.     srand(time(NULL));  //debes poner esta linea antes de llamar a rand para que no se repita los numeros
  7.     bool turnoJugador = true;
  8.     bool gameOver = false;
  9.     int acumulado = 0;
  10.     int tempValor = 0;
  11.     srand ( 9 );
  12.    
  13.     while ( !gameOver ) {
  14.        
  15.         if ( turnoJugador ) {
  16.             do {
  17.                 tempValor = printf ( "Introduzca un numero entre 1 y 10:\n" );
  18.                 scanf ( "%i", &tempValor );
  19.             } while ( ( tempValor > 10 || tempValor <= 0 ) );
  20.            
  21.            
  22.         } else {
  23.             if ( acumulado >= 90 ) {
  24.                 acumulado = 100;
  25.             }
  26.             else {
  27.                 tempValor = (1 + rand() % 10);  //Eso garantiza numeros entre 1 y 10 sino puede pasarse de rosca
  28.                 printf ( "La maquina ha escogido:\n%i\n", tempValor );
  29.             }
  30.         }
  31.        
  32.         acumulado += tempValor;
  33.        
  34.         if ( acumulado >= 100 ) {
  35.             if ( turnoJugador ) {
  36.                 printf ( "Acumulado: %d\n", acumulado ); //Esta linea la puede borrar si quieres    
  37.                 printf ( "Gana jugador!" );
  38.             }
  39.             else {
  40.                 printf ( "Acumulado: %d\n", acumulado ); //Esta linea la puede borrar si quieres
  41.                 printf ( "Gana la maquina!" );
  42.             }
  43.            
  44.             gameOver = true;
  45.         }
  46.         else {
  47.             printf ( "Acumulado: %d\n", acumulado );
  48.         }
  49.        
  50.         turnoJugador = !turnoJugador;
  51.        
  52.     }
  53.     return 0;
  54. }

El código lo he arreglado pocas cosillas, ya era funcional pero le faltaban algunos detalles que olvidaste y es normal eso, pero intenta prestar mas atencion en fallos como puntuacion y otras cosas menores.
Equivocarse es normal y es el pan de cada día. Lo único que puedo recomendar es que escribas mas programas que es cuando pillas la practica.
Insto a que no le dejes el programa en eso. intente mejorarlo como por ejemplo que empiece de forma aleatorio y no siempre primero por jugador sino as veces empieza NPC y despues player ;)
Y todo lo que se te ocurra =D
¿Estas aprendiendo por cuenta o en alguna escuela?
No desanimes man diga lo que digan. Solo así obtienes lo que buscas ;)

Etiquetas: juego, lenguajec
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:17.