Creé una nueva función para que aparezca el botón de reiniciar con el mensaje final (así no tenerlo desde un principio).
Fundamentos de Programación
Bienvenida a Platzi: ¿qué necesitas para tomar el curso?
Programación en Navegadores: Primeros Pasos
Crea tu primer sitio web
Sitios web con HTML
Estructura de árbol en HTML
Instalando tu primer editor de código
Cómo declarar variables y usar prompt
Algoritmo de piedra, papel o tijera
Algoritmo avanzado de piedra, papel o tijera
Aleatoriedad
Refactor del código usando funciones
Ciclos
Gana 3 veces
Archivos de HTML y JavaScript
¿Qué es el DOM?
Quiz: Fundamentos de Programación
Desarrollando un juego con HTML y JavaScript
Maquetación con HTML
Sección de elegir mascota
¿Dónde ubicar la etiqueta script? Conectando HTML con JavaScript
Escuchando eventos con JavaScript
addEventListener
Manipulación del DOM
Enemigos aleatorios
Ataques en JavaScript
Ataques aleatorios del enemigo
Imprimiendo ataques del enemigo
¿Ganaste, perdiste o empataste?
Tablas de verdad
Creando el contador de vidas
¿Quién ganó el juego?
Reiniciando el juego
Ocultando elementos HTML con JS para mejorar la UX del juego
Quiz: Desarrollando un juego con HTML y JavaScript
Estilos con CSS
Anatomía de CSS
Tipos de display
Flexbox
Modelo de caja
Imágenes para los Mokepones
Estilos del botón
Adaptando HTML al diseño del juego
Layout: título y ataques
Adaptando JavaScript al diseño del juego
CSS Grid
Responsive Design
Detalles finales
Quiz: Estilos con CSS
Optimización de código
Revisión de código
Don't repeat yourself (DRY)
Clases y objetos
Clases y objetos de Mokepon
Arrays o arreglos
Objetos vs. arreglos
Ciclos: manipulando el DOM con iteradores
Declaración lenta de variables
Una sola fuente de la verdad
Mascotas aleatorias con arreglos
Ataques dinámicos por cada mascota: extraer
Renderizado dinámico en HTML
Eventos de click dinámicos
Secuencia de ataques del enemigo
Iniciando el combate
Resolviendo el reto de condicionales
Optimizando el frontend del juego
Quiz: Optimización de código
Mapa con canvas
Introducción a canvas: dibujando con JavaScript
Moviendo a Capipepo hacia la derecha
Movimiento hacia todas las direcciones
Movimientos con el teclado
Imágenes y personajes de fondo
Métodos en las clases
Obstáculos y colisiones
Combate entre mokepones colisionados
Mapa responsive
Botones bonitos y viewport
Quiz: Mapa con canvas
Backend: videojuego multijugador
¿Qué es backend?
Instalación de Node.js y NPM
Terminal de comandos y Node.js
Servidor web con Express.js
HTTP, localhost, servidores y puertos
Express.js y fetch: API REST con JavaScript
JSON y POST: mokepon online
Transmisión de coordenadas
Mokepones dinámicos en el mapa
Optimizando el mapa del juego
Batalla entre jugadores
Consumiendo la API de ataques del enemigo
Quiz: Backend: videojuego multijugador
Próximos pasos
Probando el juego en varios dispositivos
¿Y ahora qué curso tomar?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Juan David Castro Gallego
Aportes 215
Preguntas 61
Creé una nueva función para que aparezca el botón de reiniciar con el mensaje final (así no tenerlo desde un principio).
Este objeto, el cual puede utilizarse sin el prefijo window, nos sirve tanto para obtener la url o parte de ella, de la web donde nos encontramos como para redireccionarnos hacia otra página. 😎😎
Asi va quedando mi version, quiero poner dos opciones mas de personaje (cada personaje tiene diferentes estadísticas).
sume más elementos y cada elemento tiene 5 ataques con diferente daño y curación(la curación sólo afecta el escudo).
estoy seguro que cuando le meta css quedará más bonito, además quiero hacer unas cards para cada personaje y para cada ataque :3
esto es lo que hice antes de ver la solución del profe
Mi forma de resolver este reto fue al utilizar la propiedad disabled para desactivar los botones justo despues de que se conoce si se perdio o se gano, es decir dentro de la función revisaVidas
function revisarVidas() {
if(vidasEnemigo == 0){
crearMensajeFinal("FELICITACIONES GANASTE✨");
botonFuego.disabled = true;
botonAgua.disabled = true;
botonTierra.disabled = true;
} else if(vidasJugador == 0) {
crearMensajeFinal("UPS, LASTIMOSAMENTE PERDISTE😪");
botonFuego.disabled = true;
botonAgua.disabled = true;
botonTierra.disabled = true;
}
};```
![plat.jpg](https://static.platzi.com/media/user_upload/plat-d7496e19-6d13-4372-8db8-5f7664372040.jpg)
A si va quedando
Para bloquear el boton de seleccionar jugador, justo despues de seleccionarlo seria asi:
el profe hace preguntan que te replantean la vida,. duere como 1 hora pensando, como reiniciar el juego
vamos a reiniciar el juego
Esto lo vamos a realizar cuando una de las mascotas llegue a cero.
Esto lo haremos desabilitando los botones cuando se llegue a cero vidas y mostrar un boton de reiniciar
Podemos usar el método location.reload();
para que cuando se presione el botón de reiniciar, se reinicie todo el juego
function reiniciarJuego(){
location.reload();
}
Esto lo haremos con el atributo disabled
como lejemplo podríamos tener un botón desabilitado de esta forma
<button id = "boton-fuego" disabled>Fuego 🔥</button>
Pero como lo que queremos hacer es cambiar las propiedades de un botón, haremos lo siguiente
function crearMensajeFinal(resultadoFinal){
let sectionMensaje = document.getElementById("mensajes");
let parrafo = document.createElement("p");
parrafo.innerHTML = resultadoFinal;
sectionMensaje.appendChild(parrafo);
let botonFuego = document.getElementById("boton-fuego")
botonFuego.disabled = true;
let botonAgua = document.getElementById("boton-agua")
botonAgua.disabled = true;
let botonTierra = document.getElementById("boton-tierra")
botonTierra.disabled = true;
}
Como podemos ver, esto va incluido en la función de mensaje final dado que se desabilitará cuando alguna de las vidas llegue a cero
Hola!
Yo hice que cuando las vidas (del enemigo o las propias) lleguen a 0, se reinicie la partida automáticamente:
function revisarVidas() {
if (VidasEnemigo == 0) {
location.reload()
alert('GANASTE!!!')
//crearMensajeFinal('GANASTE!!!')
} else if (VidasJugador == 0) {
location.reload()
alert('PERDISTE :(')
//crearMensajeFinal('PERDISTE :(')
}
}
Una ayuda es que si sus disabled no funcionan, revisen si estan bien escritos, yo tenia dias con ese error hasta que me di cuenta que no era disable, si no disabled, con “d” al final 😂
Creo que ya esta todo y asi me quedo:
location.reload()🔄
Yo cree una función llamada bloquearAtaques, donde use las variables de botones con su respectivo id, para ponerle con la condición de si la vidas del enemigo o jugador sean 0 se bloqueara los botones de ataques, con su respectivo llamado hacia finalizar el combate.
para los HTML lovers, así lo modifican directamente desde el DOM y se ahorran 3 lineas de código 😉
document.getElementById("button-fire").disabled = true
document.getElementById("button-water").disabled = true
document.getElementById("button-grass").disabled = true
Asi va quedando:
Para las personas que les falla (como a mi) o simplemente no quieren complicarse creando funciones para el boton de reiniciar, lo pueden hacer en una sola linea de codigo, aqui les dejo como.
Deben quitar el id del button reiniciar - Espero haber ayudado
de esta forma puedes deshabilitar todos los botones que quieras al mismo tiempo.
let btn = document.getElementsByClassName('btn')
function msgFinal(result){
mensajeFinal.innerHTML = result
for (const item of btn) {
item.disabled =true
}
El tema de los botones y no poder usarlos lo que hice fue, que no funcionaran los botones de ataque hasta que no se eligiera una mascota, luego al momento de elegir la mascota deshabilite el boton de elegir, se coloca su respectivo nombre, vidas y comienza el juego, al momento de llegar a 0 vidas aparece tu victoria y coloque una condicional de que si alguna de las dos vidas llega a 0 los botones dejan de funcionar 😃
Estoy feliz de poder haberlo hecho hace como 4 clases atras por pura curiosidad, siento que voy por buen camino
ahh bueno con disabled queda mejor que mi solución del retrun jajajajajajjajajaa 🤪
function deshabilitarBotones(){
let botonFuego = document.getElementById("boton-fuego")
botonFuego.disabled = true
let botonAgua = document.getElementById("boton-agua")
botonAgua.disabled = true
let botonTierra = document.getElementById("boton-tierra")
botonTierra.disabled = true
}
function revisarVidas(){
if(vidasEnemigo == 0){
crearMensajeFinal("GANASTE LA BATALLA✌")
deshabilitarBotones()
}else if(vidasJugador == 0){
crearMensajeFinal("PERDISTE LA BATALLA😞")
deshabilitarBotones()
}
}
let botonReciniciar = document.getElementById("boton-reiniciar")
botonReciniciar.addEventListener("click", reiciciarjuego)
function reiciciarjuego(){
location.reload()
}
Yo para que los botones de los ataques no funcionen una vez llegado a “0” hice esto:
function combate() {
let spanVidasJugador = document.getElementById("vidas-jugador")
let spanVidasEnemigo = document.getElementById("vidas-enemigo")
if (vidasEnemigo > 0 && vidasJugador > 0) {
if (ataqueEnemigo == ataqueJugador) {
crearMensaje("🤝EMPATE🤝");
;
} else if (
(ataqueJugador == "FUEGO🔥" && ataqueEnemigo == "PLANTA🍃") ||
(ataqueJugador == "AGUA💦" && ataqueEnemigo == "FUEGO🔥") ||
(ataqueJugador == "PLANTA🍃" && ataqueEnemigo == "AGUA💦")
) {
crearMensaje("🏆GANASTE!!🏆");
vidasEnemigo--
spanVidasEnemigo.innerHTML = vidasEnemigo
;
} else {
crearMensaje("😢 PERDISTE No te Desanimes 😢")
vidasJugador--
spanVidasJugador.innerHTML = vidasJugador;
;
}
revisarVidas()
}
Y yo que estaba reiniciando todo manualmente para luego el profe mostrar que se hacia con una sola linea 😦 jsjsj
Adicionalmente, para controlar la activacion de los botones, se puede crear una función que reciba como parametro true o false. True para desactivarlos, false para activarlos.
/**
* Cambia el estado de los botones de ataque, si están habilitados los deshabilita y viceversa.
*/
function estaDesactivadoBotonesAtaque(estado) {
botonFuego.disabled = estado;
botonAgua.disabled = estado;
botonTierra.disabled = estado;
}
Me quedo asi, al pausar la clase fui a buscar documentacion y puesss, asi quedo 😄
function validacionVidas() {
if (vidasIA == 0) {
mensajeFinal("¡Ganaste el Combate!")
apagarBotones()
} else if (vidasPlayer == 0) {
mensajeFinal("Perdiste...")
apagarBotones()
}
}
function apagarBotones() {
let btnFire = document.getElementById("btn-fire")
btnFire.disabled = true
let btnWater = document.getElementById("btn-water")
btnWater.disabled = true
let btnEarth = document.getElementById("btn-earth")
btnEarth.disabled = true
}
Pensé que iba a hacer una nueva función donde volviera a poner los valores iniciales de las vidas, deschequeara la mascota seleccionada y borrara el historial de combate pero mandar a recargar la página se ve mucho más práctico XD
Soy nuevo en Programación. Este es mi primer curso. Como no tenia el conocimiento, busque en mi navegador, “¿Cómo recargar la página con código JS?” y me salió el código: window.location.reload() y Listo!!
¡Nunca paren de aprender! Animo!!
let ataquejugador;
let ataquealeatorioenemigo;
let vidajugador=3;
let vidaenemigo=3;
function cargarpagina(){
let botonMascotaJugador=document.getElementById('boton_mascota');
botonMascotaJugador.addEventListener('click',seleccionarMascotaJugador);
let botonfuego=document.getElementById('boton-fuego');
botonfuego.addEventListener('click',ataquefuego);
let botonagua=document.getElementById('boton-agua');
botonagua.addEventListener('click',ataqueagua);
let botontierra=document.getElementById('boton-tierra');
botontierra.addEventListener('click',ataquetierra);
let boton_reiniciar=document.getElementById('boton-reiniciar');
boton_reiniciar.addEventListener('click',reiniciarjuego);
}
function seleccionarMascotaJugador(){
let inputhipodoge=document.getElementById('hipodoge');
let inputcapipepo=document.getElementById('capipepo');
let inputratigueya=document.getElementById('ratigueya');
let nombre_tumascota=document.getElementById('nombre-tumascota');
if (inputhipodoge.checked){
nombre_tumascota.innerHTML='Hipodoge';
}else if(inputcapipepo.checked){
nombre_tumascota.innerHTML='Capipepo';
}else if(inputratigueya.checked){
nombre_tumascota.innerHTML='Ratigueya';
}else{
alert('No has seleccionado ninguna mascota');
}
seleccionarmascotaenemigo();
}
function aleatorio(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
function seleccionarmascotaenemigo(){
let nummascotaenemigo=aleatorio(1,3);
let spammascotaenemigo=document.getElementById('nombre-mascotaenemigo');
if (nummascotaenemigo==1){
spammascotaenemigo.innerHTML='Hipodoge';
}else if (nummascotaenemigo==2){
spammascotaenemigo.innerHTML='Capipepo';
}else{
spammascotaenemigo.innerHTML='Ratigueya';
}
}
function ataquefuego(){
ataquejugador='FUEGO';
//alert('Escogiste atacar con: '+ ataquejugador +' Enemigo escogio: '+ aleatorioenemigo());
crearmensaje();
}
function ataqueagua(){
ataquejugador='AGUA';
//alert('Escogiste atacar con: '+ ataquejugador+' Enemigo escogio: '+ aleatorioenemigo());
crearmensaje();
}
function ataquetierra(){
ataquejugador='TIERRA';
//alert('Escogiste atacar con: '+ ataquejugador+' Enemigo escogio: '+ aleatorioenemigo());
crearmensaje();
}
function aleatorioenemigo(){
let numaleatorioenemigo=aleatorio(1,3);
if(numaleatorioenemigo==1){
ataquealeatorioenemigo='FUEGO';
}else if(numaleatorioenemigo==2){
ataquealeatorioenemigo='AGUA';
}else{
ataquealeatorioenemigo='TIERRA';
}
return ataquealeatorioenemigo;
}
function ataque(){
let span_vidajugador=document.getElementById('spanvidamascota')
let span_vidaenemigo=document.getElementById('spanvidaenemigo');
if(ataquejugador==ataquealeatorioenemigo){
return 'Es un empate';
}else if(ataquejugador=='AGUA' && ataquealeatorioenemigo=='FUEGO'){
vidaenemigo--;
span_vidaenemigo.innerHTML=vidaenemigo;
return 'Ganaste';
}else if(ataquejugador=='FUEGO' && ataquealeatorioenemigo=='TIERRA'){
vidaenemigo--;
span_vidaenemigo.innerHTML=vidaenemigo;
return 'Ganaste';
}else if(ataquejugador=='TIERRA' && ataquealeatorioenemigo=='AGUA'){
vidaenemigo--;
span_vidaenemigo.innerHTML=vidaenemigo;
return 'Ganaste';
}else{
vidajugador--;
span_vidajugador.innerHTML=vidajugador;
return 'Perdiste';
}
}
function crearmensaje(){
let sectionmensaje=document.getElementById('mensajes');
let parrafo=document.createElement('p');
parrafo.innerHTML='Escogiste atacar con: '+ ataquejugador+' Enemigo escogio: '+ aleatorioenemigo()+' - '+ataque() ;
sectionmensaje.appendChild(parrafo);
revisarvidas();
}
function revisarvidas(){
if(vidaenemigo==0){
mensajefinal("--FELICIDADES GANASTE- EL JUEGO HA TERMINADO--");
disabledbotones();
}else if(vidajugador==0){
mensajefinal("--LO SIENTO . PERDISTE- EL JUEGO HA TERMINADO--");
disabledbotones();
} else {
mensajefinal("--EL JUEGO CONTINUA--");
}
}
function mensajefinal(resultadofinal){
let sectionmensaje=document.getElementById('mensajes');
let parrafo=document.createElement('p');
parrafo.innerHTML=resultadofinal;
sectionmensaje.appendChild(parrafo);
}
function disabledbotones(){
let botonfuego=document.getElementById('boton-fuego');
botonfuego.disabled=true;
let botonagua=document.getElementById('boton-agua');
botonagua.disabled=true;
let botontierra=document.getElementById('boton-tierra');
botontierra.disabled=true;
}
function reiniciarjuego(){
location.reload();
}
window.addEventListener('load',cargarpagina);```
location.reload() --> recarga la pagina web
disable --> atributo que desabilita elemento
También de la importancia de conocer bien la herramienta, me estaba imaginando una lógica más complicada para que no se continuara restando las cifras. como con un while y colocando un mensaje reinicia el juego algo así 🙆♂️
Le agrege además del boton de reiniciar uno de terminar y así quedó el código
<code>
```function iniciarJuego() {
let botonMascotaJugador = document.getElementById ("boton-mascota")
botonMascotaJugador.addEventListener("click",seleccionarMascotaJugador)
let botonFuego = document.getElementById ("boton-fuego")
botonFuego.addEventListener("click",ataqueFuego)
let botonAgua = document.getElementById ("boton-agua")
botonAgua.addEventListener("click",ataqueAgua)
let botonTierra = document.getElementById ("boton-tierra")
botonTierra.addEventListener("click",ataqueTierra)
let botonAire = document.getElementById ("boton-aire")
botonAire.addEventListener("click",ataqueAire)
let botonReiniciar = document.getElementById("boton-reiniciar")
botonReiniciar.addEventListener("click", reiniciarJuego)
let botonTerminar = document.getElementById("boton-terminar")
botonTerminar.addEventListener("click", terminarJuego)
}
<code>
function reiniciarJuego(){
location.reload()
}
function terminarJuego(){
let terminarJuego = document.getElementById("mensaje final")
let parrafo = document.createElement("p")
parrafo.innerHTML = "¡Hasta la próxima!😊"
terminarJuego.appendChild(parrrafo)
<code> el HTML
``` <section id ="Reiniciar">
<h2><p style="color:#f0b850";>¿Quieres jugar otra vez?🎉</p></h2>
<button id= "boton-reiniciar">¡Empezar!</button>
<button id= "boton-terminar"> Quizás Mas tarde 🤐</button>
</section>
<section id="mensaje final">
</section>
``
Yo lo colocaría en la función revisarVidas cuando ganes o pierdas, inhabilitaría los botones y enviaría un mensaje que debe reiniciar el Juego.
1:36 Yo crearía una función aparte, que cree y configure el botón de reiniciar.
En la función revisar vidas podría quedar el código para reiniciar el juego
Yo creería que se puede realizar el ejercicio después de la función revisarVidas, porque determina el final de los ataques
aggrege un nivel extra de seguiridad antes de iniciar el combate, ya que si inpeccionamos elemento al HTMl y quitamos la propiedad “disabled”, aun se puede atacar, y no queremos eso 😃 , asi que de esta manera se validamos, si no hay vidas, no se ejecute el codigo de combate , y hago un reinicio forzado del juego.
if(vidasEnemigo == 0 || vidasJugador ==0){
alert("EL JUEGO YA FINALIZO, REINICIAR")
reiniciarJuego()
Y yo que en las primeras clases donde empezamos a escribir el HTML, le puse una etiqueta “a”, con el atributo “href”, con el parámetro del index.html dentro del botón de reinicio. jajaja Era lo único que sabía en ése momento, no me maten jaja
woooo, esto es genial, se me ha complicado un pero, cada vez me entusiasmo más
Ahí va quedando 😉
Es bueno buscar la documentación como nos enseño el profe Juan, yo busque en google y trate de entender el problema, aunque no es fácil , pero con la práctica lo vamos a lograr!!
agregué el botón reiniciar:
let botonReiniciar = document.getElementById('boton-reiniciar')
botonReiniciar.addEventListener('click', reiniciar)
creé la función reiniciar:
function reiniciar(){
let spanVidasJugador = document.getElementById('vidas-jugador')
let spanVidasEnemigo = document.getElementById('vidas-enemigo')
vidasJugador = 3
vidasEnemigo = 3
spanVidasJugador.innerHTML = vidasJugador
spanVidasEnemigo.innerHTML = vidasEnemigo
}
y la inicié en la función revisar vidas:
function revisarVidas(){
if (vidasJugador == 0){
crearMensajeFinal('Lo siento PERDISTE :(')
reiniciar()
}
else if (vidasEnemigo == 0){
crearMensajeFinal('Felicitaciones GANASTE :)')
reiniciar()
}
}
Seguimos con la vida al máximo
En la pausa: Yo colocaría el mensaje en la anterior función que realizamos donde aparece el mensaje final.
Es increible el codigo que utilizo el profesor Juan para desabilitar los botones una vez el juego haya terminado. Despues que haya usado el codigo para desabilitar los botones del juego.
Así lo hice yo, me tocó buscar la documentación del location.reload() pero… ¡Funciona! 😄
let ataqueJugador = ""
let ataqueRival = ""
let vidasJugador = 3
let vidasRival = 3
function iniciarJuego() {
let botonMascotaJugador = document.getElementById("boton-seleccionar-mascota")
botonMascotaJugador.addEventListener("click", seleccionarMascotaJugador)
let botonFuego = document.getElementById("boton-fuego")
botonFuego.addEventListener("click", ataqueFuego)
let botonAgua = document.getElementById("boton-agua")
botonAgua.addEventListener("click", ataqueAgua)
let botonPlanta = document.getElementById("boton-planta")
botonPlanta.addEventListener("click", ataquePlanta)
let botonReiniciar = document.getElementById("boton-reiniciar")
botonReiniciar.addEventListener("click", reiniciarJuego)
}
function seleccionarMascotaJugador() {
let inputFloxi = document.getElementById("floxi")
let inputEchalot = document.getElementById("echalot")
let inputColemani = document.getElementById("colemani")
let spanMascotaJugador = document.getElementById("mascota-jugador")
if (inputFloxi.checked) {
spanMascotaJugador.innerHTML = "Floxi"
} else if (inputEchalot.checked) {
spanMascotaJugador.innerHTML = "Echalot"
} else if (inputColemani.checked) {
spanMascotaJugador.innerHTML = "Colemani"
} else {
alert("NO SELECCIONASTE NADA")
} seleccionarMascotaRival()
}
function seleccionarMascotaRival() {
let spanMascotaRival = document.getElementById("mascota-rival")
let eleccionRival = random(1,3)
if (eleccionRival == 1) {
spanMascotaRival.innerHTML = "Floxi"
} else if (eleccionRival == 2) {
spanMascotaRival.innerHTML = "Echalot"
} else {
spanMascotaRival.innerHTML = "Colemani"
}
}
function ataqueFuego() {
if (vidasJugador > 0 && vidasRival > 0) {
ataqueJugador = "🔥"
ataqueAleatorio()
} else {
crearMensajeFinDelJuego()
}
}
function ataqueAgua() {
if (vidasJugador > 0 && vidasRival > 0) {
ataqueJugador = "💧"
ataqueAleatorio()
} else {
crearMensajeFinDelJuego()
}
}
function ataquePlanta() {
if (vidasJugador > 0 && vidasRival > 0) {
ataqueJugador = "🌱"
ataqueAleatorio()
} else {
crearMensajeFinDelJuego()
}
}
function ataqueAleatorio() {
let ataqueRandom = random(1,3)
if (ataqueRandom == 1) {
ataqueRival = "🔥"
} else if (ataqueRandom == 2) {
ataqueRival = "💧"
} else {
ataqueRival = "🌱"
} crearMensaje()
}
function crearMensaje() {
let sectionMensajes = document.getElementById("mensajes")
let parrafo = document.createElement("p")
parrafo.innerHTML = "¡Tu mascota atacó con " + ataqueJugador + "! - ¡La mascota del rival atacó con " + ataqueRival + "! - " + decidirGanador()
sectionMensajes.appendChild(parrafo)
checkVidas()
}
function crearMensajeFinal(resultadoFinal) {
let sectionMensajes = document.getElementById("mensajes")
let parrafo = document.createElement("p")
parrafo.innerHTML = resultadoFinal
sectionMensajes.appendChild(parrafo)
}
function crearMensajeFinDelJuego() {
let sectionMensajes = document.getElementById("mensajes")
let parrafo = document.createElement("p")
parrafo.innerHTML = "¡Hey! El juego terminó, si quieres jugar de nuevo debes presionar el botón de reiniciar. 😉"
sectionMensajes.appendChild(parrafo)
}
function reiniciarJuego() {
location.reload()
}
function decidirGanador() {
let resultado = ""
let spanVidaJugador = document.getElementById("vida-mascota-jugador")
let spanVidaRival = document.getElementById("vida-mascota-rival")
if (ataqueJugador == ataqueRival) {
resultado = "¡EMPATE! 😐"
} else if ((ataqueJugador == "🔥" && ataqueRival == "🌱") || (ataqueJugador == "💧" && ataqueRival == "🔥") || (ataqueJugador == "🌱" && ataqueRival == "💧")) {
resultado = "¡GANASTE! 🥳"
vidasRival--
spanVidaRival.innerHTML = vidasRival
} else {
resultado = "¡PERDISTE! 😭"
vidasJugador--
spanVidaJugador.innerHTML = vidasJugador
} return resultado
}
function checkVidas() {
if (vidasJugador == 0) {
crearMensajeFinal("¡Suerte para la próxima! Has perdido... 😢")
} else if (vidasRival == 0) {
crearMensajeFinal("¡Felicidades! ¡Has ganadooo! 😍")
}
}
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
window.addEventListener("load", iniciarJuego)
Yo escribiría el código para reiniciar el juego en la función combate.
cuando se recarga la página, y no se selecciona mascota, luego del alert, lo que hace el juego es avanzar hacia la seccion de atacar. para que ello no suceda, reutilizando la funcion Reiniciar, la coloque abajo del ultimo else dentro de la funcion seleccionarMascotaJugador. De esa forma, si no se elige una mascota, arroja la alert y se reinicia el juego
function seleccionarMascotaJugador() {
let sectionSeleccionarMascota = document.getElementById(“Seleccionar-Mascota”)
sectionSeleccionarMascota.style.display = “none”
let sectionSeleccionarAtaque = document.getElementById("Seleccionar-Ataque")
sectionSeleccionarAtaque.style.display = "block"
let inputHipodoge = document.getElementById ("hipodoge")
let inputCapipepo = document.getElementById ("capipepo")
let inputRatigueya = document.getElementById ("ratigueya")
let spanMascotaJugador = document.getElementById("mascota-jugador")
if (inputHipodoge.checked){
spanMascotaJugador.innerHTML = "Hipodoge"
} else if ( inputCapipepo.checked){
spanMascotaJugador.innerHTML = "Capipepo"
} else if( inputRatigueya.checked) {
spanMascotaJugador.innerHTML = "Ratigueya"
} else {
alert ("Selecciona Una Mascota")
reiniciarJuego()
}
seleccionarMascotaEnemigo()
}
aclaro: nose de programación aún pero se me ocurrió, probé y paso jajajja
Asi lo hice 🙂
const reiniciarJuego = () => {
window.location.reload();
}
Después de la función de revisarVidas es donde colocaría la función para reiniciar el juego.
Codificando la funcionalidad de reiniciar el juego
Recargar la pagina con location.reload()
Desabilitar botones con el atributo disabled
Desactivando botones desde javascript element.disabled = true
Se debería detallar en la función y llamarla en la otra función crearMensajeFinal
siguiente de la function crearMensajeFinal,
y asi determinar el resultado y tome la function de detener el marcador de vidas.
Hola, lo hice de esta forma, funciona pero no se si es lo mejor jejejeje
function reiniciarJuego(){
location.reload();
}
A forma de criterio constructivo, estaria bueno poder iniciar con los botones de ataque en disabled TRUE y que pasen a disabled FALSE cuando ya se elija las mascotas. Del caso contrario no estariamos obligando a el usuario a que elija la mascota y este va a poder atacar sin elegir.
A modo de sugerencia…
A menos que eso sea una tarea para nosotros 😐
para mi en la function revisar vidas
yo en vez de utilizar el location reload, reinicie todas las variables que utilize para validar que se haya acabado la partida, otra que utilize para mostrar en que turno estoy y otra para que no pueda elegir una mascota despues de haver una elegido una:
function reiniciar()
{
contador_vida_mascota_jugador = 3;//resetea los contadores de las vidas
contador_vida_mascota_enemigo = 3;
turno = 1;//resetea el turno inicial
seleccionar = 1;//variable para que no vuelva a seleccionar otro personaje salvo a reset
fin = 0;//resetea el fin del juego para que tengas que presionar resetear
alert("Reiniciando");
let section_mensajes = document.getElementById("mensajes");
section_mensajes.innerHTML = " ";
}
Esta es mi opción para el boton de reinicio. Todavia no vi el método nuevo del profe. Me falta aun, borrar los mensajes de las batallas…
function reiniciarJuego (){
let spanVidasJugador = document.getElementById(‘vidas-jugador’)
let spanVidasEnemigo = document.getElementById(‘vidas-enemigo’)
vidasJugador = 3
vidasEnemigo = 3
spanVidasEnemigo.innerHTML = vidasEnemigo
spanVidasJugador.innerHTML = vidasJugador
}
Lo que yo hice fue que en la función reservas vidas al final de cada condición inserte el location.reload() y así cada vez que pierdo o gano se reinicia automáticamente
function revisarvidas(){
if (VidasRival == 0){
alert("FELICIDADES HAS GANADO!! 🎇✨🎉🎊🎆")
crearMensajefinal("FELICIDADES HAS GANADO!! 🎇✨🎉🎊🎆")
location.reload()
} else if(VidasPropia == 0){
alert("HAS PERDIDO 😥😥")
crearMensajefinal("HAS PERDIDO 😥😥")
location.reload()
}
}
lo hice solo un poco diferente
function combate(){
resultado = ''
let spamvidasJugador = document.getElementById('vidas-jugador')
let spamvidasEnemigo = document.getElementById('vidas-ememigo')
if (ataqueJugador == ataqueEnemigo) {
resultado = 'EMPATASTE'
} else if ((ataqueJugador == 'FUEGO' && ataqueEnemigo == 'TIERRA')) {
resultado = 'GANASTE'
spamvidasEnemigo.innerHTML = vidasEnemigo = vidasEnemigo -1
} else if ((ataqueJugador == 'AGUA' && ataqueEnemigo == 'FUEGO')) {
resultado = 'GANASTE'
spamvidasEnemigo.innerHTML = vidasEnemigo = vidasEnemigo -1
} else if ((ataqueJugador == 'TIERRA' && ataqueEnemigo == 'AGUA')) {
resultado = 'GANASTE'
spamvidasEnemigo.innerHTML = vidasEnemigo = vidasEnemigo -1
} else {
resultado = 'PERDISTE'
spamvidasJugador.innerHTML = vidasJugador = vidasJugador -1
}
crearMensaje()
}
function crearMensaje() {
let sectionMensajes = document.getElementById('mensajes')
let parrafo = document.createElement('p')
parrafo.innerHTML = 'Tu mascota atacó con ' + ataqueJugador + ', las mascota del enemigo atacó con ' + ataqueEnemigo +' '+ resultado
sectionMensajes.appendChild(parrafo)
revisarVidas()
}
function revisarVidas() {
if (vidasEnemigo == 0) {
crearMensajeFinal('FELICITACIONES!!!!! Ganaste ')
} else if (vidasJugador == 0) {
crearMensajeFinal('LO SIENTO MUCHO!!!! Perdiste ')
}
}
function crearMensajeFinal(resultadoFinal) {
let seccion = document.getElementById('mensajes')
let parrafo = document.createElement('p')
parrafo.innerHTML = resultadoFinal;
seccion.appendChild(parrafo);
document.getElementById('boton-fuego').disabled = true
document.getElementById('boton-agua').disabled = true
document.getElementById('boton-tierra').disabled = true
}
Reutilicé lo que nos enseñó para inhabilitar los botones también al elegir la mascota, justo después de seleccionar a tu mascota ya no puedes cambiarla
lo agregué en la función de seleccion de la mascota del enemigo
function seleccionarMascotaEnemigo() {
let mascotaAleatoria = aleatorio(1,3)
let spanMascotaEnemigo = document.getElementById('mascota-enemigo')
if(mascotaAleatoria ==1) {
spanMascotaEnemigo.innerHTML = 'Hipodoge'
}
else if(mascotaAleatoria ==2) {
spanMascotaEnemigo.innerHTML = 'Capipepo'
}
else {
spanMascotaEnemigo.innerHTML = 'Ratigueya'
}
let botonMascotaJugador = document.getElementById('boton-mascotas')
botonMascotaJugador.disabled = true
}
como los botones ya fueron extraidos del document en las lineas de arriba, solo puse los nombres de los botones con su propiedad .disabled = true
<code>
botonMascota.disabled = true
botonAgua.disabled = true
botonFuego.disabled = true
botonTierra.disabled = true
</code>
Yo lo que hice fue mover de lugar las variables de los botones a la función seleccionarMascotaEnemigo()
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?