fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. int main() {
  6. char palabras[5][10] = {"sol", "solo", "solar", "altura", "hermoso"};
  7. char letra, palabra[10], palabraOculta[10];
  8. int nivel, intentos, letrasRestantes, i, aciertos, comodines;
  9. int longitud;
  10. int niveles = 5;
  11. int juegoTerminado = 0; // Variable para registrar si el juego ha terminado
  12.  
  13. printf("Bienvenido al juego del ahorcado\n");
  14.  
  15. for(nivel = 0; nivel < niveles && !juegoTerminado; nivel++) { // Agregamos la condición para que el juego termine si juegoTerminado es verdadero
  16. intentos = 5;
  17. comodines = 3;
  18. palabraOculta[0] = '\0'; // Reinicia la palabra oculta
  19.  
  20. // Preparar la palabra oculta
  21. strcpy(palabra, palabras[nivel]);
  22. longitud = strlen(palabra);
  23. for(i = 0; i < longitud; i++) {
  24. palabraOculta[i] = '_';
  25. }
  26. palabraOculta[i] = '\0';
  27.  
  28. letrasRestantes = longitud;
  29. aciertos = 0;
  30.  
  31. printf("\nNivel %d\n", nivel + 1);
  32. printf("Adivina la palabra: %s\n", palabraOculta);
  33.  
  34. while(intentos > 0 && letrasRestantes > 0) {
  35. printf("\nIntentos restantes: %d\n", intentos);
  36. printf("Comodines restantes: %d\n", comodines);
  37. printf("Ingresa una letra (o '*' para usar un comodín): ");
  38. scanf(" %c", &letra);
  39. letra = tolower(letra); // Convertir la letra a minúscula
  40.  
  41. int encontrado = 0;
  42. if (letra == '*') {
  43. if (comodines > 0) {
  44. printf("Seleccione el tipo de comodín:\n");
  45. printf("1. Revelar una letra\n");
  46. printf("2. Revelar dos letras\n");
  47. printf("3. Revelar la definición de la palabra\n");
  48. int tipoComodin;
  49. scanf("%d", &tipoComodin);
  50. switch (tipoComodin) {
  51. case 1:
  52. if (aciertos < longitud) {
  53. for (i = 0; i < longitud; i++) {
  54. if (palabraOculta[i] == '_') {
  55. palabraOculta[i] = palabra[i];
  56. letrasRestantes--;
  57. aciertos++;
  58. printf("Letra revelada: %c\n", palabra[i]);
  59. break;
  60. }
  61. }
  62. comodines--;
  63. } else {
  64. printf("Ya no hay letras ocultas para revelar.\n");
  65. }
  66. break;
  67. case 2:
  68. if (aciertos < longitud - 1) {
  69. for (i = 0; i < longitud - 1; i++) {
  70. if (palabraOculta[i] == '_' && palabraOculta[i+1] == '_') {
  71. palabraOculta[i] = palabra[i];
  72. palabraOculta[i+1] = palabra[i+1];
  73. letrasRestantes -= 2;
  74. aciertos += 2;
  75. printf("Letras reveladas: %c%c\n", palabra[i], palabra[i+1]);
  76. break;
  77. }
  78. }
  79. comodines--;
  80. } else {
  81. printf("Ya no hay suficientes letras ocultas para revelar.\n");
  82. }
  83. break;
  84. case 3:
  85. printf("La definición de la palabra es: "); // Puedes agregar las definiciones aquí para cada palabra
  86. switch(nivel) {
  87. case 0:
  88. printf("Objeto que brilla en el cielo durante el día.\n");
  89. break;
  90. case 1:
  91. printf("Solitario, sin compañía.\n");
  92. break;
  93. case 2:
  94. printf("Relativo al sol.\n");
  95. break;
  96. case 3:
  97. printf("Distancia vertical de un punto a la recta horizontal.\n");
  98. break;
  99. case 4:
  100. printf("De belleza muy agradable y armoniosa.\n");
  101. break;
  102. default:
  103. printf("Definición no disponible.\n");
  104. break;
  105. }
  106. comodines--;
  107. break;
  108. default:
  109. printf("Opción no válida.\n");
  110. break;
  111. }
  112. intentos--;
  113. continue;
  114. } else {
  115. printf("No tienes comodines restantes.\n");
  116. }
  117. } else {
  118. for(i = 0; i < longitud; i++) {
  119. if(palabra[i] == letra && palabraOculta[i] == '_') {
  120. palabraOculta[i] = letra;
  121. letrasRestantes--;
  122. aciertos++;
  123. encontrado = 1;
  124. }
  125. }
  126.  
  127. if(!encontrado) {
  128. printf("¡Incorrecto! La letra '%c' no está en la palabra.\n", letra);
  129. intentos--;
  130. } else {
  131. printf("¡Correcto!\n");
  132. }
  133. }
  134.  
  135. printf("Palabra actual: %s\n", palabraOculta);
  136. }
  137.  
  138. if(letrasRestantes == 0) {
  139. printf("\n¡Felicidades! Has adivinado la palabra '%s' en el nivel %d.\n", palabra, nivel + 1);
  140. } else {
  141. printf("\n¡Lo siento! Te has quedado sin intentos. La palabra era '%s'.\n", palabra);
  142. juegoTerminado = 1; // Si se quedan sin intentos, establecemos juegoTerminado a verdadero para terminar el juego
  143. }
  144.  
  145. printf("\nPresiona Enter para continuar al siguiente nivel...\n");
  146. getchar(); // Limpiar el búfer del teclado
  147. getchar(); // Esperar a que el usuario presione Enter
  148. }
  149.  
  150. if(!juegoTerminado) { // Si juegoTerminado es falso, significa que el jugador ha completado todos los niveles sin quedarse sin intentos
  151. printf("¡Felicidades! Has completado todos los niveles del juego del ahorcado.\n");
  152. }
  153.  
  154. return 0;
  155. }
  156.  
  157.  
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
Bienvenido al juego del ahorcado

Nivel 1
Adivina la palabra: ___

Intentos restantes: 5
Comodines restantes: 3
Ingresa una letra (o '*' para usar un comodín): ¡Incorrecto! La letra '' no está en la palabra.
Palabra actual: ___

Intentos restantes: 4
Comodines restantes: 3
Ingresa una letra (o '*' para usar un comodín): ¡Incorrecto! La letra '' no está en la palabra.
Palabra actual: ___

Intentos restantes: 3
Comodines restantes: 3
Ingresa una letra (o '*' para usar un comodín): ¡Incorrecto! La letra '' no está en la palabra.
Palabra actual: ___

Intentos restantes: 2
Comodines restantes: 3
Ingresa una letra (o '*' para usar un comodín): ¡Incorrecto! La letra '' no está en la palabra.
Palabra actual: ___

Intentos restantes: 1
Comodines restantes: 3
Ingresa una letra (o '*' para usar un comodín): ¡Incorrecto! La letra '' no está en la palabra.
Palabra actual: ___

¡Lo siento! Te has quedado sin intentos. La palabra era 'sol'.

Presiona Enter para continuar al siguiente nivel...