Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/01/2014, 12:51
martinbestarg
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 4 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. }