-
Notifications
You must be signed in to change notification settings - Fork 0
/
ahorcado.js
207 lines (157 loc) · 5.86 KB
/
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
//Seletores
let pantalla = document.querySelector("canvas");
let botonNuevoJuego = document.getElementById("btn-nuevo-juego").style.display = "none"
let btnSalirDesaparecer = document.getElementById("btn-salir").style.display = "none"
let divAgregarPalabra = document.getElementById("agregar-palabra").style.display = 'none';
let btnNuevoJuego = document.getElementById("btn-nuevo-juego");
let btnSalir = document.getElementById("btn-salir");
let btnCancelar = document.getElementById("btn-cancelar");
var palabras = ['ALURA', 'AHORCADO', 'HTML', 'ORACLE', 'JAVASCRIPT', 'LOGICA', 'PROGRAMACION', 'DESAFIO'];
var tablero = document.getElementById('horca').getContext('2d');
var palabraSecreta = "";
var letras = [];
var palabraCorrecta = "";
var errores = 8;
let letrasIncorrectas = [];
let numeroDeErrores = 8
let letraElegida = [];
//eventos
// captura el id "iniciar-juego" en el click y direcciona el program al método dque inicia el juego
document.getElementById("iniciar-juego").onclick = () => {
iniciarJuego();
}
// captura el id "btn-guardar", guarda la palabra agregada y inicia el juego
document.getElementById("btn-guardar").onclick = () => {
guardarPalabra();
}
//actualiza la pantalla cuando el usuario hace click en el botón "nuevo juego"
btnNuevoJuego.addEventListener("click", function () {
location.reload();
});
//actualiza la pantalla cuando el usuario hace click en el botón "salir"
btnSalir.addEventListener("click", function () {
location.reload();
});
//actualiza la pantalla cuando el usuario hace click en el botón "cancelar"
btnCancelar.addEventListener("click", function () {
location.reload();
});
//sortea la palabra que será usada en el ahorcado
function escojerPalabraSecreta() {
let palabra = palabras[Math.floor(Math.random() * palabras.length)]
palabraSecreta = palabra
return palabra
}
// verifica cual es la letra en que el usuario hizo clic
function verificarLetraClicada(key) {
if (letras.length < 1 || letras.indexOf(key) < 0) {
letras.push(key)
return false
}
else {
letras.push(key)
return true
}
}
function adicionarLetraCorrecta(i) {
palabraCorrecta += palabraSecreta[i].toUpperCase()
}
function adicionarLetraIncorrecta(letter) {
if (palabraSecreta.indexOf(letter) <= 0) {
errores -= 1
}
}
function verificarFinJuego(letra) {
//checa si la letra ha sido incluída en el array de las letras correctas o incorrectas
if(letraElegida.length < palabraSecreta.length) {
//incluye las letras ya digitadas en el arrau
letrasIncorrectas.push(letra);
//valida se el usuário cometió el numero maximo de errores
if (letrasIncorrectas.length > numeroDeErrores) {
perdiste()
}
else if(letraElegida.length < palabraSecreta.length) {
adicionarLetraIncorrecta(letra)
escribirLetraIncorrecta(letra, errores)
}
}
}
//Verifica si el usuario ha ganado
function verificarVencedor(letra) {
letraElegida.push(letra.toUpperCase());
if (letraElegida.length == palabraSecreta.length) {
ganaste()
}
}
//impide que teclas como shift y otras, sean consideradas errores y sean escritas
function verificarLetra(keyCode) {
if (typeof keyCode === "number" && keyCode >= 65 && keyCode <= 90) {
return true;
} else {
return false;
}
}
//haz con que los botones de la pantalla de home desaparezcan y los de la de agregar palabra aparezcan
function ensenarPantallaDeAgregarPalabra() {
document.getElementById("div-desaparece").style.display = 'none';
document.getElementById("agregar-palabra").style.display = "block";
}
// guarda la palabra que el usuario quiere agregar
function guardarPalabra() {
//captura lo que el usuario ha digitado
let nuevaPalabra = document.getElementById('input-nueva-palavra').value;
// incluye la palabra que el usuario digitó en el array de las palabras a seren sorteadas
if(nuevaPalabra !== ""){
palabras.push(nuevaPalabra.toUpperCase());
alert('La palabra fue guardada')
// haz con que los componentes de la pantalla de agregar palabra desaparezcan
document.getElementById("agregar-palabra").style.display = "none";
iniciarJuego();
}
else{
alert("Ninguna palabra ha sido digitada")
}
}
//inicia el juego
function iniciarJuego() {
// hace con que los de iniciar juego e agregar palabra desaparezcan
document.getElementById("div-desaparece").style.display = 'none';
//llama la función que dibuja el tablero del ahorcado
dibujarTablero();
//llama la función que sortea la palabra
escojerPalabraSecreta();
//llama la función que dibuja las líneas donde el usuario escribirá
dibujarLineas();
// hace con que los botones de nuevo juego e salir aparezcan
document.getElementById("btn-nuevo-juego").style.display = "block"
document.getElementById("btn-salir").style.display = "block"
// captura la letra que el usuario escribió
document.onkeydown = (e) => {
// pone la letra en letra mayuscula
let letra = e.key.toUpperCase()
//verifica si el usuario todavia no ha perdido
if (letrasIncorrectas.length <= numeroDeErrores) {
if (!verificarLetraClicada(e.key) && verificarLetra(e.keyCode)) {
if (palabraSecreta.includes(letra)) {
adicionarLetraCorrecta(palabraSecreta.indexOf(letra))
for (let i = 0; i < palabraSecreta.length; i++) {
if (palabraSecreta[i] === letra) {
escrribirLetraCorrecta(i)
verificarVencedor(letra)
}
}
}
// si el usuario cometió más errores de los que son permitidos,
//llama las funciones que dibujan el ahorcado y exibe el mensaje de fin de juego
else {
if (!verificarLetraClicada(e.key) && !verificarVencedor(letra)) return
dibujarAhorcado(errores)
verificarFinJuego(letra)
}
}
}
else {
alert('has atingido el límite de letras incorrectas')
}
};
}