-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
428 lines (355 loc) · 11 KB
/
index.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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
//VARIABLES
const letrasEquivocadas = document.getElementById('letras-equivocadas');
const palabrasSecretas = ['CSS','HTML','ORACLE','BUG','MOUSE','PUERTA','JAVA','RELOJ','HOLA','CHAU','PERRO','GATO','PAJARO','CALLE','PAIS','CASA','MESA','MESSI','MUSICA','SILLA','CANCION'];
var letrasIngresadas = [];
var letrasIncorrectas = [];
let palabraSecreta="";
var palabraIngresada = ["","","","","","","",""];
let intentos = 0;
let intentosMax = 9;
var letraCapturada = "";
//PARA LA MUSICA, PLAY Y STOP
window.addEventListener("load",function(){
document.getElementById("play").addEventListener("click",sonarMusica);
document.getElementById("stop").addEventListener("click",callarMusica);
});
//PLAY A LA MUSICA
function sonarMusica(){
var sonido = document.createElement("iframe");
sonido.setAttribute("src","sound/Birdseye Blues - Chris Haugen.mp3");
document.body.appendChild(sonido);
document.getElementById("play").removeEventListener("click",sonarMusica);
}
//STOP A LA MUSICA
function callarMusica(){
var iframe = document.getElementsByTagName("iframe");
if (iframe.length > 0){
iframe[0].parentNode.removeChild(iframe[0]);
document.getElementById("play").addEventListener("click",sonarMusica);
}
}
//MUESTRA EL INICIO DEL JUEGO
function inicio(){
document.getElementById("main-juego").style.display = "none";
document.getElementById("main-ppal").style.display = "block";
document.getElementById("main-palabra").style.display = "none";
}
//MUESTRA LA PAGINA DEL JUEGO
function muestraJuego(){
document.getElementById("main-juego").style.display = "block";
document.getElementById("main-ppal").style.display = "none";
document.getElementById("main-palabra").style.display = "none";
}
//MUESTRA LA PAGINA DE AGREGAR PALABRA
function agregarPalabra(){
document.getElementById("main-juego").style.display = "none";
document.getElementById("main-ppal").style.display = "none";
document.getElementById("main-palabra").style.display = "block";
}
//COMIENZA UN NUEVO JUEGO
function nuevoJuego(){
intentos = 0;
limpiarDibujo();
sortearPalabra();
muestraJuego();
dibujarInicio();
ocultarPerdio();
ocultarGano();
ocultarPalabra();
letraCapturada="";
letrasIngresadas=[];
letrasIncorrectas=[];
palabraIngresada = ["","","","","","","",""];
letrasEquivocadas.textContent="";
detectarPresionada();
dibujarLineas(palabraSecreta);
}
//GUARDA LA PALABRA INGRESADA POR EL USUARIO
function guardarPalabra(){
let entrada = document.getElementById("ingreso").value;
if(!controlarCantidad(entrada) && esMayusculas(entrada)){
palabrasSecretas.push(entrada);
nuevoJuego();
}
else{
document.getElementById("advertencia").style.display = "block";
}
}
//SI LA PALABRA TIENE MAS DE 8 LETRAS DEVUELVE TRUE
function controlarCantidad(palabra){
return palabra.length > 8;
}
//COMPRUEBA SI UNA CADENA SE INGRESO CON LETRAS MAYUSCULAS
function esMayusculas(palabra){
var patron = new RegExp("^[A-Z\\s]+$");
return patron.test(palabra);
}
//DEVUELVE UNA PALABRA SORTEADA
function sortearPalabra(){
let indice = Math.round(Math.random()*palabrasSecretas.length);
palabraSecreta = palabrasSecretas[indice];
}
//COMPRUEBA SI ES UNA LETRA O NO
function esLetra (caracter){
var patron = new RegExp("^[A-Za-z]+$");
return patron.test(caracter);
}
//COMPRUEBA SI LA CADENA CONTIENE LA LETRA INGRESADA
function esLetraCorrecta(letra){
return palabraSecreta.indexOf(letra.toUpperCase()) !== -1;
}
//COMPRUEBA SI UNA LETRA YA FUE INGRESADA
function esRepetida(letra){
return letrasIngresadas.indexOf(letra) !== -1;
}
//MUESTRA LA PALABRA SECRETA
function mostrarPalabra(){
document.getElementById("cartel-palabra").style.display = "block";
document.getElementById("palabra-perdida").innerHTML = palabraSecreta;
}
//OCULTA LA PALABRA SECRETA
function ocultarPalabra(){
document.getElementById("cartel-palabra").style.display = "none";
}
//EVENTO QUE ESPERA A QUE CUALQUIER TECLA DEL TECLADO FISICO SEA PRESIONADA
function detectarPresionada(){
document.addEventListener('keydown', (event) => {
letraCapturada = event.key;
main(letraCapturada);
}, false);
}
//DETECTA LAS TECLAS INGRESADAS DESDE EL TECLADO VIRTUAL
function teclaDetectada(letraCapturada){
main(letraCapturada);
}
//FUNCION PRINCIPAL DE LA APP
function main(letraCapturada){
if(intentos<intentosMax){
if(esLetra(letraCapturada) && !esRepetida(letraCapturada)){
//SE AGREGA AL ARRAY LA LETRA CAPTURADA SEA O NO CORRECTA
letrasIngresadas.push(letraCapturada);
if(esLetraCorrecta(letraCapturada)){
for(i = 0 ; i< palabraSecreta.length; i++){
if(palabraSecreta[i] == letraCapturada.toUpperCase()){
palabraIngresada.splice(i,1,letraCapturada.toUpperCase());
dibujarLetra(letraCapturada,posicionX(i),70);
}
}
//COMPRUEBA SI YA GANO
if(palabraIngresada.join("") == palabraSecreta){
mostrarGano();
}
}
else{
//SI ERRO SE SUMA UN INTENTO Y SE COMPRUEBA SI PERDIO
intentos++;
if(intentos == intentosMax){
mostrarPerdio();
mostrarPalabra();
}
//GUARDO LA LETRA CAPTURADA EN UN ARRAY
guardarIncorrectas(letraCapturada);
dibujar();
}
}
}
else{
if(intentos == intentosMax){
mostrarPerdio();
mostrarPalabra();
}
}
}
//GUARDA LA LETRA INCORRECTA EN UN ARRAY Y MUESTRA LA CADENA
function guardarIncorrectas(letraCapturada){
letrasIncorrectas.push(letraCapturada);
letrasEquivocadas.textContent = letrasIncorrectas.join("").toUpperCase();
}
//MUESTRA EL CARTEL DE LA VERGUENZA
function mostrarPerdio(){
document.getElementById("cartel-perdiste").style.display = "block";
}
//OCULTA EL CARTEL DE LA VERGUENZA
function ocultarPerdio(){
document.getElementById("cartel-perdiste").style.display = "none";
}
//MUESTRA EL CARTEL GANADOR
function mostrarGano(){
intentos = 10; //PONGO UN NUMERO QUE SOBREPASA LA CANTIDAD DE INTENTOS
document.getElementById("cartel-ganaste").style.display = "block";
}
//OCULTA EL CARTEL GANADOR
function ocultarGano(){
document.getElementById("cartel-ganaste").style.display = "none";
}
/********** FUNCIONES RELACIONADAS CON LOS DIBUJOS ********/
//LIMPIA LAS LINEAS DE LA PALABRA
function limpiarLineas(){
let pantalla = document.getElementById("lineas");
pantalla.width=pantalla.width;
pantalla.height=pantalla.height
}
//LIMPIA EL DIBUJO DEL AHORCADO
function limpiarDibujo(){
let pantalla = document.getElementById("dibujo");
pantalla.width=pantalla.width;
pantalla.height=pantalla.height
}
//DIBUJA LA LETRA CORRESPONDIENTE A MEDIDA QUE SE INGRESA
function dibujarLetra(letra,x,y) {
let pantalla = document.getElementById("lineas");
let cxt1 = pantalla.getContext("2d");
letra = letra.toUpperCase();
cxt1.beginPath() //iniciar ruta
cxt1.fillStyle="#F8DB95"; //color de relleno
cxt1.font="bold 35px arial"; //estilo de texto
cxt1.fillText(letra,x,y); //texto con método fill
}
//DETECTA LA POSICION DE LA LETRA
function posicionX(posicion){
x = 25;
x = x + (posicion * 45);
return x;
}
//DIBUJA LA CANTIDAD DE LINEAS SEGUN LA CANTIDAD DE LETRAS
function dibujarLineas(palabraSecreta){
limpiarLineas();
let pantalla = document.getElementById("lineas");
let pincel = pantalla.getContext("2d");
pincel.fillStyle = "#F8DB95";
let x = 25;
for(let i=0;i<palabraSecreta.length;i++){
pincel.fillRect(x,80,30,3);
x+=45;
}
}
let pincel;
//PREPARA TODOS LOS ELEMENTOS PARA EMPREZA A DIBUJAR EN EL CANVAS
function prepararCanvas(){
let pantalla = document.getElementById("dibujo");
pincel = pantalla.getContext("2d");
}
function dibujarInicio(){
prepararCanvas();
//piso
var piso = new Image();
piso.onload = function() {
pincel.drawImage(piso, 0, 390);
};
piso.src = 'img/ahorcado/suelo2.png';
}
function dibujarAsta(){
prepararCanvas();
//asta
var tronco = new Image();
tronco.onload = function() {
pincel.drawImage(tronco, -60, -20);
};
tronco.src = 'img/ahorcado/tronco2.png';
}
function dibujarHorizontal(){
prepararCanvas();
//linea horizontal
var rama = new Image();
rama.onload = function() {
pincel.drawImage(rama, 50, -120);
};
rama.src = 'img/ahorcado/rama2.png';
}
function dibujarCuerda(){
prepararCanvas();
//cuerda
var horca = new Image();
horca.onload = function() {
pincel.drawImage(horca, 165, 15);
};
horca.src = 'img/ahorcado/horca3.png';
}
function dibujarCabeza(){
prepararCanvas();
//cabeza
var cabeza = new Image();
cabeza.onload = function() {
pincel.drawImage(cabeza, 87, 0);
};
cabeza.src = 'img/ahorcado/cabeza2.png';
}
function dibujarTorso(){
prepararCanvas();
//torso
var torso = new Image();
torso.onload = function() {
pincel.drawImage(torso, 81, 58);
};
torso.src = 'img/ahorcado/torso2.png';
}
function dibujarBrazoDer(){
prepararCanvas();
//brazo derecho
var brazoder = new Image();
brazoder.onload = function() {
pincel.drawImage(brazoder, 120, 45);
};
brazoder.src = 'img/ahorcado/brazoder2.png';
}
function dibujarBrazoIzq(){
prepararCanvas();
//brazo izquierdo
var brazoizq = new Image();
brazoizq.onload = function() {
pincel.drawImage(brazoizq, 45, 57);
};
brazoizq.src = 'img/ahorcado/brazoizq2.png';
}
function dibujarPiernaDer(){
prepararCanvas();
//pierna derecha
var piernader = new Image();
piernader.onload = function() {
pincel.drawImage(piernader, 97, 130);
};
piernader.src = 'img/ahorcado/piernader2.png';
}
function dibujarPiernaIzq(){
prepararCanvas();
//pierna izquierda
var piernaizq = new Image();
piernaizq.onload = function() {
pincel.drawImage(piernaizq, 70, 114);
};
piernaizq.src = 'img/ahorcado/piernaizq2.png';
}
//VA DIBUJANDO EL AHORCADO A MEDIDA DE LA CANTIDAD DE INTENTOS REALIZADOS
function dibujar(){
switch (intentos) {
case 1:
dibujarAsta()
break;
case 2:
dibujarHorizontal();
break;
case 3:
dibujarCuerda();
break;
case 4:
dibujarCabeza();
break;
case 5:
dibujarTorso();
break;
case 6:
dibujarBrazoDer();
break;
case 7:
dibujarBrazoIzq();
break;
case 8:
dibujarPiernaDer();
break;
case 9:
dibujarPiernaIzq();
break;
default:
break;
}
}