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

[SOLUCIONADO] ¿cómo hago un menu para c++?

Estas en el tema de ¿cómo hago un menu para c++? en el foro de C/C++ en Foros del Web. Hola gente, recurro al foro porque ya no sé qué más probar para ponerle un menú a este programa y tengo que entregarlo el Martes. ...
  #1 (permalink)  
Antiguo 10/01/2014, 12:51
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
¿cómo hago un menu para c++?

Hola gente, recurro al foro porque ya no sé qué más probar para ponerle un menú a este programa y tengo que entregarlo el Martes. GRACIAS DESDE YA POR LA AYUDA

Sé que tengo que usar una estructura while y switch pero cada vez que lo programo si no me da un error me da otro.

Alguien puede decirme qué tengo que poner y cómo para que me funcione un menu que cuando empiece el programa pregunte si quiero jugar o salir y cuando termine de jugar me diga si quiero jugar otra vez y que genere otra frase nueva para el juego?

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. const int numero_intentos=7;
  9.  
  10. int rellenado (char, string, string&);
  11.  
  12. int main ()
  13. {
  14. string name;
  15. int puntos=0;
  16. char letra;
  17. int menu;
  18. int num_fallos=0;
  19. string palabra_secreta;
  20. string palabras[] =
  21. {
  22. "Perro",
  23. "sandia",
  24. "caracol",
  25. "sorpresa",
  26. "gato",
  27. "queso",
  28. "sombrero",
  29. "neptuno",
  30. "monje",
  31. "ladron"
  32. };
  33.  
  34.  
  35. // seleccionamos una palabra al azar dentro de 'palabras' a la que llamamos 'palabra_secreta'
  36. srand(time(NULL));
  37. int n=rand()% 10;
  38. palabra_secreta=palabras[n];
  39.  
  40. // convertimos la palabra a asteriscos
  41. string oculta(palabra_secreta.length(),'*');
  42.  
  43. // menu de bienvenida y reglas
  44. cout << "\n\nBienvenido al ahorcado";
  45. cout << "\n\nREGLAS:";
  46. cout << "\n\nCada letra esta representada por un asterisco";
  47. cout << "\n\nPuedes ingresar una o varias letras a la vez pero cada una cuenta como un intento";
  48. cout << "\n\nAcertar suma dos puntos, errar resta uno. Siempre que resuelvas antes de que se te terminen los intentos sumas 10 puntos";
  49. cout << "\n\nTienes " << numero_intentos << " intentos, acertar no resta intentos";
  50.  
  51. cout << "\n----------------------------------------------";
  52.  
  53.  
  54.  
  55. // estructura while que nos hace ingresar una letra hasta que se nos terminen los intentos
  56. while (num_fallos < numero_intentos)
  57. {
  58. cout << "\n\n" << oculta;
  59. cout << "\n\nIngresa una letra: ";
  60. cin >> letra;
  61. // utilizamos la función de rellenado, si la letra no está dentro de la palabra se imprime el mensaje y nos resta un punto pero si acertamos, nos suma 2 y nos imprime los puntos y el mensaje de acierto
  62. if (rellenado(letra, palabra_secreta, oculta)==0)
  63. {
  64. cout << endl << "La letra no se encuentra en la palabra" << endl;
  65. num_fallos++;
  66. puntos -= 1;
  67. }
  68. else
  69. {
  70. cout << endl << "Has acertado una letra" << endl;
  71. puntos += 2;
  72. cout << endl << "Puntos: " << puntos << endl;
  73. }
  74. // imprime el numero de intentos que nos quedan
  75. cout << "You have " << numero_intentos - num_fallos;
  76. cout << " guesses left." << endl;
  77. // comprobamos si el usuario ya ha adivinado la palabra secreta al completo
  78. if (palabra_secreta==oculta)
  79. {
  80. cout << palabra_secreta << endl;
  81. cout << "Lo conseguiste! la palabra secreta era " << palabra_secreta << endl;
  82. puntos +=10;
  83. cout << "Tu puntuacion es " << puntos << endl;
  84. break;
  85. }
  86.  
  87. }
  88. if(num_fallos == numero_intentos)
  89. {
  90. cout << "\nPerdiste, se te acabaron los intentos" << endl;
  91. cout << "La palabra era: " << palabra_secreta << endl;
  92. }
  93. cin.ignore();
  94. cin.get();
  95. return 0;
  96. }
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103. /* tomamos la la letra, la palabra secreta y vamos rellenando secreta_rellenar, despues devolvemos los aciertos. Si la letra
  104. ya la probamos en un intento anterior entonces se devuelve 0 */
  105.  
  106. int rellenado (char letra_intento, string palabrasecreta, string &secreta_rellenar)
  107. {
  108. int i;
  109. int aciertos=0;
  110. int numletras=palabrasecreta.length();
  111. for (i = 0; i< numletras; i++)
  112. {
  113. // si la letra ya la probamos en un intento anterior
  114. if (letra_intento == secreta_rellenar[i])
  115. return 0;
  116.  
  117. // si la letra esta en la palabra que tenemos que adivinar
  118. if (letra_intento == palabrasecreta[i])
  119. {
  120. secreta_rellenar[i] = letra_intento;
  121. aciertos++;
  122. }
  123. }
  124. return aciertos;
  125. }
  #2 (permalink)  
Antiguo 10/01/2014, 13:46
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: ¿cómo hago un menu para c++?

Código C++:
Ver original
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. int main (){
  7.    
  8.     cout<< "quieres juagar?XD" << endl;
  9.    
  10.     cout << "1 - si" << endl << "2 - no" << endl;
  11.      
  12.     bool play;
  13.     int continuar;
  14.    
  15.     cin >> play;
  16.    
  17.    
  18.     //Esto se llama game loop
  19.     while (play){
  20.        
  21.         cout << "juego pin pa pun pin pa pun!lol XD" << endl;
  22.        
  23.         cout << "desea seguir jugando?" << endl;
  24.         cout << "1 - si" << endl << "2 - no" << endl;      
  25.         cin >> continuar;
  26.         if ( continuar == 2){
  27.             play = false;
  28.         }      
  29.         if (play == false){
  30.             break;
  31.         }
  32.  
  33.     }
  34.    
  35.     cout << "adios!^^";
  36.    
  37.  
  38.     system("pause>null");
  39.     return 0;
  40. }

Para un menú en condiciones creo que hay muchas formas, esta swtch, también se puede hacer con ifs, o con bucles, no se hay un millón de maneras de hacer un menú :D
  #3 (permalink)  
Antiguo 10/01/2014, 13:53
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: ¿cómo hago un menu para c++?

Aquí hay un súper menú: XD
http://foro.elhacker.net/programacio...t276719.0.html
  #4 (permalink)  
Antiguo 10/01/2014, 13:59
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: ¿cómo hago un menu para c++?

Cita:
Iniciado por vangodp Ver Mensaje
Código C++:
Ver original
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. int main (){
  7.    
  8.     cout<< "quieres juagar?XD" << endl;
  9.    
  10.     cout << "1 - si" << endl << "2 - no" << endl;
  11.      
  12.     bool play;
  13.     int continuar;
  14.    
  15.     cin >> play;
  16.    
  17.    
  18.     //Esto se llama game loop
  19.     while (play){
  20.        
  21.         cout << "juego pin pa pun pin pa pun!lol XD" << endl;
  22.        
  23.         cout << "desea seguir jugando?" << endl;
  24.         cout << "1 - si" << endl << "2 - no" << endl;      
  25.         cin >> continuar;
  26.         if ( continuar == 2){
  27.             play = false;
  28.         }      
  29.         if (play == false){
  30.             break;
  31.         }
  32.  
  33.     }
  34.    
  35.     cout << "adios!^^";
  36.    
  37.  
  38.     system("pause>null");
  39.     return 0;
  40. }

Para un menú en condiciones creo que hay muchas formas, esta swtch, también se puede hacer con ifs, o con bucles, no se hay un millón de maneras de hacer un menú :D
me viene genial lo que me has escrito, pero cómo hago para enlazarlo con mi código? Ese es el problema que tengo

Es decir, tengo mi función main donde declaro las palabras que voy a usar etc pero lo demás no lo tengo ahí.
Soy algo desastrozo programando, cómo lo enlazo?
  #5 (permalink)  
Antiguo 10/01/2014, 14:01
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: ¿cómo hago un menu para c++?

a ver dame un momento XD
  #6 (permalink)  
Antiguo 10/01/2014, 15:09
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: ¿cómo hago un menu para c++?

Código C++:
Ver original
  1. #include <iostream>
  2.     #include <cstdlib>
  3.     #include <ctime>
  4.     #include <string>
  5.      
  6.     using namespace std;
  7.      
  8.     const int numero_intentos=7;
  9.      
  10.     int rellenado (char, string, string&);
  11.    
  12.  int azar(){
  13.     srand(time(NULL));
  14.     int n = (0 + rand() % 10);
  15.     return n;
  16.  }    
  17.      
  18.     int main (){    
  19.         int continuar;
  20.         bool play;
  21.         string name;
  22.         int puntos=0;
  23.         char letra;
  24.         int menu;
  25.         int num_fallos=0;
  26.         string palabra_secreta;
  27.         string palabras[] ={    
  28.            "Perro",
  29.            "sandia",
  30.            "caracol",
  31.            "sorpresa",
  32.            "gato",
  33.            "queso",
  34.            "sombrero",
  35.            "neptuno",
  36.            "monje",
  37.            "ladron"
  38.         };
  39.             // menu de bienvenida y reglas
  40.             cout << "\n\nBienvenido al ahorcado";
  41.             cout << "\n\nREGLAS:";
  42.             cout << "\n\nCada letra esta representada por un asterisco";
  43.             cout << "\n\nPuedes ingresar una o varias letras a la vez pero cada una cuenta como un intento";
  44.             cout << "\n\nAcertar suma dos puntos, errar resta uno. Siempre que resuelvas antes de que se te terminen los intentos sumas 10 puntos";
  45.             cout << "\n\nTienes " << numero_intentos << " intentos, acertar no resta intentos";
  46.              
  47.             cout << "\n----------------------------------------------";  
  48.                    
  49.         //GAMELOOP
  50.         while( play ){
  51.             // seleccionamos una palabra al azar dentro de 'palabras' a la que llamamos 'palabra_secreta'
  52.            
  53.             string palabras[] ={    
  54.                 "Perro",
  55.                 "sandia",
  56.                 "caracol",
  57.                 "sorpresa",
  58.                 "gato",
  59.                 "queso",
  60.                 "sombrero",
  61.                 "neptuno",
  62.                 "monje",
  63.                 "ladron"
  64.             };
  65.            
  66.             int n=azar();
  67.             palabra_secreta=palabras[n];
  68.             //cout << endl << "chuletillaXD: " << palabras[n] << endl;
  69.             // convertimos la palabra a asteriscos
  70.             string oculta(palabra_secreta.length(),'*');
  71.              
  72.             // estructura while que nos hace ingresar una letra hasta que se nos terminen los intentos
  73.             while (num_fallos < numero_intentos){
  74.                 cout << "\n\n" << oculta;
  75.                 cout << "\n\nIngresa una letra: ";
  76.                 cin >> letra;
  77.                 // utilizamos la función de rellenado, si la letra no está dentro de la palabra se imprime el mensaje y nos resta un punto pero si acertamos, nos suma 2 y nos imprime los puntos y el mensaje de acierto
  78.                 if (rellenado(letra, palabra_secreta, oculta)==0){
  79.                     cout << endl << "La letra no se encuentra en la palabra" << endl;
  80.                     num_fallos++;
  81.                     puntos -= 1;
  82.                 }
  83.                 else{
  84.                     cout << endl << "Has acertado una letra" << endl;
  85.                     puntos += 2;
  86.                     cout << endl << "Puntos: " << puntos << endl;
  87.                 }
  88.                 // imprime el numero de intentos que nos quedan
  89.                 cout << "Te queda " << numero_intentos - num_fallos;
  90.                 cout << " intentos." << endl;
  91.                
  92.                 // comprobamos si el usuario ya ha adivinado la palabra secreta al completo
  93.                 if (palabra_secreta==oculta){
  94.                     cout << palabra_secreta << endl;
  95.                     cout << "Lo conseguiste! la palabra secreta era " << palabra_secreta << endl;
  96.                     puntos +=10;
  97.                     cout << "Tu puntuacion es " << puntos << endl;
  98.                     num_fallos = 0;
  99.                     break;
  100.                    
  101.                 }
  102.                 if(num_fallos == numero_intentos){
  103.                     cout << "\nPerdiste, se te acabaron los intentos" << endl;
  104.                     cout << "La palabra era: " << palabra_secreta << endl;
  105.                     num_fallos = 0;
  106.                     break;
  107.                 }          
  108.  
  109.  
  110.  
  111.  
  112.                      
  113.             }//FIN DE WHILE
  114.  
  115.            
  116.            
  117.             //jugamos otra vez?    
  118.             cout << "desea seguir jugando?" << endl;
  119.             cout << "1 - si" << endl << "2 - no" << endl;      
  120.             cin >> continuar;  
  121.            
  122.        
  123.  
  124.             if ( continuar == 2){
  125.                 play = false;
  126.             }
  127.             else{
  128.                 play = true;
  129.             }
  130.         }//ENDGAMELOOP
  131.        
  132.         cout << "Adios!";
  133.         cin.ignore();
  134.         cin.get();
  135.         return 0;
  136.        
  137.        
  138.     }//ENDMAIN
  139.      
  140.      
  141.      
  142.      
  143.      
  144.      
  145.     /* tomamos la la letra, la palabra secreta y vamos rellenando secreta_rellenar, despues devolvemos los aciertos. Si la letra
  146.     ya la probamos en un intento anterior entonces se devuelve 0 */
  147.      
  148.     int rellenado (char letra_intento, string palabrasecreta, string &secreta_rellenar){
  149.         int i;
  150.         int aciertos=0;
  151.         int numletras=palabrasecreta.length();
  152.         for (i = 0; i< numletras; i++){
  153.             // si la letra ya la probamos en un intento anterior
  154.             if (letra_intento == secreta_rellenar[i])
  155.             return 0;
  156.      
  157.             // si la letra esta en la palabra que tenemos que adivinar
  158.             if (letra_intento == palabrasecreta[i]){
  159.                 secreta_rellenar[i] = letra_intento;
  160.                 aciertos++;
  161.             }
  162.         }
  163.         return aciertos;
  164.     }//FIn DE LA FUNCION RELLENO

ahí lo tienes XD
creo que va bien, el beta tester eres tu XD
Suerte!
PD:Recuerda una cosa:
Casi todos los juegos están dentro de un gameloop

Última edición por vangodp; 10/01/2014 a las 15:16
  #7 (permalink)  
Antiguo 10/01/2014, 15:35
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: ¿cómo hago un menu para c++?

Cita:
ahí lo tienes XD
creo que va bien, el beta tester eres tu XD
Suerte!
PD:Recuerda una cosa:
Casi todos los juegos están dentro de un gameloop

Es raro, cuando lo compilo e inicio me muestra el menú y la palabra "adios".. veré qué puedo hacer para que funcione
  #8 (permalink)  
Antiguo 10/01/2014, 15:46
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: ¿cómo hago un menu para c++?

No se si te sirve pero hice un copy-paste de lo que publicó vangodp y me funcionó sin problemas.

Saludos.
  #9 (permalink)  
Antiguo 10/01/2014, 15:49
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: ¿cómo hago un menu para c++?

Cita:
Iniciado por Payaso73 Ver Mensaje
No se si te sirve pero hice un copy-paste de lo que publicó vangodp y me funcionó sin problemas.

Saludos.
Yo estoy usando devc++, influye eso? Soy bastante nuevo en esto de la programación...

Es como si no entrara en el loop del juego

Última edición por martinbestarg; 10/01/2014 a las 15:57
  #10 (permalink)  
Antiguo 10/01/2014, 15:57
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: ¿cómo hago un menu para c++?

Sinceramente nunca use devc++ y no me puse a ver detalladamente el código de vangodp, pero prueba con darle un valor a 'play' ya que, por lo que vi, no se inicializa y puede contener basura.
Es decir: bool play=true;

Saludos.
  #11 (permalink)  
Antiguo 10/01/2014, 16:05
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: ¿cómo hago un menu para c++?

Cita:
Iniciado por Payaso73 Ver Mensaje
Sinceramente nunca use devc++ y no me puse a ver detalladamente el código de vangodp, pero prueba con darle un valor a 'play' ya que, por lo que vi, no se inicializa y puede contener basura.
Es decir: bool play=true;

Saludos.
Ok, era eso.. muchas gracias a los dos, me salvaron la vida
  #12 (permalink)  
Antiguo 10/01/2014, 16:35
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: ¿cómo hago un menu para c++?

haz una cosa, dale a citar y copias el código de ahí.
Yo también lo hice en dev c++, pero es la versión de orwell, no se si es la tuya.
Pero si no te funciona me lo dice y subo otra vez :/
Ademas guárdalo como cpp
  #13 (permalink)  
Antiguo 10/01/2014, 18:17
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: ¿cómo hago un menu para c++?

Yo solía usar Dev-C++ pero hasta el Orwell tiene problemas y está algo desactualizado, te recomiendo pasarte a alguno como CodeBlocks!

  #14 (permalink)  
Antiguo 10/01/2014, 19:26
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: ¿cómo hago un menu para c++?

si usar uso el emacs XD
  #15 (permalink)  
Antiguo 11/01/2014, 17:50
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: ¿cómo hago un menu para c++?

Cita:
Iniciado por carbon Ver Mensaje
Yo solía usar Dev-C++ pero hasta el Orwell tiene problemas y está algo desactualizado, te recomiendo pasarte a alguno como CodeBlocks!

en la netbook con ubuntu tengo codeblocks, los de la facultad me recomendaron usar este para el trabajo.. jaja

Etiquetas: funcion, int, numero, programa, string
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 01:44.