Fundamentos de Programaci贸n

1

Bienvenida a Platzi: 驴qu茅 necesitas para tomar el curso?

2

驴C贸mo aprender programaci贸n?

3

Crea tu primer sitio web

4

Sitios web con HTML

5

Estructura de 谩rbol en HTML

6

Instalando tu primer editor de c贸digo

7

C贸mo declarar variables y usar prompt

8

Algoritmo de piedra, papel o tijera

9

Algoritmo avanzado de piedra, papel o tijera

10

Aleatoriedad

11

Refactor del c贸digo usando funciones

12

Ciclos

13

Gana 3 veces

14

Archivos de HTML y JavaScript

15

驴Qu茅 es el DOM?

Quiz: Fundamentos de Programaci贸n

Desarrollando un juego con HTML y JavaScript

16

Maquetaci贸n con HTML

17

Secci贸n de elegir mascota

18

驴D贸nde ubicar la etiqueta script? Conectando HTML con JavaScript

19

Escuchando eventos con JavaScript

20

addEventListener

21

Manipulaci贸n del DOM

22

Enemigos aleatorios

23

Ataques en JavaScript

24

Ataques aleatorios del enemigo

25

Imprimiendo ataques del enemigo

26

驴Ganaste, perdiste o empataste?

27

Tablas de verdad

28

Creando el contador de vidas

29

驴Qui茅n gan贸 el juego?

30

Reiniciando el juego

31

Ocultando elementos HTML con JS para mejorar la UX del juego

Quiz: Desarrollando un juego con HTML y JavaScript

Estilos con CSS

32

Anatom铆a de CSS

33

Tipos de display

34

Flexbox

35

Modelo de caja

36

Im谩genes para los Mokepones

37

Estilos del bot贸n

38

Adaptando HTML al dise帽o del juego

39

Layout: t铆tulo y ataques

40

Adaptando JavaScript al dise帽o del juego

41

CSS Grid

42

Responsive Design

43

Detalles finales

Quiz: Estilos con CSS

Optimizaci贸n de c贸digo

44

Revisi贸n de c贸digo

45

Don't repeat yourself (DRY)

46

Clases y objetos

47

Clases y objetos de Mokepon

48

Arrays o arreglos

49

Objetos vs. arreglos

50

Ciclos: manipulando el DOM con iteradores

51

Declaraci贸n lenta de variables

52

Una sola fuente de la verdad

53

Mascotas aleatorias con arreglos

54

Ataques din谩micos por cada mascota: extraer

55

Renderizado din谩mico en HTML

56

Eventos de click din谩micos

57

Secuencia de ataques del enemigo

58

Iniciando el combate

59

Resolviendo el reto de condicionales

60

Optimizando el frontend del juego

Quiz: Optimizaci贸n de c贸digo

Mapa con canvas

61

Introducci贸n a canvas: dibujando con JavaScript

62

Moviendo a Capipepo hacia la derecha

63

Movimiento hacia todas las direcciones

64

Movimientos con el teclado

65

Im谩genes y personajes de fondo

66

M茅todos en las clases

67

Obst谩culos y colisiones

68

Combate entre mokepones colisionados

69

Mapa responsive

70

Botones bonitos y viewport

Quiz: Mapa con canvas

Backend: videojuego multijugador

71

驴Qu茅 es backend?

72

Instalaci贸n de Node.js y NPM

73

Terminal de comandos y Node.js

74

Servidor web con Express.js

75

HTTP, localhost, servidores y puertos

76

Express.js y fetch: API REST con JavaScript

77

JSON y POST: mokepon online

78

Transmisi贸n de coordenadas

79

Mokepones din谩micos en el mapa

80

Optimizando el mapa del juego

81

Batalla entre jugadores

82

Consumiendo la API de ataques del enemigo

Quiz: Backend: videojuego multijugador

Pr贸ximos pasos

83

Probando el juego en varios dispositivos

84

驴Y ahora qu茅 curso tomar?

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Ataques aleatorios del enemigo

24/84
Recursos

Aportes 183

Preguntas 121

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

A este punto ya se va complicando un poco el tema con tanto codigo. Pero no me rendire ya quiero ver este videojuego terminado.

Me adelant茅 a realizar la l贸gica de la funci贸n del ataque enemigo y me siento re feliz de que s铆 me sali贸 parecida a la del profesor, muy muy parecida. Me siento incre铆ble de que cada vez voy mejorando 馃槃

hagan los personajes asi jajaajaja

La comunidad es tan hermosa al compartir sus cosas, pero admito que me pone ansiosa ver como cada uno le agrega su toque personalizado a su c贸digo mientras que yo apenas le voy llevando el ritmo al profe jsjs :鈥(

A mi se me ocurri贸 utilizar una variable global de tipo arreglo (ataquesDisponibles), en la cual almacen茅 los ataques disponibles, para que luego, dentro de la funci贸n ataqueAleatorioEnemigo(), se le asignara a otra variable global (ataqueEnemigo) el ataque del enemigo de manera aleatoria.

let ataquesDisponibles = ["FUEGO 馃敟", "AGUA 馃挧", "TIERRA 馃尡"]
let ataqueJugador
let ataqueEnemigo


function iniciarJuego() {
    //variables
    let botonMascotaJugador = document.getElementById("boton-mascota");

    //eventos
    botonMascotaJugador.addEventListener("click", seleccMascotaJugador);

    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)

}

//FUNCIONES PARA MASCOTAS

function seleccMascotaJugador() {
    let inputHipodoge = document.getElementById("hipodoge");
    let inputCapipepo = document.getElementById("capipepo");
    let inputRatigueya = document.getElementById("ratigueya");
    let mascotaSeleccJugador = document.getElementById("mascota-jugador");
    let mascotaActualJugador = "";

    if (inputHipodoge.checked) {
        mascotaActualJugador = "Hipodoge";
        alert("Has a seleccionado a " + mascotaActualJugador);
        mascotaSeleccJugador.innerHTML = mascotaActualJugador;
    } else if (inputCapipepo.checked) {
        mascotaActualJugador = "Capipepo";
        alert("Has a seleccionado a " + mascotaActualJugador);
        mascotaSeleccJugador.innerHTML = mascotaActualJugador;
    } else if (inputRatigueya.checked) {
        mascotaActualJugador = "Ratig眉eya";
        alert("Has a seleccionado a " + mascotaActualJugador);
        mascotaSeleccJugador.innerHTML = mascotaActualJugador;
    } else {
        alert("Selecciona tu mascota");
    }

    seleccMascotaenemigo()
}

function seleccMascotaenemigo() {
    let ataqueAleatorio = aleatorio(1, 3)
    let mascotaSeleccEnemigo = document.getElementById("mascota-enemigo");
    let mascotaActualEnemigo = "";

    if (ataqueAleatorio == 1) {
        //Hipodoge
        mascotaActualEnemigo = "Hipodoge"
        mascotaSeleccEnemigo.innerHTML = mascotaActualEnemigo;
    } else if (ataqueAleatorio == 2) {
        //Capipepo
        mascotaActualEnemigo = "Capipepo"
        mascotaSeleccEnemigo.innerHTML = mascotaActualEnemigo;
    } else {
        //Ratig眉eya
        mascotaActualEnemigo = "Ratig眉eya"
        mascotaSeleccEnemigo.innerHTML = mascotaActualEnemigo;
    }
}

function aleatorio(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

//FUNCIONES PARA ATAQUES

function ataqueFuego() {
    ataqueJugador = "FUEGO 馃敟"
    alert(ataqueJugador)
    let spanAtaqueJugador = document.getElementById("ataque-jugador")
    spanAtaqueJugador.innerHTML = ataqueJugador

    ataqueAleatorioEnemigo()
}

function ataqueAgua() {
    ataqueJugador = "AGUA 馃挧"
    alert(ataqueJugador)
    let spanAtaqueJugador = document.getElementById("ataque-jugador")
    spanAtaqueJugador.innerHTML = ataqueJugador

    ataqueAleatorioEnemigo()
}

function ataqueTierra() {
    ataqueJugador = "TIERRA 馃尡"
    alert(ataqueJugador)
    let spanAtaqueJugador = document.getElementById("ataque-jugador")
    spanAtaqueJugador.innerHTML = ataqueJugador

    ataqueAleatorioEnemigo()
}

function ataqueAleatorioEnemigo() {
    ataqueEnemigo = ataquesDisponibles[Math.floor(Math.random() * ataquesDisponibles.length)]
    let spanAtaqueEnemigo = document.getElementById("ataque-enemigo")
    spanAtaqueEnemigo.innerHTML = ataqueEnemigo
}

window.addEventListener("load", iniciarJuego); //otra manera de llamar al script despu茅s de que se cargue todo el HTML
//la funci贸n iniciarJuego se carga cuando ya todo el contenido est谩 cargado.

Aqu铆 mi manera dejar saber al usuario el ataque del enemigo despu茅s de elegir su ataque.

Un detalle con los botones de ataque es que deberian habilitarse solamente cuando escojamos nuestra mascota.
Esto es muy facil, en el html cuando creamos los botones, le agregamos la propiedad disabled, as铆 estar谩n deshabilitados en un inicio.

Ahora nos vamos al javascript, por el momento tenemos la logica de los botones en la funci贸n iniciar juego, estas lineas las podemos mover a una funci贸n nueva llamada habilitarBotonesAtaque(), dicha funci贸n la utilizariamos al final de la funci贸n seleccionarMascotaJugador().
En la funci贸n que creamos, vamos a ir por cada bot贸n habilitandolo con la propiedad .disabled (la misma que colocamos en el html). Le colocamos que su valor sea false, ya que en un primer momento su valor es true. Nos quedaria de la siguiente forma:

Todo el c贸digo con el nuevo orden que le dimos quedaria as铆:

Tambi茅n tenemos otra forma de escribir las funciones llamada 鈥Funci贸n Flecha鈥 que normalmente se utiliza con funciones cortas para que el c贸digo se vea mas compacto. Ambas formas funcionan pero 茅sta 煤ltima tiene algunas limitaciones. mas informaci贸n al respecto aqu铆: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Functions/Arrow_functions

Tambi茅n para aquellos que tengan un nivel de ingl茅s intermedio es bueno para practicar que lo traduscan todo al ingl茅s (nombres de variable, funciones, etc). de esa manera se van acostumbrando para cuando les toque leer el codigo de alguien m谩s (lo que seg煤n me dijeron pasa seguido).
Les dejo como va mi c贸digo hasta ahora y cualquier correci贸n y cr铆tica constructiva sobre como mejorarlo es bienvenida.

Este es mi aporte, me funciona perfectamente 馃槃}

function ataqueFuego() {
    ataqueJugador = 'FUEGO'
    alert(ataqueJugador)
    ataqueEnemigo()
}
function ataqueAgua() {
    ataqueJugador = "AGUA"
    alert(ataqueJugador)
    ataqueEnemigo()
}
function ataqueTierra() {
   ataqueJugador = 'TIERRA' 
   alert(ataqueJugador)
   ataqueEnemigo()
}


function ataqueEnemigo(){
    let variableAtaqueEnemigo = aleatorio(1,3)

    if (variableAtaqueEnemigo == 1) {
        alert('El ataque de tu enemigo es de Fuego')
    }else if(variableAtaqueEnemigo == 2){
        alert('El ataque de tu enemigo es de Agua')
    }else {
        alert('El ataque de tu enemigo es de Tierra')
    }
    
}

Hola comunidad, 驴c贸mo est谩n?
Considero m谩s efectivo realizar el proyecto Mokep贸n con diferente tem谩tica pero con misma l贸gica.
Es por eso que me he puesto a la tarea de realizar un juego algo diferente.
He aqu铆 mis avances en el navegador

tambi茅n un poco de mi c贸digo:

Html:

<<!DOCTYPE html>
<html>
    <head>
        <meta charset="uft-8"/>
        <title>Leyends of warriors</title>
        <script src="./Js/Leyends of warriors.js"></script>
    </head>
    <body>
        <h1>隆Leyends of warriors! 鈿旓笍</h1>

            <!--S. SELECCIONAR PERSONAJE-->
        <section id="Seleccionar-guerrero"> 
            <h2>Opta por el guerrero de tu preferencia:</h2>

            <label for="ballista">Ballista</label>
            <input type="radio" name="guerrero" id="ballista"/>

            <label for="espadachin">Espadachin</label>
            <input type="radio" name="guerrero" id="espadachin"/>

            <label for="infante">Infante</label>
            <input type="radio" name="guerrero" id="infante"/>

            <button id="boton-guerrero">Poseer</button>
        </section>

            <!--S. ATAQUES-->
        <section id="Seleccionar-arremetida">
            <h2>Opta por la arremetida de tu preferencia:</h2>
            
            <p>Tu guerrero <span id="guerrero-jugador"></span> posee <span>3</span> vidas</p>
            <p>El guerrero enemigo <span id="guerrero-enemigo"></span> posee <span>3</span> vidas</p>

            <p>
                <button id="boton-ballesta">Ballesta 馃徆</button>
                <button id="boton-espada">Espada 馃棥</button>
                <button id="boton-hacha">Hacha 馃獡</button>
            </p>
        </section>

        <section id="avisos">
            <p>Tu guererto ha atacado con Ballesta, el guerrero enemigo ha atacado con Espada - 隆la victoria es tuya! 馃帄</p>
        </section>

        <section id="reiterar">
            <button id="boton-reiterar">隆Vuelve a luchar!</button>
        </section>
    </body>
</html>> 

Javascript

<let arremetidaJugador
let arremetidaEnemigo

function iniciarJuego(){
    let botonGuerreroJugador = document.getElementById("boton-guerrero")
    botonGuerreroJugador.addEventListener("click", poseerGuerreroJugador)

    let botonBallesta = document.getElementById("boton-ballesta")
    botonBallesta.addEventListener("click", arremetidaBallesta)

    let botonEspada = document.getElementById("boton-espada")
    botonEspada.addEventListener("click", arremetidaEspada)

    let botonHacha = document.getElementById("boton-hacha")
    botonHacha.addEventListener("click", arremetidaHacha)
}

function poseerGuerreroJugador() {
    let inputBallista = document.getElementById("ballista")
    let inputEspadachin = document.getElementById("espadachin")
    let inputInfante = document.getElementById("infante")
    let spanGuerreroJugador = document.getElementById("guerrero-jugador")

    if (inputBallista.checked) {
        spanGuerreroJugador.innerHTML = "Ballista"
    } else if (inputEspadachin.checked) {
        spanGuerreroJugador.innerHTML = "Espadachin"
    } else if (inputInfante.checked) {
        spanGuerreroJugador.innerHTML = "Infante"
    } else {
        alert("隆No pudes acudir a la batalla sin un guerrero!")
    }

     poseerGuerreroEnemigo()

}

function poseerGuerreroEnemigo() {
    let GuerreroAleatorio = aleatorio(1,3)
    let spanGuerreroEnemigo = document.getElementById("guerrero-enemigo")

    if (GuerreroAleatorio === 1) {
        spanGuerreroEnemigo.innerHTML = "Ballista"
    } else if (GuerreroAleatorio === 2){
        spanGuerreroEnemigo.innerHTML = "Espadachin"
    } else {
        spanGuerreroEnemigo.innerHTML = "Infante"
    }
}

function arremetidaBallesta() {
    arremetidaJugador = "Ballesta"
    arremetidaAleatoriaEnemigo()
}

function arremetidaEspada() {
    arremetidaJugador = "Espada"
    arremetidaAleatoriaEnemigo()
}

function arremetidaHacha() {
    arremetidaJugador = "Hacha"
    arremetidaAleatoriaEnemigo()
}

function arremetidaAleatoriaEnemigo() {
    let arremetidaAleatoria = aleatorio(1,3)

    if (arremetidaAleatoria == 1) {
        arremetidaEnemigo = "Ballesta"
    } else if (arremetidaAleatoria == 2) {
        arremetidaEnemigo = "Espada"
    } else {
        arremetidaEnemigo = "Hacha"
    }
}


function aleatorio(min, max){
    return Math.floor(Math.random() * (max - min + 1) + min)
}


window.addEventListener("load",iniciarJuego)> 

Espero que este proyecto pueda concluirse exitosamente, sin m谩s, gracias por llegar hasta el final. Espero que les guste. 馃槃

Ufff est谩 clase la tuve que repetir varias veces, no me arrojaba ning煤n resultado, al final, me di cuenta que no ten铆a declarada la variable global.

y pensar que hace un mes no sabia nada de codigos y empece en PLATZI , ahora entiendo lo que escriben en cada linea de codigo! no me atrevo aun a irme solo por el mar de los codigos! pero no me rendire y seguire aprendiendo un poco cada dia mas! NUNCA PAREMOS DE APRENDER

Alg煤n d铆a podr茅 hacer un aporte 馃槮 , por el momento estar茅 siguiendo las instrucciones de Juan 馃槃

Estuve un rato tratando de ver como resolver el minireto hasta que recorde una frase de cursos anteriores de 鈥淣o reinventar la rueda鈥 y fui a ver el codigo que habiamos hecho con Freddy y ahi continue con esa logica que me parecia bastante acertada, por suerte, quedo funcional el codigo
Le agregue un par de cosas para que en los alert diga que pokemon ataca pj
Siendo sincero, me gusta mas como lo hizo el profe, es mas agradable a la vista, me falta calle

let ataqueJugador
let pc = 0
//
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)
}

function seleccionarMascotaJugador () {
    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("No has elegido todavia...")
    }
    
    seleccionarMascotaEnemigo()

}

function seleccionarMascotaEnemigo() {
    let mascotaAleatorio = aleatorio(1, 3)
    let spanMascotaEnemigo = document.getElementById("mascota-enemigo")

    if(mascotaAleatorio == 1) {
        spanMascotaEnemigo.innerHTML = "Hipodoge"
    } else if(mascotaAleatorio == 2) {
        spanMascotaEnemigo.innerHTML = "Capipepo"
    } else {
        spanMascotaEnemigo.innerHTML = "Ratigueya"
    }

}

function aleatorio(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min)
}

function ataqueAleatorioEnemigo(enemigo) {
    resultado = ""
  
    if(enemigo == 1) {
        resultado = "Fuego"
    } else if(enemigo == 2) {
        resultado = "Agua"
    } else {
        resultado = "Tierra"
    }
    return resultado

}

function ataqueFuego() {
    ataqueJugador = "Fuego"
    let pc = aleatorio(1, 3)
    alert(ataqueJugador)
    alert(document.getElementById("mascota-enemigo").innerHTML + " ataca con: " + ataqueAleatorioEnemigo(pc)) 

}

function ataqueAgua() {
    ataqueJugador = "Agua"
    let pc = aleatorio(1, 3)
    alert(ataqueJugador)
    alert(document.getElementById("mascota-enemigo").innerHTML + " ataca con: " + ataqueAleatorioEnemigo(pc)) 

}

function ataqueTierra() {
    ataqueJugador = "Tierra"
    let pc = aleatorio(1, 3)
    alert(ataqueJugador)
    alert(document.getElementById("mascota-enemigo").innerHTML + " ataca con: " + ataqueAleatorioEnemigo(pc)) 
}

window.addEventListener("load", iniciarJuego)

es imposible entenderlo, tantas funciones muy complicado mantener encendido el cerebro 馃ぃ馃ぃ

![](

<code> 
function ataqueFuego(){
    ataqueJugador= 'FUEGO'
    alert(ataqueJugador)
    ataqueEnemigo() 
}
function ataqueAgua(){
    ataqueJugador= 'AGUA'
    alert(ataqueJugador)
    ataqueEnemigo()
}
function ataqueTierra(){
    ataqueJugador= 'TIERRA'
    alert(ataqueJugador)
    ataqueEnemigo()
}
function ataqueEnemigo(){
    let aAleatorio= ataqueAleatorio(1,3)
   
    if ( aAleatorio == 1 ){
       alert('ENEMIGO ATACO CON FUEGO')
    } else if ( aAleatorio == 2 ){
        alert('ENEMIGO ATACO CON AGUA')
    } else {
        alert('ENEMIGO ATACO CON TIERRA')
    }

}
function ataqueAleatorio(min,max){
    return Math.floor(Math.random()*(max-min+1)+min)
}

:D justo mi soluci贸n fue igual a la tuya y la funci贸n con el mismo nombre jaja

Yo lo hice de esta manera:

function ataqueEnemigo() {
    let ataqueAleatorio = aleatorio(1,3)
    let spanATAQUEENEMIGO = document.getElementById("ATAQUE-ENEMIGO")

    if (ataqueAleatorio == 1) {
        spanATAQUEENEMIGO.innerHTML = "FUEGO"
    } else if (ataqueAleatorio == 2) {
        spanATAQUEENEMIGO.innerHTML = "AGUA"
    } else if (ataqueAleatorio == 3) {
        spanATAQUEENEMIGO.innerHTML = "TIERRA"
    }
}

Estoy en este momento en la pausa de la clase.

Mi forma de hacer el ataque aleatorio del enemigo, fue creando una nueva funci贸n (function defensaEnemigo(){}). En esta funci贸n reutilizo la funci贸n aleatorio().

Me funciono, ac谩 les dejo el c贸digo:

function defensaEnemigo(){
    let defenEnemigo = ""
    defenEnemigo = aleatorio(1,30)
    
    if (defenEnemigo <= 10){
        alert(ataqueJugador + " Vs. 馃敟")

    }else if(defenEnemigo >=11 && defenEnemigo <= 20){
        alert(ataqueJugador + " Vs. 馃寠")
    }else{
        alert(ataqueJugador + " Vs. 馃尡")
    }
}

Les comento que para evitar escribir las condiciones y los valores m谩ximo y m铆nimo, hice un diccionario, y los n煤meros de la funci贸n aleatoria van a variar seg煤n la carga de los datos.

function seleccionarMascotaEnemigo() {
    let data = base[0]
    let mascotaAleatorio = aleatorio(data)
    let spanMascotaEnemigo = document.getElementById('mascota-enemigo')
    spanMascotaEnemigo.innerHTML= data[mascotaAleatorio]
}

function ataqueFuego() {
    ataqueJugador = 'FUEGO'
    ataqueAleatorioEnemigo()
}

function ataqueAgua() {
    ataqueJugador = 'AGUA'
    ataqueAleatorioEnemigo()
}

function ataqueTierra() {
    ataqueJugador = 'TIERRA'
    ataqueAleatorioEnemigo()
}

function ataqueAleatorioEnemigo() {
    let data = base[1]
    let ataqueAleatorio = aleatorio(data)
    ataqueEnemigo = data[ataqueAleatorio].toUpperCase()
}

function aleatorio(data) {
    max= Object.keys(data).length
    min=1
    return Math.floor(Math.random()*(max-min+1)+min)
}

base = [
        {
            1:'Hipodoge',
            2:'Capipepo',
            3:'Ratigueya',
            4:'Langostelvis',
            5:'Tucapalma',
            6:'Pydos'
        },
        {
            1:'Fuego',
            2:'Agua',
            3:'Tierra'
        }
    ]

En mi caso lo que hice fue que la funci贸n retornara el valor, as铆 me queda m谩s claro en el lugar que la utilizo que es lo que hace y como usar la variable. (Separar responsabilidades)
Bienvenidos comentarios:

let ataqueEnemigo;

function ataqueFuego() {
  ataqueJugador = "FUEGO";
  alert("Ataque jugador " + ataqueJugador);
  ataqueEnemigo = ataqueAleatorioEnemigo();
  alert("Ataque enemigo " + ataqueEnemigo);
}
function ataqueAgua() {
  ataqueJugador = "AGUA";
  alert("Ataque jugador " + ataqueJugador);
  ataqueEnemigo = ataqueAleatorioEnemigo();
  alert("Ataque enemigo " + ataqueEnemigo);
}
function ataqueTierra() {
  ataqueJugador = "TIERRA";
  alert("Ataque jugador " + ataqueJugador);
  ataqueEnemigo = ataqueAleatorioEnemigo();
  alert("Ataque enemigo " + ataqueEnemigo);
}

function ataqueAleatorioEnemigo() {
  const ataqueAleatorio = aleatorio(1, 3);
  if (ataqueAleatorio == 1) {
    return "FUEGO";
  } else if (ataqueAleatorio == 2) {
    return "AGUA";
  } else {
    return "TIERRA";
  }
}

Resolv铆 est贸 con switch case para el enemigo asjdsajdklasj

Este es mi primer aporte, realmente no necesite preguntar o escribir nada en esta seccion de comentarios, pero este es un momento especial, al fin logre realizar por mi mismo mi parte del c贸digo que el profe dijo antes de ver su respuesta, parece tonto pero las ultimas veces no pude lograrlo por mi mismo y me fastidiaba, pensaba que no hab铆a aprendido nada y que era in煤til, que solo calqueo que el profe dictaba y listo, pero por fin veo que algo esta funcionando, lento pero si funciona.
lo que intente fue que cuando el jugador eligiera cualquiera de los botones de ataques elementales, osea fuego, agua y tierra, te saliera un alert, pero que al instante despues tambien te saliera un alert para la eleccion del rival que es completamente aleatoria, reutilize la logica aleatoria del piedra papel y tijeras, y lo cambie por los elementos, y asi al momento de elegir por ejemplo fuego, el rival tambien elige uno de forma aleatoria.

hay un monton de cosas que se pueden mejorar, pero estoy orgulloso del bebe que logre crear, esta feo, pero al menos respira ajajjaa 馃槄.

A este punto tuve que repetir las partes del curso que no comprendia, por que me costaba ciertos conceptos y que se estaba haciendo en la practica, pero ahora ya lo entiendo mejor todo con un mayor contexto

Hola! Saludos cordiales.
Seria bueno que dejaran el codigo completo de cada clase en un archivo pdf para uno como estudiante poder comparar donde esta mal su codificacion! es algo contructivo. Soy nuevo, me incribi hoy y tengo muchas ganas de seguir aprendiendo.
Gracias

Es impresionante la forma en que se usa las variables globales para el funcionamiento de los botones del JS. Esta parte del curso se complica un poco, pero eso es lo bueno de la practica.

En este punto me empez贸 a sudar la frente 馃ぃ

Me Gusta El Ritmo Del Prof. juan Super Excelente 鈥
Cada Clase Veo Mi Progreso de Aprendijase Mas Aguil.

Esta es mi version simplificando los alerts y la seleccion de ataques:

let ataquejugador1
let ataquejugador2

// Funci贸n para activar los botones del DOM
window.addEventListener('load', function iniciarJuego() {
    //Activar boton de seleccion
    let botonSeleccionJugador1 = document.getElementById('boton-seleccion-jugador1')
    botonSeleccionJugador1.addEventListener('click', confirmarSeleccionJugadores)
    botonSeleccionJugador1.addEventListener('click', seleccionAtaqueJugador1)
})

// Funci贸n para generar numeros aleatorios entre un rango asignado
function generarEnterosAleatorios(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

// Funci贸n para interpretar seleccion del primer jugador
function seleccionJugador1() {
    let seleccionAjolote = document.getElementById('ajolote')
    let seleccionTopo = document.getElementById('topo')
    let seleccionHormigaDeFuego = document.getElementById('hormigadefuego')
    let seleccionKomodo = document.getElementById('komodo')
    let seleccionTortuga = document.getElementById('tortuga')
    let seleccionCaballoDeMar = document.getElementById('caballodemar')

    if(seleccionAjolote.checked) {
        return eleccion = 'al AJOLOTE' 
    } else if(seleccionTopo.checked) {
        return eleccion = 'al TOPO'
    } else if(seleccionHormigaDeFuego.checked) {
        return eleccion = 'a la HORMIGA DE FUEGO'
    } else if(seleccionKomodo.checked) {
        return eleccion = 'al DRAGON DE KOMODO'
    } else if(seleccionTortuga.checked) {
        return eleccion = 'a la TORTUGA'
    } else if(seleccionCaballoDeMar.checked) {
        return eleccion = 'al CABALLO DE MAR'
    } 
}

// Funci贸n para interpretar seleccion del segundo jugador
function seleccionJugador2(mokeponElegido) {
    if(mokeponElegido == 1) {  
        return eleccion = "al AJOLOTE"
    } else if(mokeponElegido == 2) {  
        return eleccion = "al TOPO"
    } else if(mokeponElegido == 3) {  
        return eleccion = "a la HORMIGA DE FUEGO"
    } else if(mokeponElegido == 4) {  
        return eleccion = "al DRAGON DE KOMODO"
    } else if(mokeponElegido == 5) {  
        return eleccion = "a la TORTUGA"
    } else if(mokeponElegido == 6) {  
        return eleccion = "al CABALLO DE MAR"
    }
}

// Funci贸n para confirmar la seleccion de ambos jugadores
function confirmarSeleccionJugadores() {

    // Imprimir seleccion del primer jugador
    let spanMokeponJugador1 = document.getElementById('mokepon-jugador1')
    alert('Has seleccionado ' +  seleccionJugador1())
    spanMokeponJugador1.innerHTML = seleccionJugador1()

    // La computadora elige un mokepon aleatoriamente (numeros entre 1 y 6)
    let eleccionJugador2 = generarEnterosAleatorios(1,6)
    
    // Imprimir seleccion del segundo jugador
    let spanMokeponJugador2 = document.getElementById('mokepon-jugador2')
    alert('La computadora ha seleccionado ' +  seleccionJugador2(eleccionJugador2))
    spanMokeponJugador2.innerHTML = seleccionJugador2(eleccionJugador2) 
}

// Funci贸n para elegir el ataque del primer jugador
function seleccionAtaqueJugador1() {
    let botonTierra = document.getElementById('boton-tierra')
    let botonFuego = document.getElementById('boton-fuego')
    let botonAgua = document.getElementById('boton-agua')
    let botonTierraFuego = document.getElementById('boton-tierraFuego')
    let botonTierraAgua = document.getElementById('boton-tierraAgua')
    let botonAguaFuego = document.getElementById('boton-aguaFuego')

    botonTierra.onclick = function ataqueTierra() {
        ataquejugador1 = 'TIERRA'
        confirmarAtaqueJugadores()
    }

    botonFuego.onclick = function ataquFuego() {
        ataquejugador1 = 'FUEGO'
        confirmarAtaqueJugadores()
    }
    
    botonAgua.onclick = function ataqueAgua() {
        ataquejugador1 = 'AGUA'
        confirmarAtaqueJugadores()
    }

    botonTierraFuego.onclick = function ataqueTierraFuego() {
        ataquejugador1 = 'TIERRA-FUEGO'
        confirmarAtaqueJugadores()
    }

    botonTierraAgua.onclick = function ataqueTierraAgua() {
        ataquejugador1 = 'TIERRA-AGUA'
        confirmarAtaqueJugadores()
    }

    botonAguaFuego.onclick = function ataqueAguaFuego() {
        ataquejugador1 = 'AGUA-FUEGO'
        confirmarAtaqueJugadores()
    }

}  

// Funci贸n para elegir el ataque del segundo jugador
function seleccionAtaqueJugador2(ataque) {
    if(ataque == 1) {  
        return eleccionAtaque = "TIERRA"
    } else if(ataque == 2) {  
        return eleccionAtaque = "FUEGO"
    } else if(ataque == 3) {  
        return eleccionAtaque = "AGUA"
    } else if(ataque == 4) {  
        return eleccionAtaque = "TIERRA-FUEGO"
    } else if(ataque == 5) {  
        return eleccionAtaque = "TIERRA-AGUA"
    } else if(ataque == 6) {  
        return eleccionAtaque = "AGUA-FUEGO"
    }
}

// Funci贸n para confirmar el ataque de ambos jugadores
function confirmarAtaqueJugadores() {

    // La computadora elige un ataque aleatoriamente (numeros entre 1 y 6)
    let eleccionAtaqueJugador2 = generarEnterosAleatorios(1,6)
    ataquejugador2 = seleccionAtaqueJugador2(eleccionAtaqueJugador2)

    alert("Tu mokepon ha hecho un ataque tipo " +  ataquejugador1
    +"\nEl enemigo ha hecho un ataque tipo " +  ataquejugador2)
}

Por si alguien se pierde, esta clase va despu茅s de la clase llamada 鈥淎taques en JavaScript鈥. Me salieron en orden invertido 馃槄

buenas para todos soy d e colombia soy tecnico electronico y de sistemas per les comparto este tema es una calidad me gusta y sis estamos aqui es porque nos gusta y es el aliciente para seguir adelanteeeee鈥 pa lante compa帽eros. es mas ya se que voy a estudiar programacion y desarrollo de sotfaware. para aplicarlo a mi proyecto de vida. deseo lo mejor para todos

cambio mucho los nombres y en un codigo largo una persona que esta empezando, si no va en orden se enreda
<https://www.youtube.com/watch?v=9Jmnu9NPPqQ> les recomiendo que cada que vean clases pongan este tipo de m煤sica, de fondo muy suave, esta demostrado que aumenta la velocidad en la que aprendemos o memorizamos algo

La funci贸n se puede interpretar como una peque帽a parte del programa o software que realice una tarea en particular de manera independientes y esta a su vez te puede devolver alg煤n valor o no. variable = lugar en la memoria que guarda un determinado valor.

Pause y lo hice quiza este bien o no pero funciona鈥 para que el ataque enemigo se reproduzca inmediatamente termine el nuestro llame a la funcion terminando cada ataque de nuestra mascota 鈥 :v

dur茅 casi una noche completa para poder resolver mi error. y la satisfacci贸n tan grande de haberlo encontrado y que salga igual del profesor. Animo amigos. Se puede 馃檶馃槂

Cada vez se pone mejor鈥 Si hab铆a notado que el codigo para seleccionar mascota, se habia hecho con c贸digo para el ataque鈥 Eso al final fue confuso y con todo respeto profe鈥 Deber铆a corregirse para no crear confusion, o si no se cambia el video鈥 al menos dejar una 鈥渇e de erratas鈥.

Por ahora y muy emocionado, dejo mi c贸digo

let ataqueJugador 
let ataqueEnemigo

function aleatorio(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min)
}

function seleccionarMascotaEnemigo() {
  //alert('SELECCIONAR LA MASCOTA DEL ENEMIGO AUTOMATICAMENTE')
  let mascotaAleatorio = aleatorio(1,3)
  //alert('Mascota aleatoria Enemigo' + ataqueAleatorio)
  let spanMascotaEnemigo = document.getElementById('mascota-enemigo')

  if (mascotaAleatorio == 1){
    //Hipogogue
    spanMascotaEnemigo.innerHTML = 'Hipodoge'
  } else if (mascotaAleatorio == 2){
    //Capipepo
    spanMascotaEnemigo.innerHTML = 'Capipepo'
  } else {
    //Ratigueyta
    spanMascotaEnemigo.innerHTML = 'Ratigueya'
  }
}


function seleccionarMascotaJugador() {
  //alert('SELECCIONASTE TU MASCOTA')

  //Creando variables para inspeccionar los elementos seleccionados
  let inputHipodoge = document.getElementById('hipodoge')
  let inputCapipepo = document.getElementById('capipepo')
  let inputRatigueya = document.getElementById('ratigueya')

  let spanMascotaJugador = document.getElementById('mascota-jugador')

  if (inputHipodoge.checked){
      //alert('Seleccionaste Hipodoge')
      spanMascotaJugador.innerHTML = 'Hipodoge'
      }
    else if (inputCapipepo.checked){
      //alert('Seleccionaste Capipepo')
      spanMascotaJugador.innerHTML = 'Capipepo'
      }
    else if (inputRatigueya.checked){
      //alert('Seleccionaste Ratigueya')
      spanMascotaJugador.innerHTML = 'Ratigueya'
      }
    else {
      alert('A煤n no has seleccionado a tu mascota')
    }

    seleccionarMascotaEnemigo()

  }

function ataqueAleatorioEnemigo(){

    let ataqueAleatorio = aleatorio(1,3)
    //alert('Ataque aleatorio Enemigo' + ataqueAleatorio)
    //let spanAtaqueEnemigo = document.getElementById('ataque-enemigo')

    if (ataqueAleatorio == 1){
      //Fuego
      ataqueEnemigo = 'Fuego 馃敟'
      alert('El enemigo ataca con ' + ataqueEnemigo)
    } else if (ataqueAleatorio == 2){
      //Agua
      ataqueEnemigo = 'Agua 馃挧'
      alert('El enemigo ataca con ' + ataqueEnemigo)
    } else {
      //Tierra
      ataqueEnemigo = 'Tierra 馃尡'
      alert('El enemigo ataca con ' + ataqueEnemigo)
    }

  }

function ataqueFuego(){

  ataqueJugador = 'Fuego 馃敟'
  alert('El jugador ataca con ' + ataqueJugador)

  ataqueAleatorioEnemigo()

}

function ataqueAgua(){

  ataqueJugador = 'Agua 馃挧'
  alert('El jugador ataca con ' + ataqueJugador)

  ataqueAleatorioEnemigo()

}

function ataqueTierra(){

  ataqueJugador = 'Tierra 馃尡'
  alert('El jugador ataca con ' + ataqueJugador)

  ataqueAleatorioEnemigo()

}

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)
    
  }
   
  window.addEventListener('load', iniciarJuego)

Asi lo hice yo, en el documento HTML cree un espan con el id = 鈥渁taque-jugador鈥, y otro con id = 鈥渁taque-enemigo鈥, para que diera el resultado directamente en el documento HTML sin un cuadro de dialogo,

         function ataqueFuego(){
        ataqueJugador = "FUEGO"  
        document.getElementById("ataque-jugador").innerHTML = "FUEGO"

        alert("Tu ataque fue " + ataqueJugador)
        //luego de que se selecciona el ataque, inmediatamente se invoca el ataque aleatorio del enemigo
        ataqueAleatorioEnemigo()
    }

    function ataqueAgua(){
        ataqueJugador = "AGUA"
        document.getElementById("ataque-jugador").innerHTML = "AGUA"
        alert("Tu ataque fue " + ataqueJugador)
        ataqueAleatorioEnemigo()
    }
    function ataqueTierra(){
        ataqueJugador = "TIERRA"
        document.getElementById("ataque-jugador").innerHTML = "TIERRA"
        alert("Tu ataque fue " + ataqueJugador)
        ataqueAleatorioEnemigo()
    }

//para crear las funciones de ataque enemigo

function ataqueAleatorioEnemigo() {
let spanAtaqueEnemigo = document.getElementById(鈥渁taque-enemigo鈥)
let ataqueAleatorio = aleatorio(1,3)

    if (ataqueAleatorio == 1) {
        ataqueEnemigo = 'FUEGO'
        spanAtaqueEnemigo.innerHTML = "FUEGO"

    } else if (ataqueAleatorio == 2) {
        ataqueEnemigo = 'AGUA'
        spanAtaqueEnemigo.innerHTML = "AGUA"
    } else {
        ataqueEnemigo = 'TIERRA'
        spanAtaqueEnemigo.innerHTML = "TIERRA"
    }
    alert("El ataque enemigo fue " + ataqueEnemigo)
}

//MOSTRANDO LOS ATAQUES DENTRO DEL HTML SIN CUADROS DE DIALOGOS O ALERTAS

//Funcion aleatorio general

function aleatorio(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
window.addEventListener(鈥渓oad鈥, iniciarJuego)

ESTA FUE MI SOLUCION

let ataqueJugador
let ataqueEnemigo

function IniciarJuego() {

    let botonMokeponJugador = document.getElementById('boton-mokepon')
    botonMokeponJugador.addEventListener('click', seleccionarMokeponJugador)

    let botonFuego  = document.getElementById("boton-fuego")
    botonFuego.addEventListener("click", ataqueFuego)
    let botonTierra = document.getElementById("boton-tierra")
    botonTierra.addEventListener("click", ataqueTierra)
    let botonAgua   = document.getElementById("boton-agua")
    botonAgua.addEventListener("click", ataqueAgua)
    
}

function seleccionarMokeponJugador(){

    let inputSprinkler = document.getElementById("sprinkler")
    let inputTerranova = document.getElementById("terranova")
    let inputFireball  = document.getElementById("fireball")
    let inputAarno     = document.getElementById("aarno")
    let inputAnubis    = document.getElementById("anubis")
    let inputSpyro     = document.getElementById("spyro")
    let spanMokeponJugador = document.getElementById("mascota-jugador")

        if (inputSprinkler.checked ) {
            spanMokeponJugador.innerHTML = "SPRINKLER"

        } else if (inputTerranova.checked ){
            spanMokeponJugador.innerHTML = "TERRANOVA"

        } else if (inputFireball.checked ){
            spanMokeponJugador.innerHTML = "FIREBALL"

        } else if (inputAarno.checked ){
            spanMokeponJugador.innerHTML = "AARNO"
        
        } else if (inputAnubis.checked ){
            spanMokeponJugador.innerHTML = "ANUBIS"
                    
        } else if (inputSpyro.checked ){
            spanMokeponJugador.innerHTML = "SPYRO"
            
        } else {
            spanMokeponJugador.innerHTML = "ERROR EN LA SELECCION"
        }       

        eleccionMokeponEnemigo()
}

function aleatorio(min,max){
    return Math.floor(Math.random() * (max - min + 1) + min)
}

let pc

function eleccionMokeponEnemigo(){
    
    pc = aleatorio(1,6)
    let spanMokeponEnemigo = document.getElementById("mascota-enemigo")

    if(pc == 1){
        spanMokeponEnemigo.innerHTML = "SPRINKLER"
    } else if(pc == 2){
        spanMokeponEnemigo.innerHTML = "TERRANOVA"
    } else if(pc == 3){
        spanMokeponEnemigo.innerHTML = "FIREBALL" 
    } else if(pc == 4){
        spanMokeponEnemigo.innerHTML = "AARNO"
    } else if(pc == 5){
        spanMokeponEnemigo.innerHTML = "ANUBIS" 
    } else {
        spanMokeponEnemigo.innerHTML = "SPYRO"             
    }
        
    }

function ataqueFuego(){
    ataqueJugador = "TU MOKEPON ATACA CON FUEGO"
    alert(ataqueJugador)
    ataquePC()
}
function ataqueTierra(){
    ataqueJugador = "TU MOKEPON ATACA CON TIERRA"
    alert(ataqueJugador)
    ataquePC()
}
function ataqueAgua(){
    ataqueJugador = "TU MOKEPON ATACA CON AGUA"
    alert(ataqueJugador)
    ataquePC()
}

function ataquePC(){

    pc = aleatorio(1,3)

 if (pc == 1) {
    ataqueEnemigo = "FUEGO"
    alert("EL MOKEPON ENEMIGO ATACA CON "+ ataqueEnemigo)
 } else if (pc == 2) {
    ataqueEnemigo = "TIERRA"
    alert("EL MOKEPON ENEMIGO ATACA CON " + ataqueEnemigo)
 } else {
    ataqueEnemigo = "AGUA"
    alert("EL MOKEPON ENEMIGO ATACA CON " + ataqueEnemigo)
}

}

window.addEventListener("load", IniciarJuego)

tengo un dolor de cabeza desde que empec茅 este curso que es terrible pero con la motivaci贸n que tengo nadie me para he visto mi codigo 60 millones de veces y me sigue dando error

hay no ! eso de de borrar y volver a redise帽ar me enrreda yo si es explicacion asi NO prendo xq me enrredo mas !!!

<code> 
```function ataqueFuego() {
    ataqueJugador= "Fuego"
    alert(ataqueJugador)
    ataqueMascota ()
} 
function ataqueAgua() {
    ataqueJugador= "Agua"
    alert(ataqueJugador)
    ataqueMascota ()
} 
function ataqueTierra() {
    ataqueJugador= "Tierra"
    alert(ataqueJugador)
    ataqueMascota ()
} 

function aleatorio(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min)
}
function ataqueMascota() {
    let ataqueMascota = aleatorio(1, 3)
    let spanAtaqueMascota = document.getElementById("enemigo-ataque")
     
    if(ataqueMascota == 1) {
        spanAtaqueMascota.innerHTML = "Fuego"
    } else if(ataqueMascota == 2) {
        spanAtaqueMascota.innerHTML = "Agua"
    } else {
        spanAtaqueMascota,innerHTML = "Tierra"
    }

}

Por aqu铆 les dejo mi c贸digo hasta ahora 馃榿

var mokeponActual
var c = 0
var mokepones = ["hipodoge", "capipepo", "ratigueya", "langostelvis", "tucapalma", "pydos"]
var ataques = ["FUEGO 馃敟", "AGUA 馃挧", "TIERRA 馃尡"]
let ataqueJugador
let ataqueRival
function iniciarJuego() {
    let botonMascotaJugador = document.getElementById("botonMascota")
    botonMascotaJugador.addEventListener("click", seleccionarMascotaJugador)
}
function aleatorio(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min)
}

function nombreBoton(nombre) {
    if(document.getElementById(nombre).checked){
        mokeponActual = nombre.charAt(0).toUpperCase() + nombre.slice(1)
        alert("Escogiste a " + mokeponActual)
        document.getElementById("mascotaJugador").innerHTML = mokeponActual
    } else {
        c++
    }
}

function seleccionarMascotaJugador() {
    for(i = 0; i < mokepones.length; i++) {
        nombreBoton(mokepones[i])
    }
    if(c == mokepones.length) {
        alert("隆Elige una mascota!")
        c = 0
    }
    seleccionarMascotaRival()
}

function seleccionarMascotaRival() {
    let numeroMascota = aleatorio(0, 5)
    let nombre = mokepones[numeroMascota]
    mokeponRival = nombre.charAt(0).toUpperCase() + nombre.slice(1)
    alert("El rival escogio a " + mokeponRival)
    document.getElementById("mascotaRival").innerHTML = mokeponRival

    seleccionarAtaqueJugador()
}

function tipoAtaqueJugador(elemento) {
    alert("Tu ataque es " + elemento)
    ataqueJugador = elemento
    
    ataqueRivalAleatorio()
}

function seleccionarAtaqueJugador() {
    let botonFuego = document.getElementById("botonFuego")
    botonFuego.addEventListener("click",  function(elemento){
        tipoAtaqueJugador(ataques[0])})
    let botonAgua = document.getElementById("botonAgua")
    botonAgua.addEventListener("click",  function(elemento){
        tipoAtaqueJugador(ataques[1])})
    let botonTierra = document.getElementById("botonTierra")
    botonTierra.addEventListener("click",  function(elemento){
        tipoAtaqueJugador(ataques[2])})
}

function ataqueRivalAleatorio() {
    let ataqueAleatorio = aleatorio(0,2)
    ataqueRival = ataques[ataqueAleatorio] 
    alert("El rival ataca con " + ataqueRival)
}

window.addEventListener("load", iniciarJuego)

siii!!! logre que el codigo funcinara antes que juan David castro, ahora vamos a ver como lo hace el

WOww!! lo hice exactamente igual, y hasta tuve el mismo problema de ponerle el mismo nombre a la variable y a la funci贸n jaja

Con Switch para simplificar

function ataqueEnemigo(){
let ataque= aleatorio(1,3);

switch(ataque){
    case 1:
        ataqueMascotaEnemigo.innerHTML = "fuego";
    break;
    case 2:
        ataqueMascotaEnemigo.innerHTML = "agua";
    break;
    case 3:
        ataqueMascotaEnemigo.innerHTML = "tierra";
    break;
}

}

El c贸digo para obtener un n煤mero aleatorio entre m铆nimo y m谩ximo que usan Freddy y Juan me parece innecesariamente complicado ya que como no soy bueno en matem谩ticas no logro memorizarlo bien, en cambio, hice este c贸digo que es m谩s f谩cil de digerir y genera n煤meros aleatorios entre 1 y el n煤mero m谩s alto que quieras delimitar con la variable max:

let rng = Math.ceil(Math.random() * max);

de modo que si max es = 3, va a generar un n煤mero aleatorio entre 1 y 3, as铆 de simple y no tienes que crear una segunda variable, puedes poner max = 100 y generar谩 un n煤mero aleatorio entre 1 y 100, y si quieres controlar el m铆nimo puedes usar un ciclo while para obtener un nuevo valor mientras rng sea menor al m铆nimo especificado en el ciclo while de esta manera:

let rng = 0;
while (rng < min) //min = 50
	rng = Math.ceil(Math.random() * max); // max = 100

Generar谩 un n煤mero aleatorio hasta que rng obtenga un valor mayor o igual a 50, delimitado por el l铆mite m谩ximo que en este caso ser铆a 100.

**si algo me ha servido mucho, es rehacer todo el c贸digo escrito anteriormente cada d铆a antes de iniciar el curso, sin ver las clases,
贸sea vuelvo a escribir todo el c贸digo que he aprendido antes de darle continuidad al curso, voy lento, pero ya puedo hacer todo esto de memoria **

Yo en vez de utilizar un if utilic茅 switch

let ataque_jugador = ""
let num_ataque_enemigo = aleatorio(1,3)
let ataque_enemigo = ""
console.log("el ataque del jugador es: " + ataque_enemigo);
console.log("el ataque del enemigo es: " + ataque_jugador);

function iniciarJuego() {
    let let_boton_mascota = document.getElementById("boton_mascota")
    let_boton_mascota.addEventListener("click", seleccionarMascota)

    let let_botonfuego = document.getElementById("boton_fuego")
    let_botonfuego.addEventListener("click", ataqueFuego)

    let let_botonagua = document.getElementById("boton_agua")
    let_botonagua.addEventListener("click", ataqueAgua)
    
    let let_botontierra = document.getElementById("boton_tierra")
    let_botontierra.addEventListener("click", ataqueTierra)
}

function seleccionarMascota() {
    input_hipodoge = document.getElementById("Hipodoge")
    input_capipepo = document.getElementById("Capipepo")
    input_ratigueya = document.getElementById("Ratigueya")
    span_mascotajugador = document.getElementById("id_mascotajugador")

    if(input_hipodoge.checked){
        span_mascotajugador.innerHTML = "Hipodoge"
    } else if(input_capipepo.checked){
        span_mascotajugador.innerHTML = "Capipepo"
    } else if(input_ratigueya.checked){
        span_mascotajugador.innerHTML = "Ratigueya"
    }else{
        span_mascotajugador.innerHTML = "NO SELECCIONADA"
    }

    seleccionarMascotaEnemigo()
}

function seleccionarMascotaEnemigo() {
    let mascota_aleatoria = aleatorio(1, 3)
    console.log("la mascota del enemigo es: " + mascota_aleatoria);
    span_mascotaenemigo = document.getElementById("id_mascotaenemigo")

    if (mascota_aleatoria == 1) {
        span_mascotaenemigo.innerHTML = "Hipodoge"
    } else if (mascota_aleatoria == 2) {
        span_mascotaenemigo.innerHTML = "Capipepo"
    } else if (mascota_aleatoria == 3) {
        span_mascotaenemigo.innerHTML = "Ratigueya"
    } else {
        span_mascotaenemigo.innerHTML = "ERROR, MASCOTA NO SELECCIONADA"
    }

}

function ataqueFuego(){
    ataque_jugador = "FUEGO"
    alert("Jugador atac贸 con " + ataque_jugador)
    ataqueEnemigo()
}

function ataqueAgua(){
    ataque_jugador = "AGUA"
    alert("Jugador atac贸 con " + ataque_jugador)
    ataqueEnemigo()
}

function ataqueTierra(){
    ataque_jugador = "TIERRA"
    alert("Jugador atac贸 con " + ataque_jugador)
    ataqueEnemigo()
}

function ataqueEnemigo() {
    
switch (num_ataque_enemigo) {
    case 1:
        ataque_enemigo = "FUEGO"
        alert("Enemigo atac贸 con " + ataque_enemigo)
        break;
    case 2:
        ataque_enemigo = "AGUA"
        alert("Enemigo atac贸 con " + ataque_enemigo)
        break;
    case 3:
        ataque_enemigo = "TIERRA"
        alert("Enemigo atac贸 con " + ataque_enemigo)
        break;
}

}

function aleatorio(min, max) {
    return Math.floor(Math.random()*(max-min+1)+min);
}

window.addEventListener("load", iniciarJuego)

Este fue mi modo de resolverlo 馃槂

Las variables globales se pueden leer desde la consola

Les juro que todav铆a voy por el minuto 2:55 y me re emocione por ver que ten铆a el codigo similar al profe 馃槂))

let ataqueJugador 
let ataqueEnemigo

function iniciarJuego() {
    let btnMascota = document.getElementById("seleccionar")
    btnMascota.addEventListener("click", seleccionarMascotaJugador)

    let btnFuego = document.getElementById("ataque-fuego")
    btnFuego.addEventListener("click", ataqueFuego)
    let btnAgua = document.getElementById("ataque-agua")  
    btnAgua.addEventListener("click", ataqueAgua)
    let btnTierra = document.getElementById("ataque-tierra")
    btnTierra.addEventListener("click", ataqueTierra)
}

function seleccionarMascotaJugador() {
    let inputHipodoge = document.getElementById("hipodoge")
    let inputCapipepo = document.getElementById("capipepo")
    let inputRatigueya = document.getElementById("ratigueya")
    let spanMascotaJugador = document.getElementById("mascota-jugador")

    if (inputHipodoge.checked == true) {
        spanMascotaJugador.innerHTML = "Hipodoge"
    } else if (inputCapipepo.checked == true) {
        spanMascotaJugador.innerHTML = "Capipepo"
    } else if (inputRatigueya.checked == true) {
        spanMascotaJugador.innerHTML = "Ratigueya"
    } else{
        alert("Elige una mascota")
    }

    seleccionarMascotaEnemigo()
}

function seleccionarMascotaEnemigo() {
    let mascotaAleatorio = aleatorio(1,3)
    let spanMascotaEnemigo = document.getElementById("mascota-enemigo")

    if (mascotaAleatorio == 1) {
        //Hipodoge
        spanMascotaEnemigo.innerHTML = "Hipodoge"
    } else if (mascotaAleatorio == 2){
        //Capipepo
        spanMascotaEnemigo.innerHTML = "Capipepo"
    } else{
        //Ratigueya
        spanMascotaEnemigo.innerHTML = "Ratigueya"
    }
}

function ataqueFuego() {
    ataqueJugador = "FUEGO"
    ataquesEnemigo()
}

function ataqueAgua() {
    ataqueJugador = "AGUA"
    ataquesEnemigo()
}

function ataqueTierra() {
    ataqueJugador = "TIERRA"
    ataquesEnemigo()
}

function ataquesEnemigo() {
    let ataqueAleatorio = aleatorio(1,3)

    if (ataqueAleatorio == 1) {
        ataqueEnemigo = "Fuego"
    } else if (ataqueAleatorio == 2) {
        ataqueEnemigo = "Agua"
    } else {
        ataqueEnemigo = "Tierra"
    }
}

function aleatorio(min, max) {
    return Math.floor(Math.random()*(max-min+1)+min)
}
 



window.addEventListener("load", iniciarJuego)

En mi propuesta use Switch para evaluar los casos con m谩s facilidad.

Yo recordaba algo de los eventos cuando aprend铆 JAVA desktop y era que se pod铆a crear la funci贸n en el mismo llamado del evento, lo busqu茅 y para JS es as铆鈥

boton.addEventListener('click', function(){
        //codigo que necesitas ejecutar
    })

De esta forma no es necesario siempre crear una funci贸n, ya que a veces es innecesario crear 1 funci贸n por cada evento si es que s贸lo se usar谩 1 vez esa funci贸n.

Estoy muy contento porque la soluci贸n que plante茅 fue casi igual a la del profe! 馃槃

yo lo hice asi xd

<code> 
function atqFire (){
    atqPlayer = "FIRE"
    alert(atqPlayer)
    atqEnemy()
} 
function atqWater (){
    atqPlayer = "WATER"
    alert(atqPlayer)
    atqEnemy()
} 
function atqEarth (){
    atqPlayer = "EARTH"
    alert(atqPlayer)
    atqEnemy()
} 


function atqEnemy() {
    let atqRandomEnemy = random(1,3)
    if (atqRandomEnemy == 1) {
        alert ("FIRE") 
    } else if (atqRandomEnemy == 2) {
        alert("WATER")
    } else {
        alert("EARTH")
    }
    

}


function random(min, max) {
    return Math.floor(Math.random() * (max - min +1) + min)

Entiendo pero cuando voy hacer el ejercicio si ver el video no logro hacer lo mismo

Esto fue lo primero que se me ocurri贸

pst: no funciono馃榾

function ataqueAleatorioEnemigo() {
    let ataqueAleatorio = aleatorio(1,3)
    
    if (ataqueAleatorio == 1) {
        ataqueEnemigo = "FUEGO 馃敟"
    } else if (ataqueAleatorio == 2) {
        ataqueEnemigo = "AGUA 馃挧"
    } else {
        ataqueEnemigo = "TIERRA 馃彅锔"
    }
}

Hice la funci贸n etc y no pas贸 nada, hasta que escuch茅 la soluci贸n de nuestro querido profe de llamar las funciones dentro y voil谩 funciono, solo me faltaba eso.

let attackPlayer
//let attackOpponent
function selectAttackOpponent(){

//let spanPetOther = document.getElementById(鈥榩etOther鈥)
let spanAttackOpponent = document.getElementById(鈥榓ttackOpponent鈥)

let attackOpponent = aleatoria(1,4)

if( attackOpponent == 1){
//Hipodoge
spanAttackOpponent.innerHTML = 鈥橉煂婐煂婐煂娾
}else if (attackOpponent == 2){
//Ratigueya
spanAttackOpponent.innerHTML = 鈥橉煍ヰ煍ヰ煍モ
}else if (attackOpponent == 3){
//Langostelvis
spanAttackOpponent.innerHTML = 鈥橉煂笍馃尓锔忦煂笍鈥
}else if (attackOpponent == 4){
//Tucapalma
spanAttackOpponent.innerHTML = 鈥橉煪碘嬸煪碘嬸煪碘
}
}
//------ATAQUE DE TIERRA-------
function selectAttackEarth(){
attackPlayer = 'Ataque de 鈥嬸煪碘嬸煪碘嬸煪碘嬸煪碘嬸煪碘嬸煪碘嬸煪碘
selectAttackOpponent()
}

Aporte antes del minuto 1:10


  • hago uso de la funci贸n aleatorio() para as铆 obtener 3 valores al azar que despu茅s puedo asignar con if / if else y llamar el resultado con un alert()
"
function ataqueEnemigo(){
    let enemigoAtaque = aleatorio(1,3)

    if(enemigoAtaque == 1){
        enemigoAtaque = "Fuego"
        alert("El enemigo escogio atacar con: " + enemigoAtaque)
    }else if(enemigoAtaque == 2){
        enemigoAtaque = "Agua"
        alert("El enemigo escogio atacar con: " + enemigoAtaque)
    }else{
        enemigoAtaque = "Tierra"
        alert("El enemigo escogio atacar con: " + enemigoAtaque)
    } 
}
  • Esta funci贸n la llamo dentro de la dem谩s funciones para que se ejecute despu茅s de seleccionar nuestro ataque.
"
function ataqueFuego() {
    ataqueJugador = "Fuego"
    alert("Elegiste atacar con: " + ataqueJugador)
    ataqueEnemigo()
}
function ataqueAgua() {
    ataqueJugador = "Agua"
    alert("Elegiste atacar con: " + ataqueJugador)
    ataqueEnemigo()
}
function ataqueTierra() {
    ataqueJugador = "Tierra"
    alert("Elegiste atacar con: " + ataqueJugador)
    ataqueEnemigo()
}

Gracias por leer.

Mi solucion quedo asi, ojala sea valida

function ataqueFire() {
  let spanAtaquePlayer = document.getElementById("ataque-player")
  spanAtaquePlayer.innerHTML = "Fuego"
  ataqueIA()
}

function ataqueWater() {
  let spanAtaquePlayer = document.getElementById("ataque-player")
  spanAtaquePlayer.innerHTML = "Agua"
  ataqueIA()
}

function ataqueEarth() {
  let spanAtaquePlayer = document.getElementById("ataque-player")
  spanAtaquePlayer.innerHTML = "Tierra"
  ataqueIA()
}

function ataqueIA() {
  let ataqueIA = aleatorio(1,3)
  let spanAtaqueIA = document.getElementById("ataque-ia")
  if (ataqueIA == 1) {
    spanAtaqueIA.innerHTML = "Fuego"
  } else if (ataqueIA == 2) {
    spanAtaqueIA.innerHTML = "Agua"
  } else if (ataqueIA == 3) {
    spanAtaqueIA.innerHTML = "Tierra"
  }
}

Una forma de cambiar el nombre a una variable o funci贸n es que selecciones el nombre y con Ctrl + D se sombrear谩n el nombre repetidos en el c贸digo y puedes escribir y se ver谩 el cambio a todos esos nombres. esto sirve para que no cambies el nombre de la variable o funci贸n individualmente y te ahorras algo de tiempo.

En el minuto 3:25 cuando est茅n cambiando el nombre a una funci贸n o variable que invocaste varias veces no es necesario cambiar el nombre una por una, solo presiona F2 y te desplegar谩 un cuadro de texto para que se cambie el nombre a todas

alguien que me de una ayuda trato de usar los botones de ataque como se hace en la clase pero la variable global se define solo por la ultima funci贸n la de tierra sin importar cual bot贸n oprima con el click no se porque pasa ni como solucionarlo
function ataqueFuego() {
    ataqueJugador = 'FUEGO'
    alert(ataqueJugador)
    ataquePc()
}
function ataqueAgua() {
    ataqueJugador = 'AGUA'
    alert(ataqueJugador)
    ataquePc()
}
function ataqueTierra() {
    ataqueJugador = 'TIERRA'
    alert(ataqueJugador)
    ataquePc()
}
function ataquePc(){ 
    ataqueEnemigo = aleatorio(1,3)
    if (ataqueEnemigo== 1) {
        alert('Enemigo ataca con FUEGO')
    } else if (ataqueEnemigo == 2) {
        alert('Enemigo ataca con AGUA')
    } else if (ataqueEnemigo == 3){
        alert('Enemigo ataca con TIERRA')
    }
}
ese pelao confunde mucho

es muy buena la programaci贸n me gusta aprender contigo juan

Yo lo hice un poco diferente usando solo una funcion(ataques) que recibe un parametro event(e) para acceder al innerHTML de quien disparo el evento(target) y asi puedo usar la misma funci贸n cada vez que se hace click en todos los botones de ataque

Tengo un problema con los ataques del enemigo nunca puedo ganar, alguna sugerencia? `let playeratk` `let enemyatk` `let vidasenemigo = 3` `let vidasplayer = 3` `function arrancarJuego() {` ` let sectionseleccionarAtaque = document.getElementById('Your-atack')` ` sectionseleccionarAtaque.style.display = 'none'` ` let sectionReiniciar = document.getElementById('Re-start') ` ` sectionReiniciar.style.display = 'none'` ` let buttonElegir = document.getElementById('button_elegir')` ` buttonElegir.addEventListener('click', seleccionarBicho)` ` let btnfuego = document.getElementById('button_fuego')` ` btnfuego.addEventListener('click', Fireratk)` ` let btnagua = document.getElementById('button_agua')` ` btnagua.addEventListener('click', Watereratk)` ` let btntierra = document.getElementById('button_tiera')` ` btntierra.addEventListener('click', Earthatk)` ` let buttonreiniciar = document.getElementById('button_reiniciar')` ` buttonreiniciar.addEventListener('click', reiniciarjuego)` `}` `function seleccionarBicho() {` ` let sectionseleccionarBicho = document.getElementById('tu_bicho')` ` sectionseleccionarBicho.style.display = 'none'` ` ` ` let sectionseleccionarAtaque = document.getElementById('Your-atack')` ` sectionseleccionarAtaque.style.display = 'block'` ` let inputChamp1 = document.getElementById('Champ1')` ` let inputChamp2 = document.getElementById('Champ2')` ` let inputChamp3 = document.getElementById('Champ3')` ` let inputChamp4 = document.getElementById('Champ4')` ` let inputChamp5 = document.getElementById('Champ5')` ` let inputChamp6 = document.getElementById('Champ6')` ` let SpanBichoPlayer = document.getElementById('bicho-player')` ` if (inputChamp1.checked) {` ` SpanBichoPlayer.innerHTML = 'Massa'` ` } else if (inputChamp2.checked) {` ` SpanBichoPlayer.innerHTML = 'Milei'` ` } else if (inputChamp3.checked) {` ` SpanBichoPlayer.innerHTML = 'Del ca帽o'` ` } else if (inputChamp4.checked) {` ` SpanBichoPlayer.innerHTML = 'Videla'` ` } else if (inputChamp5.checked) {` ` SpanBichoPlayer.innerHTML = 'Roberto'` ` } else if (inputChamp6.checked) {` ` SpanBichoPlayer.innerHTML = 'Pelusa'` ` } else {` ` alert("Pa elegi un Bicho0o0Oo0")` ` reiniciarjuego()` ` }` ` seleccionarBichoenemigo()` `}` `function seleccionarBichoenemigo() {` ` let randomatak = randomizer(1,6)` ` let SpanBichoEnemigo = document.getElementById('bicho-enemigo')` ` if (randomatak == 1) {` ` SpanBichoEnemigo.innerHTML = 'Massa'` ` } else if (randomatak == 2) {` ` SpanBichoEnemigo.innerHTML = 'Milei'` ` } else if (randomatak == 3) {` ` SpanBichoEnemigo.innerHTML = 'Del ca帽o'` ` } else if (randomatak == 4) {` ` SpanBichoEnemigo.innerHTML = 'Videla'` ` } else if (randomatak == 5) {` ` SpanBichoEnemigo.innerHTML = 'Roberto'` ` } else {` ` SpanBichoEnemigo.innerHTML = 'Pelusa'` ` }` `}` `function Fireratk() {` ` playeratk = 'FIRE 馃敟'` ` randomenemyatk();` `}` `function Watereratk() {` ` playeratk = 'WATER 馃挧'` ` randomenemyatk();` `}` `function Earthatk() {` ` playeratk = 'EARTH 馃尡'` ` randomenemyatk();` `}` `function randomenemyatk() {` ` let randoam_atk = randomizer(1,3)` ` ` ` if (randoam_atk == 1) {` ` enemyatk = 'FIRE 馃敟'` ` } else if (randoam_atk == 2) {` ` enemyatk = 'WATER 馃挧'` ` } else { ` ` enemyatk = 'EARTH 馃尡'` ` } ` ` combat();` `}` `function combat() {` ` let spanvidasplayer = document.getElementById('vidas-player')` ` let spanvidasenemigo = document.getElementById('vidas-enemigo')` ` if (enemyatk === playeratk) {` ` crearMsj("EMPATE")` ` } else if ((playeratk === 'FUEGO' && enemyatk === 'TIERRA') ||` ` (playeratk === 'AGUA' && enemyatk === 'FUEGO') ||` ` (playeratk === 'TIERRA' && enemyatk === 'AGUA')) {` ` crearMsj("GANASTE")` ` vidasenemigo--;` ` spanvidasenemigo.innerHTML = vidasenemigo;` ` } else {` ` crearMsj("PERDISTE")` ` vidasplayer--;` ` spanvidasplayer.innerHTML = vidasplayer;` ` }` ` Healthcheck();` `}` `function Healthcheck(){` ` if (vidasenemigo == 0 ){` ` crearMsjFinal("YOU WIN!")` ` } else if (vidasplayer == 0){` ` crearMsjFinal("YOU LOSE")` ` }` `}` `function crearMsj(resultado) {` ` let sectionMsj = document.getElementById('mensajes')` ` let parrafo = document.createElement('p')` ` parrafo.innerHTML = 'Your champion atacks with ' + playeratk + ' Enemys champion atacks with ' + enemyatk + ' --- ' + resultado` ` sectionMsj.appendChild(parrafo)` `}` `function crearMsjFinal(resultadofinal) {` ` let sectionMsj = document.getElementById('mensajes')` ` let parrafo = document.createElement('p')` ` parrafo.innerHTML = resultadofinal` ` sectionMsj.appendChild(parrafo)` ` let btnfuego = document.getElementById('button_fuego')` ` btnfuego.disabled = true` ` let btnagua = document.getElementById('button_agua')` ` btnagua.disabled = true` ` let btntierra = document.getElementById('button_tiera')` ` btntierra.disabled = true` ` let sectionRestart = document.getElementById('Re-start') ` ` sectionRestart.style.display = 'block'` ` ` `}` `function reiniciarjuego(){` ` location.reload()` `}` `function randomizer(min, max) {` ` return Math.floor(Math.random() * (max - min + 1)) + min;` `}` `window.addEventListener('load', arrancarJuego)`

Con todo respeto, pero qu茅 desorden para ense帽ar y que falta de seriedad con los estudiantes con toda esa borradera de c贸digo, cambio de nombre a las variables o funciones y esa man铆a de escribir c贸digo saltando en desorden por todas las secciones del algoritmo. 驴As铆 son todos los cursos Platzi? o 驴s贸lo es 茅ste por ser gratuito?.

Con ese m茅todo van a correr a las personas que nunca han tenido clases de programaci贸n.

Mejor empiecen por ense帽ar bien la estructura del lenguaje y el c贸mo, para qu茅 y cu谩ndo de todas sus etiquetas, m茅todos, librer铆as, etc. Despu茅s ense帽en con pseudoc贸digo para estructurar bien el algoritmo y luego si lo transcriben al lenguaje de programaci贸n.

Ojo!, cierren las llaves cuando las abran 馃槂.

NBB

Les recomiendo muchisimo pausar y siempre intentar hacer los ejercicios por su cuenta, veran como van mejorando y lo bien que lo hacen al luego compararlo con el profe鈥

Este es mi codigo antes de ver la solucion del profe:
*de hecho creo que me adelante un poquito jsjs, cool Bv

let ataquePlayer;
let ataqueMaquina;
let mascota;

function iniciar() {
    let buttonMascotaPlayer = document.getElementById('button-mascota');
    buttonMascotaPlayer.addEventListener('click', () => {
        let htmlhipodoge = document.getElementById("hipodoge");
        let htmlcapipepo = document.getElementById("capipepo");
        let htmlratigueya = document.getElementById("ratigueya");
        let spanMascotaPlayer = document.getElementById("mascota-player");

        if (htmlhipodoge.checked) {
            mascota = "Hipodoge";
            spanMascotaPlayer.innerHTML = mascota;
            alert("Seleccionaste a " + mascota)
        } else if (htmlcapipepo.checked) {
            mascota = "Capipepo";
            spanMascotaPlayer.innerHTML = mascota;
            alert("Seleccionaste a " + mascota)
        } else if (htmlratigueya.checked) {
            mascota = "Ratigueya";
            spanMascotaPlayer.innerHTML = mascota;
            alert("Seleccionaste a " + mascota)
        } else {
            alert("Selecciona una mascota antes :/")
        }
        mascotaPc();
    });

    let botonFuego = document.getElementById("button-fuego")
    botonFuego.addEventListener("click", ataqueFuego, ataquePc)

    let botonAgua = document.getElementById("button-agua")
    botonAgua.addEventListener("click", ataqueAgua, ataquePc)

    let botonTierra = document.getElementById("button-tierra")
    botonTierra.addEventListener("click", ataqueTierra, ataquePc)
}

function aleatorio(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

function mascotaPc() {
    if(mascota){
        let opcionPc = aleatorio(1, 3);
    let pc = document.getElementById("mascota-enemigo")
    if (opcionPc == 1) {
        pc.innerHTML = "Hipodoge";
        alert("La Maquina escogi贸 de mascota a Hipodoge")
    } else if (opcionPc == 2) {
        pc.innerHTML = "Capipeto";
        alert("La Maquina escogi贸 de mascota a Capipeto")
    } else if (opcionPc == 3) {
        pc.innerHTML = "Ratigueya";
        alert("La Maquina escogi贸 de mascota a Ratigueya")
    }
    }
    
}

function ataqueFuego() {
    if (mascota) {
        ataquePlayer = "FUEGO"
        let spanFuego = document.getElementById("spanAtaquePlayer")
        let msj = "Tu mascota " + mascota + " atac贸 con "+ ataquePlayer
        spanFuego.innerHTML = msj;
        alert(msj)
        ataquePc();
    } else {
        alert("Selecciona una mascota antes :/")
    }
}

function ataqueAgua() {
    if (mascota) {
        ataquePlayer = "AGUA"
        let spanFuego = document.getElementById("spanAtaquePlayer")
        let msj = "Tu mascota " + mascota + " atac贸 con "+ ataquePlayer
        spanFuego.innerHTML = msj;
        alert(msj)
        ataquePc();
    } else {
        alert("Selecciona una mascota antes :/")
    }
}

function ataqueTierra() {
    if (mascota) {
        ataquePlayer = "TIERRA"
        let spanFuego = document.getElementById("spanAtaquePlayer")
        let msj = "Tu mascota " + mascota + " atac贸 con "+ ataquePlayer
        spanFuego.innerHTML = msj;
        alert(msj)
        ataquePc();
    } else {
        alert("Selecciona una mascota antes :/")
    }
}

function ataquePc(){

    let pc = aleatorio(1, 3)
    if(pc == 1){
        //el ataque es fuego
    ataqueMaquina = "FUEGO"
    let spanFuego = document.getElementById("spanAtaquePc")
    let msj = ", la mascota " + mascota + " del Enemigo atac贸 con "+ ataqueMaquina
    spanFuego.innerHTML = msj;
    alert(msj)
    }
    else if(pc == 2){
        //el ataque es agua
    ataqueMaquina = "AGUA"
    let spanFuego = document.getElementById("spanAtaquePc")
    let msj = ", la mascota " + mascota + " del Enemigo atac贸 con "+ ataqueMaquina
    spanFuego.innerHTML = msj;
    alert(msj)
    }
    else if(pc == 3){
        //el ataque es tierra
    ataqueMaquina = "TIERRA"
    let spanFuego = document.getElementById("spanAtaquePc")
    let msj = ", la mascota " + mascota + " del Enemigo atac贸 con "+ ataqueMaquina
    spanFuego.innerHTML = msj;
    alert(msj)
    }
}
window.addEventListener('load', iniciar);

Yo lo hice asi

//Ataque enemino

function ataqueDelEnemigo (){
    let ataqueAleatorio = aleatorio (1,3)
    let spanAtaqueEnemigo = document.getElementById("ataque-enemigo")
    
    if (ataqueAleatorio == 1){
        spanAtaqueEnemigo.innerHTML = "FUEGO"
    } else if (ataqueAleatorio == 2) {
        spanAtaqueEnemigo.innerHTML = "AGUA"
    } else if (ataqueAleatorio == 3){
        spanAtaqueEnemigo.innerHTML = "TIERRA"
    }

    ataqueDelEnemigo()
}

Tuve la misma soluci贸n y el mismo error de repetir el ataque enemigo jaja Pero en vez de If else ocupe Switch Case

los ataques no me quedaron funcionando igual jaja no encuentro el error, pero solo se ejecuta la aletoriedad la primera vez luego se queda perma esa seleccion

Creo que ya estoy empezando a dominar el operador condicional ternario (?)

Chicos, aseguraos de colocar muy bien el nombre del bot贸n, si os equivocais, podemos estar un buen rato buscando la raz贸n del porque no te cambia la variable al precionarlo.

<code> let bottonLight =document.getElementById("button-light")
        bottonLight.addEventListener("click", attackLight)

Me puse el reto de meter muchos personajes a la vez y ahora el c贸digo esta super largo :<

para los que quieran practicar sin instalar vs code, pueden usar la pagina replit que sirve bastante bien.
les dejo el link de mi perfil con algunos proyectos ra铆dos que hice en el curso de l贸gica

function ataquefuego(){
ataquejugador=鈥楩UEGO鈥;
alert('Escogiste atacar con: 鈥+ ataquejugador +鈥 Enemigo escogio: '+ aleatorioenemigo());
}

function ataqueagua(){
ataquejugador=鈥楢GUA鈥;
alert('Escogiste atacar con: 鈥+ ataquejugador+鈥 Enemigo escogio: '+ aleatorioenemigo());
}

function ataquetierra(){
ataquejugador=鈥楾IERRA鈥;
alert('Escogiste atacar con: 鈥+ ataquejugador+鈥 Enemigo escogio: '+ aleatorioenemigo());
}

function aleatorioenemigo(){
let numaleatorioenemigo=aleatorio(1,3);

if(numaleatorioenemigo==1){
    ataquealeatorioenemigo='FUEGO';
}else if(numaleatorioenemigo==2){
    ataquealeatorioenemigo='AGUA';
}else{
    ataquealeatorioenemigo='TIERRA';
}
return ataquealeatorioenemigo;

}

Es interesante retomar nuevamente la programaci貌n.

Gracias por la clase, hay un error y es que falta como una validaci贸n para atacar si se ha seleccionado un mokepon antes.

function ataqueFuego(){
    ataqueJugador = 'fuego'
    alert(ataqueJugador)

    ataqueEnemigo()
}

function ataqueAgua(){
    ataqueJugador = 'agua'
    alert(ataqueJugador)

    ataqueEnemigo()
}

function ataqueTierra(){
    ataqueJugador = 'tierra'
    alert(ataqueJugador)

    ataqueEnemigo()
}

function ataqueEnemigo(){
    let ataqueEnemigo = aleatorio(1, 3)

    if (ataqueEnemigo == 1){
        alert('El enemigo lanzo fuego')
    } else if (ataqueEnemigo == 2){
        alert('El enemigo lanza agua')
    } else {
        alert('El enemigo lanza tierra')
    }

}


haci yp hice el codigo y funciono primero cree la funcion para los ataques aleatorios del enemigo e invoque esa funcion despues de nosotros seleccionar nuestro poder

normalmente cuando dice pausa la clase yo enserio la pauso y me pongo a hacer el codigo por mi cuenta hasta que funciones

es muy entretenidas y muy bien explicadas las clases del profe juan

function aleatorynumber(min, max){
return Math.floor(Math.random() * (max - min + 1) + min);
}
function ataqueEnemigoAleatorio(){
let combateEnemy = aleatorynumber(1,3)
ataqueenemigo = combateEnemy;
if(ataqueenemigo == 1){
alert(鈥渇uego鈥)
} else if(ataqueenemigo == 2){
alert(鈥渁gua鈥)
} else if( ataqueenemigo == 3){
alert(鈥渢ierra鈥)
}
}

function selectPowerFire(){
alert(鈥渇uego鈥)
ataqueJugador = 鈥淔ire鈥;
ataqueEnemigoAleatorio()
}
function selectPowerwater(){
ataqueJugador = 鈥淎gua鈥;
alert(ataqueJugador)
ataqueEnemigoAleatorio()

}
function selectPowerHand(){
ataqueJugador = 鈥淭ierra鈥;
alert(ataqueJugador)
ataqueEnemigoAleatorio()
}

tengo esta funci贸n que depende del c贸digo html y no del de js por si en algun punto cambia el de html

let botones = document.getElementsByName('ataque');
botones.forEach(boton=> {
        boton.addEventListener('click', () =>{
            
            ataqueJugador = boton.getAttribute('id')
            ataqueEnemigoAleatorio(botones)
        })
    })
function ataqueEnemigoAleatorio(botones){
    ataqueEnemigo = botones[aleatorio(1,botones.length)-1].getAttribute('id')
}

Vale destacar, que es bueno revisar tus funciones y valores para los ataque. Me ocurri贸 que al ir a herramientas de desarrollador en Chrome no estaba bien definido el boton de ataque con su funcion, luego del click lo que declare no era una funci[on sino un nada.
Literal me demore 30min en ver el problema hasta que leyendo las anotaciones de JDSG me percate de mi error y luego de ajustarlo pude ver el msj en herramientas del desarrollador.
Este curso poco a poco te va ayudando a hacer troubleshooting.

Amigos piensen de forma abierta y sigan la secuencia de su codigo!!!

En el archivo HTML utilic茅 un <span> para agregar el ataque enemigo una vez seleccionado, hice uso de la variable global (que no s茅 muy bien si ese uso es debido [debo aprender m谩s de ella] mas adelante ver茅) es emocionante aprender.

let atkEnemigo = aleatorio (1,3)
    ataqueEnemigoDb = document.getElementById('enemigo')
    
    if (atkEnemigo == 1) {
        ataqueEnemigoDb.innerHTML = "Fuego"
    }
    else if (atkEnemigo == 2) {
        ataqueEnemigoDb.innerHTML = "Agua"
    }
    else {
        ataqueEnemigoDb.innerHTML = "Tierra"
    }

Las probabilidades aleatorias cuando te quieren hacer confundir que no te quedo bien cuando te sale muchas veces el mismo que hab铆as seleccionado antes o el que tienes 馃槀 Me faltaba eso de la consola, gran explicaci贸n

Uff amigos si creo que la invitacion es a algo que dijo Fredy muchas veces y lo he escuchado ya varias veces por parte de programadores. Programar es saber lidiar con la Frustracion!!! y si jaja insistir e insistir que lo tenemos , me acabo de pegar casi 5 horas de tratar de entender por que un boton no me funcionaba hasta que finalmente le di , la verdad la frustraci贸n me mantuvo al borde de rendirme , pero despues de mucho mucho insistir , mirar , comparar y mas y mas lo arregle y tambien la satisfacci贸n fue fenomenal 鈥unque sea un simple boton valio la pena 馃槂 animo equipo !!!

隆Gracias por la clase!

as铆 hice el c贸digo de ataque enemigo, modifique en el HTML la section de mensaje para que el ataque aleatorio se viera en la pagina.

function ataqueAleatorioEnemigo() {
  let spanAtaqueEnemigo = document.getElementById("ataque-enemigo")

  if (ataqueEnemigo == 1) {
    spanAtaqueEnemigo.innerHTML = "FUEGO"
  } else if (ataqueEnemigo == 2) {
    spanAtaqueEnemigo.innerHTML = "AGUA"
  } else {
    spanAtaqueEnemigo.innerHTML = "TIERRA"
  }
}
function ataqueFuego() {
    ataqueJugador = "FUEGO"
    let spanAtaqueJugador = document.getElementById("ataque-jugador")
    spanAtaqueJugador.innerHTML = "FUEGO"
    ataqueEnemigo()
}
function ataqueAgua() {
    ataqueJugador = "AGUA"
    let spanAtaqueJugador = document.getElementById("ataque-jugador")
    spanAtaqueJugador.innerHTML = "AGUA"
     ataqueEnemigo()
}
function ataqueTierra() {
    ataqueJugador = "TIERRA"
    let spanAtaqueJugador = document.getElementById("ataque-jugador")
    spanAtaqueJugador.innerHTML = "TIERRA"
    ataqueEnemigo()
}

function ataqueEnemigo() {
    ataqueContrincante = Math.floor(Math.random() * 3) + 1;
    let spanAtaqueEnemigo = document.getElementById("ataque-enemigo")
    switch (ataqueContrincante) {
        case 1:
            spanAtaqueEnemigo.innerHTML = "FUEGO";
            break;
        case 2:
            spanAtaqueEnemigo.innerHTML = "AGUA";
            break;
        case 3:
            spanAtaqueEnemigo.innerHTML = "TIERRA";
            break;
    }
}

As铆 qued贸 mi c贸digo para mi ataque y el de mis enemigos incluida la modificaci贸n del documento :3

Estuve revisando un proceso que utilizaban para la declaraci貌n de las variables VAR y entonces revis猫 y me consegui este art铆culo que les comparto https://www.freecodecamp.org/espanol/news/var-let-y-const-cual-es-la-diferencia/

el tema va muy rapido

con tanto c贸digo, solo puedo decir, VAMOS QUE SI SE PUEDE

Compa帽eros cuando pongan en practica todo lo que han visto pensaran diferente y veran que es facil yo soy nuevo tambien.