fun-ahorcado.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. const palabras = ["gato", "perro", "pájaro", "elefante", "tigre", "ballena", "mariposa", "tortuga", "conejo", "rana", "pulpo", "ardilla", "jirafa", "cocodrilo", "pingüino", "delfín", "serpiente", "hámster", "mosquito", "abeja", "Porno", "negro", "television", "computadora", "botsito", "reggaeton", "economía", "electrónica", "facebook", "WhatsApp", "Instagram", "tiktok", "milanesa", "presidente", "bot", "películas",
  2. ]
  3. const intentosMaximos = 6
  4. const gam = new Map()
  5. function elegirPalabraAleatoria() {
  6. return palabras[Math.floor(Math.random() * palabras.length)]
  7. }
  8. function ocultarPalabra(palabra, letrasAdivinadas) {
  9. let palabraOculta = "";
  10. for (const letra of palabra) {
  11. if (letrasAdivinadas.includes(letra)) {
  12. palabraOculta += letra + " ";
  13. } else {
  14. palabraOculta += "_ ";
  15. }}
  16. return palabraOculta.trim();
  17. }
  18. function mostrarAhorcado(intentos) {
  19. const dibujo = [
  20. " ____",
  21. " | |",
  22. intentos < 6 ? " | O" : " |",
  23. intentos < 5 ? " | /" : intentos < 4 ? " | / " : intentos < 3 ? " | / \\" : intentos < 2 ? " | / \\ " : " |",
  24. intentos < 2 ? "_|_" : " |",
  25. ]
  26. return dibujo.slice(0, intentosMaximos - intentos).join("\n")
  27. }
  28. function juegoTerminado(sender, mensaje, palabra, letrasAdivinadas, intentos) {
  29. if (intentos === 0) {
  30. gam.delete(sender);
  31. return `❌ ¡Perdiste! La palabra correcta era: ${palabra}\n\n${mostrarAhorcado(intentos)}`;
  32. } else if (!mensaje.includes("_")) {
  33. let expGanada = Math.floor(Math.random() * 300); //fáciles
  34. if (palabra.length >= 8) {
  35. expGanada = Math.floor(Math.random() * 3500); //difíciles
  36. }
  37. global.db.data.users[sender].exp += expGanada;
  38. gam.delete(sender);
  39. return `¡Que pro Ganaste 🥳! Adivinaste la palabra "${palabra}".\n\n*Has ganado:* ${expGanada} Exp.`;
  40. } else {
  41. return `${mostrarAhorcado(intentos)}\n\n${mensaje}`;
  42. }}
  43. let handler = async (m, { conn }) => {
  44. let users = global.db.data.users[m.sender]
  45. if (gam.has(m.sender)) {
  46. return conn.reply(m.chat, "Ya tienes un juego en curso. ¡Termina ese primero!", m)
  47. }
  48. let palabra = elegirPalabraAleatoria()
  49. let letrasAdivinadas = []
  50. let intentos = intentosMaximos
  51. let mensaje = ocultarPalabra(palabra, letrasAdivinadas)
  52. gam.set(m.sender, { palabra, letrasAdivinadas, intentos })
  53. let text = `¡Adivina la palabra:\n\n${mensaje}\n\nIntentos restantes: ${intentos}`
  54. conn.reply(m.chat, text, m)
  55. }
  56. handler.before = async (m, { conn }) => {
  57. let users = global.db.data.users[m.sender]
  58. let juego = gam.get(m.sender)
  59. if (!juego) return
  60. let { palabra, letrasAdivinadas, intentos } = juego
  61. if (m.text.length === 1 && m.text.match(/[a-zA-Z]/)) {
  62. let letra = m.text.toLowerCase()
  63. if (!letrasAdivinadas.includes(letra)) {
  64. letrasAdivinadas.push(letra)
  65. if (!palabra.includes(letra)) {
  66. intentos--
  67. }}
  68. let mensaje = ocultarPalabra(palabra, letrasAdivinadas)
  69. let respuesta = juegoTerminado(m.sender, mensaje, palabra, letrasAdivinadas, intentos)
  70. if (respuesta.includes("¡Perdiste!") || respuesta.includes("¡Ganaste!")) {
  71. conn.reply(m.chat, respuesta, m)
  72. } else {
  73. gam.set(m.sender, { palabra, letrasAdivinadas, intentos })
  74. conn.reply(m.chat, respuesta + `\n\nIntentos restantes: ${intentos}`, m)
  75. }} else {
  76. let mensaje = ocultarPalabra(palabra, letrasAdivinadas);
  77. let respuesta = juegoTerminado(m.sender, mensaje, palabra, letrasAdivinadas, intentos)
  78. conn.reply(m.chat, respuesta, m)
  79. gam.delete(m.sender)
  80. }}
  81. handler.help = ['ahorcado']
  82. handler.tags = ['game']
  83. handler.command = ['ahorcado']
  84. handler.register = true
  85. export default handler