elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda] Simple juego.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Simple juego.  (Leído 4,970 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
[Ayuda] Simple juego.
« en: 22 Julio 2013, 20:09 pm »

Bueno es que estaba aburrido y me puse a programar un juego muy sencillo que trata sobre meter un numero entre el 1 y el 15 y tú compañero tiene que adivinarlo. Pero lo que quiero hacer es que no se puedan ingresar letras solo números acá esta el código:

Código
  1. #include <iomanip>
  2. #include <cstdlib>
  3. #include <windows.h>
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. bool Ingreso_Numero(int* pNumero);
  9. bool Adivina_Numero(int* pNumero);
  10.  
  11. int main()
  12. {
  13.   int numero;
  14.  
  15.   if(Ingreso_Numero(&numero))
  16.    {
  17.        system("cls");
  18.        system("color 2");
  19.        cout << "________________________________________________________________________________" << endl;
  20.        cout << setw(60) << "*** Felicidades has ganado el juego! ***\n" << endl;
  21.        cout << setw(50) << "|| El numero correcto es: " << numero << " ||\n" << endl;
  22.        cout << setw(53) << "*** Gracias Por Jugar! ***" << endl;
  23.        cout << "________________________________________________________________________________" << endl;
  24.    }
  25.  
  26.    else
  27.    {
  28.        cout << endl;
  29.        system("color 4");
  30.        cout << "----------------------------------------------------------" << endl;
  31.        cout << "Has perdido! \nEl numero correcto era: " << numero << endl;
  32.        cout << "Trata nuevamente en la proxima..." << endl;
  33.        cout << "-----------------------------------------------------------" << endl;
  34.    }
  35.  
  36.    system("pause>nul");
  37.  
  38.    return 0;
  39. }
  40.  
  41. bool Ingreso_Numero(int* pNumero)
  42. {
  43.    char Decision;
  44.  
  45.    Introduce_Numero:
  46.  
  47.    cout << "Introduce el numero para que adivine tu rival (1-15): ";
  48.    cin >> *pNumero;
  49.  
  50.    Repeticion2:
  51.  
  52.    if(*pNumero > 15)
  53.    {
  54.        cout << endl;
  55.  
  56.        cout << "El numero ingresado es demasiado alto. " << endl;
  57.  
  58.        Introduce_Numero_Alto:
  59.  
  60.        cout << endl;
  61.  
  62.        cout << "Introduce el numero para que adivine tu rival (1-15): ";
  63.        cin >> *pNumero;
  64.  
  65.        if(*pNumero > 15)
  66.        {
  67.            cout << endl;
  68.            cout << "El numero ingresado es demasiado alto. " << endl;
  69.            goto Introduce_Numero_Alto;
  70.        }
  71.    }
  72.  
  73.    if(*pNumero < 1)
  74.    {
  75.        cout << endl;
  76.        cout << "El numero ingresado es demasiado bajo." << endl;
  77.  
  78.        Introduce_Numero_Bajo:
  79.  
  80.        cout << endl;
  81.  
  82.        cout << "Introduce el numero para que adivine tu rival (1-15): ";
  83.        cin >> *pNumero;
  84.  
  85.        if(*pNumero < 1)
  86.        {
  87.            cout << endl;
  88.            cout << "El numero ingresado es demasiado bajo. " << endl;
  89.            goto Introduce_Numero_Bajo;
  90.        }
  91.  
  92.        if(*pNumero > 15)
  93.        {
  94.            goto Repeticion2;
  95.        }
  96.    }
  97.  
  98.    if(*pNumero >= 1 && *pNumero <= 15)
  99.    {
  100.        Decision_Error:
  101.  
  102.        cout << endl;
  103.  
  104.        cout << "Estas seguro que deseas que tu rival adivine este numero S/N: ";
  105.        cin >> Decision;
  106.  
  107.        if(Decision == 'N' || Decision == 'n')
  108.        {
  109.            cout << endl;
  110.            goto Introduce_Numero;
  111.        }
  112.  
  113.        else if((Decision != 'S' && Decision != 's') && (Decision != 'N' && Decision != 'n'))
  114.        {
  115.            cout << endl;
  116.            cout << "Has introducido una decision erronea, intentalo nuevamente." << endl;
  117.            cout << endl;
  118.            goto Decision_Error;
  119.        }
  120.  
  121.        else if(Decision == 'S' || Decision == 's')
  122.        {
  123.            cout << endl;
  124.            system("cls");
  125.  
  126.            for(int x = 5 ; x > 0 ; x--)
  127.            {
  128.                cout << "El juego comenzara en: " << x << endl;
  129.                Sleep(1000);
  130.                system("cls");
  131.            }
  132.            return Adivina_Numero(pNumero);
  133.        }
  134.    }
  135. }
  136.  
  137. bool Adivina_Numero(int* pNumero)
  138. {
  139.    int Contador_Vidas;
  140.    int COMP_Numero;
  141.  
  142.    cout << "Tienes 5 intentos para adivinar el numero." << endl << endl;
  143.  
  144.    for(Contador_Vidas = 5 ; Contador_Vidas > 0 ; Contador_Vidas--)
  145.    {
  146.        cout << endl;
  147.  
  148.        repeticion:
  149.  
  150.        if(Contador_Vidas == 1)
  151.        {
  152.            cout << endl;
  153.  
  154.            cout << "Te queda: " << Contador_Vidas << " vida." << endl;
  155.            cout << "Ingresa un numero: "; cin >> COMP_Numero;
  156.  
  157.            if(COMP_Numero <= 0 || COMP_Numero > 15)
  158.            {
  159.                if(COMP_Numero <= 0)
  160.                {
  161.                    cout << endl;
  162.  
  163.                    cout << "El numero ingresado es demasiado bajo."<< endl;
  164.  
  165.                    goto repeticion;
  166.                }
  167.  
  168.                else if(COMP_Numero > 15)
  169.                {
  170.                    cout << endl;
  171.  
  172.                    cout << "El numero ingresado es demasiado alto.";
  173.  
  174.                    goto repeticion;
  175.                }
  176.            }
  177.        }
  178.  
  179.        else
  180.        {
  181.            cout << endl;
  182.  
  183.            cout << "Te quedan: " << Contador_Vidas << " vidas." << endl;
  184.            cout << "Ingresa un numero: "; cin >> COMP_Numero;
  185.  
  186.            if(COMP_Numero <= 0 || COMP_Numero > 15)
  187.            {
  188.                if(COMP_Numero <= 0)
  189.                {
  190.                    cout << endl;
  191.                    cout << "El numero ingresado es demasiado bajo.";
  192.                    cout << endl;
  193.  
  194.                    goto repeticion;
  195.                }
  196.  
  197.                else if(COMP_Numero > 15)
  198.                {
  199.                    cout << endl;
  200.                    cout << "El numero ingresado es demasiado alto.";
  201.                    cout << endl;
  202.  
  203.                    goto repeticion;
  204.                }
  205.            }
  206.        }
  207.  
  208.        if(COMP_Numero == *pNumero)
  209.        {
  210.            return true;
  211.        }
  212.  
  213.        else
  214.        {
  215.            continue;
  216.        }
  217.    }
  218.  
  219.    return false;
  220. }
  221.  


« Última modificación: 22 Julio 2013, 20:12 pm por Zodiak98 » En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [Ayuda] Simple juego.
« Respuesta #1 en: 22 Julio 2013, 23:57 pm »

bastaría con un
Código:
		if (!pNumero)
{
cout << "EROR";
exit(0);
}
en el caso de que pNumero sea int.

Usas demasiados gotos que no estan recomendados y duplicas ifs cuando no es necesario.
Te dejo aqui tu código que retoque, seguramente no es perfecto pero en vez de usar gotos uso whiles y resumo algunos ifs.

Código
  1. #include <iomanip>
  2. #include <cstdlib>
  3. #include <windows.h>
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. int Ingreso_Numero();
  9. bool Adivina_Numero(int pNumero);
  10.  
  11. int main()
  12. {
  13. int numero = Ingreso_Numero();
  14. if( Adivina_Numero(numero)==true)
  15.  {
  16.      system("cls");
  17.      system("color 2");
  18.      cout << "________________________________________________________________________________" << endl;
  19.      cout << setw(60) << "*** Felicidades has ganado el juego! ***\n" << endl;
  20.      cout << setw(50) << "|| El numero correcto es: " << numero << " ||\n" << endl;
  21.      cout << setw(53) << "*** Gracias Por Jugar! ***" << endl;
  22.      cout << "________________________________________________________________________________" << endl;
  23.  }
  24.  else
  25.  {
  26.      cout << endl;
  27.      system("color 4");
  28.      cout << "----------------------------------------------------------" << endl;
  29.      cout << "Has perdido! \nEl numero correcto era: " << numero << endl;
  30.      cout << "Trata nuevamente en la proxima..." << endl;
  31.      cout << "-----------------------------------------------------------" << endl;
  32.  }
  33.  system("pause>nul");
  34.  return 0;
  35. }
  36.  
  37. int Ingreso_Numero()
  38. {
  39. int pNumero;
  40. char Decision;
  41.  
  42. while (Decision == 'N' || Decision == 'n'|| pNumero > 15 || pNumero < 1)
  43. {
  44.  cout << "Introduce el numero para que adivine tu rival (1-15): ";
  45.  cin >> pNumero;
  46.  
  47. if (!pNumero)
  48. {
  49. cout << "EROR";
  50. exit(0);
  51. }  
  52.  
  53.  if (pNumero > 15)
  54.  {
  55.      cout << endl;
  56.      cout << "El numero ingresado es demasiado alto. " << endl;
  57.    } else  if (pNumero < 1)
  58.  {
  59.      cout << endl;
  60.      cout << "El numero ingresado es demasiado bajo." << endl;
  61.   } else {
  62. cout << endl;
  63. cout << "Estas seguro que deseas que tu rival adivine este numero S/N: ";
  64. cin >> Decision;
  65.  
  66. while (Decision != 'N' && Decision != 'n' && Decision != 'S' && Decision != 's')
  67.  {
  68. cout << endl;
  69.        cout << "Has introducido una decision erronea, intentalo nuevamente." << endl;
  70.        cout << endl;
  71. cin >> Decision;
  72. }
  73. system("cls");
  74. }
  75. }
  76.  
  77.          for(int x = 5 ; x > 0 ; x--)
  78.          {
  79.              cout << "El juego comenzara en: " << x << endl;
  80.              Sleep(1000);
  81.  system("cls");
  82.          }
  83.          return pNumero;
  84. }
  85.  
  86. bool Adivina_Numero(int pNumero)
  87. {
  88.  int Contador_Vidas;
  89.  int COMP_Numero;
  90.  
  91.  cout << "Tienes 5 intentos para adivinar el numero." << endl << endl;
  92.  
  93.  for(Contador_Vidas = 5 ; Contador_Vidas > 0 ; Contador_Vidas--)
  94.  {
  95.  cout << endl;
  96.          cout << endl;
  97.  if (Contador_Vidas == 1) {
  98.          cout << "Te queda: " << Contador_Vidas << " vida." << endl;
  99.  } else {
  100.   cout << "Te quedan: " << Contador_Vidas << " vida." << endl;
  101.   }
  102.          cout << "Ingresa un numero: "; cin >> COMP_Numero;
  103.  
  104.              if(COMP_Numero <= 0)
  105.              {
  106.                  cout << endl << "El numero ingresado es demasiado bajo."<< endl;
  107.  Contador_Vidas++;
  108.              } else if(COMP_Numero > 15)  {
  109.                  cout  << endl<< "El numero ingresado es demasiado alto.";
  110.  Contador_Vidas++;
  111.               } else if(COMP_Numero == pNumero) {
  112. return true;
  113. }
  114.  }
  115.  return false;
  116. }
  117.  
  118.  


« Última modificación: 23 Julio 2013, 10:29 am por Stakewinner00 » En línea

z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: [Ayuda] Simple juego.
« Respuesta #2 en: 23 Julio 2013, 01:14 am »

Yo aviso que el resultado de numero cuando se acaba el juego no es certero así que.. :silbar:
En línea


⏩ Interesados hablad por Discord.
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [Ayuda] Simple juego.
« Respuesta #3 en: 23 Julio 2013, 10:04 am »

No hay nada peor que ayudar y equivocarte tu jaja.

De todos modos si que el código se puede reducir notablemente. En vez de usar esto

Código:
if(Contador_Vidas == 1)
       {
 
           if(COMP_Numero <= 0 || COMP_Numero > 15)
           {
               if(COMP_Numero <= 0)
               {
               }
 
               else if(COMP_Numero > 15)
               {
               }
           }
       }
 
       else
       {
           if(COMP_Numero <= 0 || COMP_Numero > 15)
           {
               if(COMP_Numero <= 0)
               {
               }
 
               else if(COMP_Numero > 15)
               {
               }
           }
       }
 
       if(COMP_Numero == *pNumero)
       {
       }
 
       else
       {
       }
   }

puedes hacer lo siguiente y en medio pus pones lo que haga falta

Código:
 
           if(COMP_Numero <= 0 || COMP_Numero > 15)
           {
if(Contador_Vidas == 1)
{}
               if(COMP_Numero <= 0)
               {
               }
 
               else if(COMP_Numero > 15)
               {
               }
           }
       } else if
       {
       } else if(COMP_Numero == *pNumero)
       {
       }
 
       else
       {
       }
   }

SALUDOS
« Última modificación: 23 Julio 2013, 10:08 am por Stakewinner00 » En línea

z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: [Ayuda] Simple juego.
« Respuesta #4 en: 23 Julio 2013, 12:08 pm »

No se... Yo cuando he acabado el juego el juego me ha dicho que el numero que yo había ingresado era 1198 no se cuanto mil más. xD
En línea


⏩ Interesados hablad por Discord.
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [Ayuda] Simple juego.
« Respuesta #5 en: 23 Julio 2013, 12:39 pm »

Eso era antes. Bueno la duda del usuario esta respondida, haber si le sirve o no lo del
Código:
		if (!pNumero)
{
cout << "EROR";
exit(0);
}
el probelma de esto es que en punteros no funciona. Vaya forma de complicarse la vida tiene Zodiak98
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Ayuda] Simple juego.
« Respuesta #6 en: 23 Julio 2013, 18:26 pm »

Bueno es que estaba aburrido y me puse a programar un juego muy sencillo que trata sobre meter un numero entre el 1 y el 15 y tú compañero tiene que adivinarlo. Pero lo que quiero hacer es que no se puedan ingresar letras solo números
Con solo C++ estándar hay que limitarse a la validación una vez se genere el texto.

Debes leer una linea verificando que la lectura del entero sea exitosa y el siguiente carácter sea el avance de linea. Por ejemplo:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <limits>
  7. using std::numeric_limits;
  8.  
  9. int main()
  10. {
  11.   int num;
  12.   bool ok = false;
  13.   bool error_critico = false;
  14.  
  15.   do {
  16.      cout << "Teclea un numero: ";
  17.      if (cin >> num && cin.get() == '\n')
  18.         ok = true;
  19.      else if (cin.eof() || cin.bad())
  20.         error_critico = true;
  21.      else {
  22.         cout << "Entrada no valida" << endl;
  23.         cin.clear();
  24.         cin.ignore(numeric_limits<int>::max(), '\n');
  25.      }
  26.   }while (!ok && !error_critico);
  27.  
  28.   cout << endl;
  29.  
  30.   if (ok)
  31.      cout << "El numero es " << num << endl;
  32.   else
  33.      cout << "Error critico en la lectura" << endl;
  34.  
  35.   return 0;
  36. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: [Ayuda] Simple juego.
« Respuesta #7 en: 24 Julio 2013, 03:35 am »

Ya logre resolver el problema gracias por su ayuda de todos modos. :) Ahora que me doy cuenta en vez de usar tantos if y goto hubiera usado un while jaja perdonen esa estúpides estaba medio dormido. >_< Y sobre los punteros pues en la segunda función no lo use para nada hice un copia y pega de la primera función y solo cambie el nombre, pero si lo necesitaba en la primera. Como dije estaba medio  dormido. Hehehe xDD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Simple juego « 1 2 »
Programación Visual Basic
vivachapas 12 6,935 Último mensaje 10 Noviembre 2008, 02:00 am
por vivachapas
ayuda muy simple =)
PHP
DarkFire 6 4,028 Último mensaje 11 Abril 2009, 10:46 am
por decrypt
Un simple parche dispara el rendimiento de un juego en AMD Ryzen
Noticias
wolfbcn 0 1,909 Último mensaje 30 Marzo 2017, 21:44 pm
por wolfbcn
Ayuda Simple DnsCrypt
Redes
lafacil 0 2,447 Último mensaje 10 Febrero 2022, 12:13 pm
por lafacil
Idear un juego muy simple (es complicado).
Juegos y Consolas
Tachikomaia 3 14,134 Último mensaje 6 Enero 2025, 20:36 pm
por blckkey
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines