-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfun-ahorcado.js
100 lines (90 loc) · 3.54 KB
/
fun-ahorcado.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
const palabras = ["gato", "perro", "elefante", "tigre", "ballena", "mariposa", "tortuga", "conejo", "rana", "pulpo", "ardilla", "jirafa", "cocodrilo", "pingüino", "delfín", "serpiente", "hámster", "mosquito", "abeja", "negro", "television", "computadora", "botsito", "reggaeton", "economía", "electrónica", "facebook", "WhatsApp", "Instagram", "tiktok", "presidente", "bot", "películas", "gata", "gatabot",
]
const intentosMaximos = 6
const gam = new Map()
function elegirPalabraAleatoria() {
return palabras[Math.floor(Math.random() * palabras.length)]
}
function ocultarPalabra(palabra, letrasAdivinadas) {
let palabraOculta = "";
for (const letra of palabra) {
if (letrasAdivinadas.includes(letra)) {
palabraOculta += letra + " ";
} else {
palabraOculta += "_ ";
}
}
return palabraOculta.trim();
}
function mostrarAhorcado(intentos) {
const dibujo = [
" ____",
" | |",
intentos < 6 ? " | O" : " |",
intentos < 5 ? " | /" : intentos < 4 ? " | / " : intentos < 3 ? " | / \\" : intentos < 2 ? " | / \\ " : " |",
intentos < 2 ? "_|_" : " |",
]
return dibujo.slice(0, intentosMaximos - intentos).join("\n")
}
function juegoTerminado(sender, mensaje, palabra, letrasAdivinadas, intentos) {
if (intentos === 0) {
gam.delete(sender);
return `🫡 *AGOTASTE LOS INTENTOS!!* LA PALABRA CORRECTA ERA: ${palabra}\n\n${mostrarAhorcado(intentos)}`;
} else if (!mensaje.includes("_")) {
let expGanada = Math.floor(Math.random() * 350); //fáciles
if (palabra.length >= 8) {
expGanada = Math.floor(Math.random() * 6500); //difíciles
}
global.db.data.users[sender].exp += expGanada;
gam.delete(sender);
return `\`\`\`🎊 HAS GANADO ${expGanada} EXP\`\`\`\n\n*CORRECTO!! ADIVINASTE LA PALABRA:* _"${palabra}"_.\n\n`;
} else {
return `${mostrarAhorcado(intentos)}\n\n${mensaje}`;
}
}
let handler = async (m, { conn }) => {
let users = global.db.data.users[m.sender]
if (gam.has(m.sender)) {
return conn.reply(m.chat, "Ya tienes un juego en curso. ¡Termina ese primero!", m)
}
let palabra = elegirPalabraAleatoria()
let letrasAdivinadas = []
let intentos = intentosMaximos
let mensaje = ocultarPalabra(palabra, letrasAdivinadas)
gam.set(m.sender, { palabra, letrasAdivinadas, intentos })
let text = `¡Adivina la palabra:\n\n${mensaje}\n\nIntentos restantes: ${intentos}`
conn.reply(m.chat, text, m)
}
handler.before = async (m, { conn }) => {
let users = global.db.data.users[m.sender]
let juego = gam.get(m.sender)
if (!juego) return
let { palabra, letrasAdivinadas, intentos } = juego
if (m.text.length === 1 && m.text.match(/[a-zA-Z]/)) {
let letra = m.text.toLowerCase()
if (!letrasAdivinadas.includes(letra)) {
letrasAdivinadas.push(letra)
if (!palabra.includes(letra)) {
intentos--
}
}
let mensaje = ocultarPalabra(palabra, letrasAdivinadas)
let respuesta = juegoTerminado(m.sender, mensaje, palabra, letrasAdivinadas, intentos)
if (respuesta.includes("¡Perdiste!") || respuesta.includes("¡Ganaste!")) {
conn.reply(m.chat, respuesta, m)
} else {
gam.set(m.sender, { palabra, letrasAdivinadas, intentos })
conn.reply(m.chat, respuesta + `\n\n😮💨 *INCORRECTO. TE QUEDAN:* ${intentos} INTENTOS`, m)
}
} else {
let mensaje = ocultarPalabra(palabra, letrasAdivinadas);
let respuesta = juegoTerminado(m.sender, mensaje, palabra, letrasAdivinadas, intentos)
conn.reply(m.chat, respuesta, m)
gam.delete(m.sender)
}
}
handler.help = ['ahorcado']
handler.tags = ['game']
handler.command = ['ahorcado']
handler.register = true
export default handler