Fundamentos de Programación

1

Bienvenida a Platzi: ¿qué necesitas para tomar el curso?

2

Programación en Navegadores: Primeros Pasos

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

Refactor del código usando funciones

11/84
Recursos

Hay actividades rutinarias que realizamos siguiendo los mismos pasos una y otra vez. En programación esto se llaman funciones, y es momento de usarlas en nuestro ejercicio de piedra, papel o tijera.

Funciones en JavaScript

Piensa en tu mente como si fuera un programa de computadora. Cepillarte los dientes es una tarea de todos los días. Entonces ¿escribirías de nuevo el código para cepillar tus dientes todos los días?

Pues, no. Lo que harías es guardar los pasos en tu memoria (con una función), y luego invocarlos cada vez que tengas que cepillarte los dientes.

Lo mismo ocurre en la programación. Solo tienes que seguir la regla de oro: Si tienes que copiar el código y pegarlo en otro lado, entonces mejor conviértelo en una función. Así puedes invocarlo tantas veces necesites.

¿Cómo declarar funciones en JavaScript?

Hay varias formas de declarar una función. Pero la más básica de todas consiste en escribir la palabra reservada function, seguida de la función con sus parámetros entre paréntesis, y el bloque de código entre llaves { }.

Ejemplo:

function hacerAlgo( param1 , param2 ) {
    let resultado = param1 + param2;
    return resultado;
}

hacerAlgo( 3 , 4 ); //Devuelve 7

💡 Cuando ejecutas la función, esta ejecuta todo el código que insertaste dentro de las llaves { } cuando la declaraste. De este modo, puedes ejecutar la función tantas veces como necesites con solo declararla una vez.

💡 Cuando la declaras, puedes indicar parámetros y usarlos dentro del bloque de código. Luego, cuando la ejecutes, esos parámetros se sustituirán con los valores que escribas entre paréntesis al momento de ejecutarla.

💡 También puedes usar la palabra reservada return dentro del bloque de código de la función para que, al ejecutarla, recibas el valor que indiques luego de escribir return (ojo, cuando la función llega a un return, su ejecución se detiene. Los comandos que escribas después de un return no se van a ejecutar).

💡 Ojo, todas las funciones deben empezar por una letra. No pueden iniciar con un número o un símbolo, siempre deben empezar por una letra (y la práctica común es que sea una letra minúscula en el caso de variables y funciones).

¿Cómo usar funciones en JavaScript?

Las funciones, al momento de ejecutarlas, tienen una estructura similar: Un nombre, seguido por sus parámetros entre paréntesis.

💡 Ojo, si la función no usa parámetros, igual necesitas escribir los paréntesis para que tu computadora entienda que tiene que ejecutar la función. Por ejemplo: alert().

función( parámetro1 , parámetro2 )

Luego tienes dos casos de uso:

  • Si la función tiene el trabajo de ejecutar procesos en tu programa (ej: alert()), entonces puedes ejecutarla por si sola en una línea de código (como ves en el ejemplo de arriba).
  • Si la función, en cambio, tiene el trabajo de usar los parámetros para calcular algo más y devolver un valor con un return, entonces suele usarse para asignar valores a otra variable.

Por ejemplo:

ganador = mejorEntre( opcion1 , opcion2 );

Ejemplo de función en JavaScript{height="" width=""}

¿Dónde escribo las funciones?

Es una buena práctica escribir las funciones al inicio del código. Los navegadores suelen ser permisivos cuando creas sitios web, pero la mayoría de los lenguajes de programación son estrictos sobre este punto.

En general, declara tus funciones antes de usarlas 👍

Aplicando funciones al programa de piedra, papel o tijera

Es hora de mejorar la calidad del código usando funciones.

Empecemos por optimizar las alertas que indican la elección del jugador y del computador:

Optimizando las alertas

Si te fijas bien, el algoritmo que nos informa nuestra elección y la del computador son muy parecidos, y podemos reemplazarlo con una función:

//INFORMANDO LA ELECCIÓN DEL JUGADOR
if ( eleccionDelJugador == 1 ) {
    alert( "Elegiste 🥌" );
} else if ( eleccionDelJugador == 2 ) {
    alert( "Elegiste 📄" )
} else if ( eleccionDelJugador == 3 ) {
    alert( "Elegiste ✂️" )
} else {
    alert( "Elegiste otra cosa, así no puedes jugar 😣" )
}

//INFORMANDO LA ELECCION DEL COMPUTADOR
if ( eleccionDelComputador == 1 ) {
    alert( "La computadora eligió 🥌" );
} else if ( eleccionDelComputador == 2 ) {
    alert( "La computadora eligió 📄" )
} else if ( eleccionDelComputador == 3 ) {
    alert( "La computadora eligió ✂️" )
} else {
    alert( "Cometí un error programando la elección del computador 🙃" )
}

Intenta hacerlo por tu cuenta, luego puedes compararla con la posible solución de abajo.

💡 Ojo, esta igual necesita que la encajes bien con tu código para que el programa siga funcionando. Así que no temas experimentar y hacer ajustes poco a poco para que funcione el juego. Al final te mostraré un ejemplo con el código completo usando funciones 😉

//FUNCIÓN PARA LAS ALERTAS
function alertaDeElecciones( quienElije , eleccion ) {
    if ( eleccion == 1 ) {
        alert( "El " + quienElije + " eligió 🥌" );
    } else if ( eleccion == 2 ) {
        alert( "El " + quienElije + " eligió 📄" )
    } else if ( eleccion == 3 ) {
        alert( "El " + quienElije + " eligió ✂️" )
    } else {
        alert( "Hubo un error con la elección del " + quienElije + " 🙃" )
    }
}

Decidiendo el ganador con una función

En estos momentos puede que no veas la necesidad de convertir esto en una función. Pero piensa por un momento que quieres convertir este juego en algo serio, que en el futuro podrías implementar un modo para dos jugadores, o una versión en línea.

En ese sentido, te conviene convertir la decisión del ganador en una función que puedas ejecutar para cualquiera de los modos de juego que implementes.

💡 Si no es por eso, al menos hazlo a modo de práctica 😅 Intenta hacerlo por tu cuenta, luego compara con la solución de abajo 👍

//FUNCIÓN PARA DECIDIR EL GANADOR
function quienGanaEntre ( eleccionJugador , eleccionOponente ) {
    if ( eleccionJugador == eleccionOponente ) {
        alert( "¡EMPATE! 🤼" );
    } else if ( eleccionJugador == 1 && eleccionOponente == 3 ) {
        alert( "¡GANASTE! 🥳" );
    } else if ( eleccionJugador == 2 && eleccionOponente == 1 ) {
        alert( "¡GANASTE! 🥳" );
    } else if ( eleccionJugador == 3 && eleccionOponente == 2 ) {
        alert( "¡GANASTE! 🥳" );
    } else {
        alert( "PERDISTE... 😢" );
    }
}

Juego de piedra, papel o tijeras con funciones

Recuerda que, por lo general, hay varias soluciones al mismo problema. Lo que ves abajo es solo una forma de crear este pequeño videojuego.

No te preocupes si tu código aún no se ve así. Lo más importante es que lo intentes por ti mismo y llegues al resultado. Luego el tiempo y la experiencia te ayudarán a escribir código más presentable, o más optimizado 👍

//FUNCIÓN PARA LAS ALERTAS
function alertaDeElecciones( quienElije , eleccion ) {
    if ( eleccion == 1 ) {
        alert( "El " + quienElije + " eligió 🥌" );
    } else if ( eleccion == 2 ) {
        alert( "El " + quienElije + " eligió 📄" );
    } else if ( eleccion == 3 ) {
        alert( "El " + quienElije + " eligió ✂️" );
    } else {
        alert( "Hubo un error con la elección del " + quienElije + " 🙃" );
    }
}

//FUNCIÓN PARA GENERAR NÚMEROS ALEATORIOS
function numeroAleatorio( min , max ) {
    return Math.floor( Math.random() * ( max - min + 1 ) + min );
}

//FUNCIÓN PARA DECIDIR EL GANADOR
function quienGanaEntre ( eleccionJugador , eleccionOponente ) {
    if ( eleccionJugador == eleccionOponente ) {
        alert( "¡EMPATE! 🤼" );
    } else if ( eleccionJugador == 1 && eleccionOponente == 3 ) {
        alert( "¡GANASTE! 🥳" );
    } else if ( eleccionJugador == 2 && eleccionOponente == 1 ) {
        alert( "¡GANASTE! 🥳" );
    } else if ( eleccionJugador == 3 && eleccionOponente == 2 ) {
        alert( "¡GANASTE! 🥳" );
    } else {
        alert( "PERDISTE... 😢" );
    }
}

//ELECCIÓN DEL JUGADOR
let eleccionDelJugador = 0;
eleccionDelJugador = prompt( "Elige: 1 para 🥌, 2 para 📄, 3 para ✂️" );
alertaDeElecciones( "jugador" , eleccionDelJugador );

//ELECCIÓN DEL COMPUTADOR
let eleccionDelComputador = numeroAleatorio( 1 , 3 );
alertaDeElecciones( "computador" , eleccionDelComputador );

//DECIDIENDO EL GANADOR
quienGanaEntre ( eleccionDelJugador , eleccionDelComputador );

Contribución creada por: Jhonkar Sufia (Platzi Contributor).

Aportes 470

Preguntas 282

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si tienes que copiar y pegar el mismo código eso merece ser una función

MIS APUNTES CON MUCHO 💚 FOR ALL OF YOU

  • ¿Copiar y pegar el mismo código? tranqui, eso es una función.
  • ¿Qué es una función? veni, veni, veni. Te cuento, las funciones son pedacitos de código que mientras lo escribas para un propósito general, puedes reusarlos muchas veces.
  • La palabra function debe ir en minúscula.
  • Las funciones tienen parámetros.
  • Los paréntesis están ahí para declarar una función, o para ejecutarla.
  • Teóricamente, primero declaras las funciones que vas a usar en tu programa, y luego las usas.

Buena tardes, Quiero compartir mi código, estoy muy contenta con el curso, nunca había estudiado nada al respecto, mi profesión no tiene nada que ver con la programación. Gracias por la excelente forma de enseñar 😃

No puedo creer que con tan pocas clases este entendiendo javascript. Esta BRUTAL.

Me ha costado entenderlo, pero sé que es cuestión de seguir aprendiendo y practicando 💚

{ } llaves
[ ] corchetes
( ) paréntesis

por lo menos así los conozco yo.

esto es lo que programé que dijera 😃

Para recordar:

Si tienes que copiar y pegar el mismo código muchas veces, entonces debería ser una función

Hoisting, buena explicación aquí La cocina del código, muy buen canal…

Yo: no entendi un pomo
Freddy: subamosle el nivel
Otra vez yo : 😒😢

Hola, me encanta la forma en la que explicas sin embargo como sugerencia, me parece que este video es muy importante y se hace muy rápido teniendo en cuenta que somos novatos jeje.

Pasar de una linea de código “obvia” a convertirlo a una FUNCIÓN, merece hacerse un poco mas explicado… siguiendo tus pasos obvio lo logro, pero el día de mañana que me toque hacer una función a mi solito, no creo poder porque no entendí, solo seguí tus pasos (No se si sea al único que le paso eso jeje)

Funciones o también llamados Métodos, son básicamente fragmentos de código o rutinas que puedes reutilizar una y otra vez, y las veces que quieras, sin tener que copiar y pegar el mismo código cada vez que lo vayas a usar.
.
Si tienes que copiar y pegar el mismo código en al menos dos lugares, es un indicio de que debes usar una función.
.
Por ahora no se tienen que preocupar de esto pero tengan en cuenta que una Clase esta compuesta por un conjunto de varias funciones y variables. 👍

recomiendo ir programando mientras Freddy lo hace

LES DEJO UN POCO DE DEFINICIÓN DE CONCEPTOS:

Al definir una función, lo que va entre los paréntesis se llaman PARÁMETROS, y son los valores que la función espera recibir para poder funcionar adecuadamente. Una función puede o no tener parámetros, tal cómo lo menciona Freddy.

Cuando invocamos la función, esos valores que le enviamos se llaman ARGUMENTOS, y son los valores que le pasamos a la función en sus parámetros para que pueda funcionar adecuadamente.

FUNCIONES:
Grupos de acciones que se repiten varias veces. En programación, son pedacitos de código que se escriben con el propósito general de reusarlos varias veces.

  • Cuando la función lleva la palabra function se está: DECLARANDO (Creando)

  • Cuando la función No lleva la palabra función se esta: INVOCANDO (Ejecutando)

Ejemplo del programa que explica Freddy

Hola, creé un programa con el ejemplo animado que explica el profesor en el 1:29 😄 sobre todo lo hice para darme claridad con el uso de return ya que me costó entenderlo. Espero que pueda ayudar a alguien. Recuerden que return sirve para guardar el proceso que ocurre en la función y ejecutarlo en otro lado, como lo hago al final del código para que muestre una oración con los dos argumentos 😁

<html>
    <head>
	    <meta charset="utf-8" />
	    <title>Elección de comida</title>
	    <script>
            function traer(comida, lugar) {
                let decision = "El alimento deseado es: " + comida + ". El lugar para recogerlo es: " + lugar
                return decision
            }

            let alimento = prompt("Seleccione el alimento que desea tener")
            let origen = prompt("Seleccione el lugar para recoger su alimento")

            alert(traer(alimento, origen))
	    </script>
    </head>
    <body>
    </body>
</html>

Luego de horas buscando por que no me funcionaba el código y revisando desde github, el vídeo y el código que está en la parte inferior de temario no lo encontraba, solo pude verlo gracias a los colores de mi tema, me di cuenta que no tenía bien escrito la function, me faltaba la c, estuve horas leyendo y buscando jajaja. por si a alguien le ocurre, los colores ayudan

Voy a llorar porque recien entendi Hoisting :’))) gracias a todos por los aportes

Honestamente, así tenía organizado mi código porque pensé que se veía más estético (lol) ya lo cambié a como debe ser

Notas de la clase:

Términos relacionados con funciones en programación:

  • Declarar o Definir: describir en lógica de programación que es lo que va a hacer la función.

  • Invocar o llamar: mandar a llamar la función para usarla.

  • variable tipo función: una variable es un espacio en memoria reservado para algo en particular.

  • Parámetros: Son valores predeterminados que tomará dicha función para trabajar.

  • corchetes o llaves: definen el bloque de código.

  • Bloque de código: espacio de ejecución de unas instrucciones previamente definidas.

  • Tipos de variables anónimas (sin nombre), por expresión, autoejecutables. Si quieren leer más al respecto: Más sobre funciones en Javascript

  • Notación Formas de notación o llamar una variable

aprendí por la malas que no se usan los acentos

Los corchetes, llaves, “como le squieran llamar” ó “estos bichitos de acá” 🤷‍♀️ {}. aparecen dependiendo de la distribución de teclado y la configuración del Sistema operativo. En Windows 10 pueden ir a la Configuración (Win + i) > Hora e idioma > lenguajes preferidos Ahí hay una opción con el idioma y teclado, al dar click aparece “opciones” y desde allí pueden configurar el teclado…

Ahora, siempre que se instala Windows se puede indicar el país pero NO SE CONFIGURA LA DISTRIBUCIÓN DEL TECLADO que tengamos, y en cualquier país de LATAM aparecerá la distribución Latinoamérica, pero el teclado puede tener la distribución de España.

Generalmente la distribuciones se identifica porque:

  • España: la arroba está en el 2 (muchos teclados de computador de escritorio)
  • Latinoamerica: la arroba está en la Q (portatiles y teclados de marca como Microsoft)

*La arroba sale presionando la tecla ALT o ALT GR a la derecha de la barra espaciadora y el 2 o la Q

Así que dependiendo del teclado de cada uno, en la config de Windows se puede cambiar a la distribución correcta

Los nombres de las funciones SIEMPRE empiezan por una letra, es una buena práctica que EMPIECE EN MINÚSCULA

Programar = Equivocarse
Equivocarse = Aprender

errores errores este video lo vi mil veces y no me salia y habia llamado mal a una funcion no se den por vencidos

Así me quedó con las funciones

<HTMl:5>
<head>
    <meta charset="utf-8" />
    <title>Rock Paper Sissors</title>
    <script>
        // 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 elegir un numero
        function numeroElegido(seleccionJugador) {
            let eleccion = ""
            if(seleccionJugador == 1) {  
                return eleccion = "piedra"
            } else if(seleccionJugador == 2) {  
                return eleccion = "papel"
            } else if(seleccionJugador == 3) {  
                return eleccion = "tijera"
            } else {
                return eleccion = "No elegiste una opción válida"
            } 
        }

        // La computadora elige aleatoreamente un número entre 1 y 3
        let eleccionpc = generarEnterosAleatorios(1,3)
       
        //El jugador elige: 1 es piedra, 2 es papel, 3 es tijera
        let eleccionjugador = 0
        eleccionjugador = prompt("Elige 1 para piedra, 2 para papel, 3 para tijera")
       
        //variable resultado
        let resultado = 0

        //Cuando el jugador gana
        if((numeroElegido(eleccionjugador) == "piedra" && numeroElegido(eleccionpc) == "tijera")
        || (numeroElegido(eleccionjugador) == "papel" && numeroElegido(eleccionpc) == "piedra") 
        || (numeroElegido(eleccionjugador) == "tijera" && numeroElegido(eleccionpc) == "papel")) {  
            resultado = "GANASTE"                 
        //Cuando el jugador empata
        } else if(eleccionjugador == eleccionpc) {
            resultado = "EMPATARON"  
        //Cuando el jugador pierde
        } else {
            resultado = "PERDISTE"  
        }        
        
        //Imprimir resultado
            alert("Elegiste " + numeroElegido(eleccionjugador) + "\n\nLa computadora eligió " + numeroElegido(eleccionpc) + "\n\nResultado: " + resultado)         
    </script>
</head>
<body>
<h1>PIEDRA PAPEL O TIJERA</h1>
<p>Este es nuestro primer programa complto y profesional</p>
<p>Gran programa</p>
</body>
</HTMl:5>

Les comparto el codigo de mi practica del juego con funciones:
<!DOCTYPE html>
<html>
<head>
<meta charset=“utf-8” />
<title>Piedra, papel o tijera Version 2</title>
<script>
function aleatorio(min,max){
return Math.floor(Math.random()*(max-min+1)+min)
}
function opcion(op){
if(op == 1){
return “piedra”
}
else if(op == 2){
return “papel”
}
else if(op == 3){
return “tijera”
}
else {
return “perder”
}

    }
    // 1 es piedra 2 es papel, 3 es tijera
	let jugador = 0, pc = 0
    let numVictorias=0, numEmpates=0, numDerrotas=0
    let mensaje = ""
    for (let i=1; i<=5; i++){
        pc=aleatorio(1,3)
        jugador = prompt("Elige: 1 para piedra, 2 para papel, 3 para tijera ")

        mensaje=opcion(jugador)
        alert("Jugador eligio "+mensaje)  
        mensaje=opcion(pc)
        alert("La PC eligio "+mensaje)                      
    // COMBATE
        if(jugador == pc){
            alert("EMPATE")
            numEmpates++
        }
        else if(jugador == 1 && pc == 3){
            alert("GANASTES")
            numVictorias++
        }  
        else if(jugador == 2 && pc == 1){
            alert("GANASTES")
            numVictorias++
        } 
        else if(jugador == 3 && pc == 2){
            alert("GANASTES")
            numVictorias++
        }
        else {
            alert("PERDISTES")
            numDerrotas++
        }
    }  
    alert("Ganastes: "+numVictorias+" veces\nEmpatastes: "+numEmpates+" veces\nPerdistes: "+numDerrotas+" veces") 

</script>

</head>
<body>
<h1>Juego de Piedra papel o tijera Version con funciones</h1>
</body>
</html>

No es el mejor algoritmo pero estoy feliz porque lo logré con pocos intentos, espero les sirva ❤️

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Juego</title>
    <script>
        // piedra = 1, papel = 2. tiejara = 3
        let resultado = 0
        const opcion1 = "piedra" 
        const opcion2 = "papel"
        const opcion3 = "tijera"
        const max = 3
        const min = 1

        const jugador = prompt("Elige: 1 para piedra, 2 para papel y 3 para tijera")
        const pc = Math.floor(Math.random() * (max - min + 1) + min)
        
        function decision(jugador, pc){
            if (jugador == pc){
                resultado = alert("Empate")
            }
            else if(jugador == 1 && pc == 2){
                resultado = alert("Elegiste " + opcion1 + " pc elige " + opcion2 + "\n" + "¡PERDISTE!")
            }
            else if(jugador == 2 && pc == 3){
                resultado = alert("Elegiste " + opcion2 + "pc elige " + opcion3 + "\n" + "¡PERDISTE!")
            }
            else if(jugador == 3 && pc == 1){
                resultado = alert("Elegiste " + opcion3 + "pc elige " + opcion1 + "\n" + "¡PERDISTE!")
            }
            else if(jugador == 2 && pc == 1){
                resultado = alert("Elegiste " + opcion2 + "pc elige " + opcion1 + "\n" + "¡GANASTE!")
            }
            else if(jugador == 3 && pc == 2){
                resultado = alert("Elegiste " + opcion3 + "pc elige " + opcion2 + "\n" + "¡GANASTE!")
            }
            else if(jugador == 1 && pc == 3){
                resultado = alert("Elegiste " + opcion1 + "pc elige " + opcion3 + "\n" + "¡GANASTE!")
            }
            else alert("Elección incorrecta :(")
            return jugador
        }

        decision(jugador, pc)

    </script>
</head>
<body>
    <h1>Mi primer juego</h1>
</body>
</html>

Súper contenta con las clases. Aquí mi aporte. Yo utilice arrow function, estas son funciones de tipo flecha que nos permiten crear funciones de una manera más limpia en comparación con las funciones regulares. Igual es algo que seguramente veremos más adelante. A darle!!

No fui capaz de recortar mas el código 😒

Les adelanto lo que quizá sea un Spoiler, pero puede les sirva si tuvieron algun inconveniente.
La función que retorna la jugada aleatoria de la PC es un numero, mientras la nuestra (prompt) es un String.

Truco para formatear codigo en Visual Studio Code


  1. Selecciona el texto
  2. Con el menú contextual (botón derecho del ratón sobre el texto seleccionado) escoger sobre el menú la opción “format selection”

  1. Selecciona el texto
  2. utilizar el método abreviado: CTRL+K CTRL+F

https://youtu.be/e3EyqGnb6XM
si aun te cuesta entender las funciones te recomiendo este video y nunca pares de aprender

Va mi aporte! Usé la misma función para mostrar el resultado al final😃

Asi se ve:

Aqui mi aporte. Mismo juego, pero con una **temática **distinta.

alguien en 2023

Cuando Freddy dijo: Es como cuando a un pintor se le va una pincelada y dice “Esto será un lindo arbolito” automáticamente pensé en esto"

acabo de notar que si eligo una opción “rebelde” no importa cuantas veces lo haga la pc siempre gana 😮

Gracias por la clase, muy bien explicado,

Realmente no entiendes lo que explica de la frustración por algún elemento faltante hasta que lo vives en carne propia, nunca había querido y odiado tanto a un signo = hasta que realice el código de esta clase jajajajaja

Estoy muy contento de entender poco a poco Javascript, conozco lo básico de HTML y CSS pero no me atrevía a dar el paso a un lenguaje de programación.
¡Vamo a darle! 💪

TOP NOTES:

  • If you have to copy and paste the same code, this should be a function.
  • All functions should be put on the top
  • The “function” word must be written in minus.
  • The functions’ names have the same rules, should be written in minus and the first character must be letter too
  • If the first character is minus, it’s probably been a function or variable.

I’m also practising in English. I look forward to your feedback ☕

Estuve rompiéndome la cabeza mirando el código y me di cuenta que no me mandaba resultados porque en un lado escribí “election” y en otro lado “eleccion” xD

Eres un crack enseñando

Soy novato en el tema, pero nunca me imaginé lo interesante que es programar. Espero aprender mucho más y ser un experto como veo de muchos acá.
Excelente instructor Freddy Vega

Este curso es fascinante, he aprendido muchas cosas a este punto, con código pude calcular los capítulos que ha visto un amigo de su serie favorita (También funciona para cualquier serie), y este es el código que escribí para hacerlo, sé que no es perfecto, pero sí funcional

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Capitulos de la serie</title>
        <script> 
        function capiTotales(cap, numeroDeTemporada, capPortemporada){
            return Math.floor(numeroDeTemporada * capPortemporada - (capPortemporada - cap))
        }
        let capitulo = 0
        let temporada = 0
        let capTemporada = 0
        temporada = prompt("Escribe por cuál temporada vas")
        capitulo = prompt("Escribe por cuál capitulo vas")
        capTemporada = prompt("Escribe cuántos capitulos hay por temporada")
        let capitulosVistos = capiTotales(capitulo, temporada, capTemporada)
        alert ("Has visto " + capitulosVistos + " capitulos en total")
        </script> 
    </head>
    <body>

    </body>
</html>
<code> 

Ejemplo:



Revisen que tengan bien escrito el alert, dure como 3 horas con un error, y era que tenial mal escrito alert, y no hacia el combate.

Hola, quiero compartir lo que se aprendio en clase, funciona super bien.

<!DOCTYPE html>
<html>
<head>
<meta charset=“utf-8” />
<title>Piedra, Papel o Tijera</title>
<script>
function aleatorio (min, max) {
return Math.floor(Math.random () * (max - min + 1) + min)
}
function eleccion(jugada) {
let resultado = ""
if(jugada == 1) {
resultado = “Piedra ✊”
} else if (jugada == 2) {
resultado = “Papel ✋”
} else if (jugada == 3) {
resultado = “Tijeras ✌”
} else{
resultado = “😒Mal elegido 🤷‍♀️”
}
return resultado

        }
        // 1 es piedra, 2 es papel, 3 es tijera
        let jugador = 0
        let min = 1
        let max = 3  
        let pc= aleatorio(1,3)
        jugador = prompt("Elige: 1 para piedra, 2 para papel, 3 para tijera")
        //alert("Elegiste " + jugador)
       alert("Pc elige: " + eleccion(pc))
       alert("Tu eliges: " + eleccion(jugador))
        // COMBATE
        if(pc == jugador){
            alert("😲EMPATE😳")
        } else if(jugador == 1 && pc == 3) {
            alert("🎊GANASTE🍻")
        } else if(jugador == 2 && pc == 1) {
            alert("🎖GANASTE🥂")
        }else if(jugador == 3 && pc == 2) {
            alert("🍰GANASTE🍾")
        
        }else {
            alert("💔PERDISTE💔")
        }

    </script>
<body> 
    <h1>Piedra, Papel o Tijera</h1>

</body>
</head>

</html>

🤓 REUTILIZACIÓN DEL CÓDIGO!!!

Siempre que veas código que al parecer sede usarse varias veces, intenta no repetirlo.
Las funciones pueden ayudarte con esto.
Si quieres mostrar el mismo mensaje varias veces en tu código, no lo repitas, solo encierra este código en una función y ejecuta esa función cuantas veces quieras.

mi codigo anterior tambien usa un loop para jugar 5 veces y enttega el resulem de los resultados de los juegos, espero lo revisen y comenten

Hice una función más para el combate, es parecida a la de las alertas

Esta es mi función que implementa la lógica del juego

function juego(pc, human) {
            let resultado = "PERDISTE";
            if (human == pc) resultado = "EMPATE";
            if (human == 1 && pc == 3) resultado = "GANASTE";
            if (human == 2 && pc == 1) resultado = "GANASTE";
            if (human == 3 && pc == 2) resultado = "GANASTE";
            return resultado;
        }

Dato curioso, la variable pc es un INT y la variable jugador es un STRING

Créeme que aquí vamos! 🧻

Remember

Si tienes que copiar y pegar el mismo código muchas veces, entonces debería ser una función

PRO TIP para tener siempre bien formateado el código:
Activar en preferencias del VSCode la opción Format on save:
De esa manera, cada que guardemos nuestro archivo lo formateará automáticamente, corrigiendo cosas como el indentado, espacios innecesarios o faltantes, comillas, paréntesis, y un largo etcétera.

Espero sea útil, saludos! 😄

¡RECUERDEN! Mantener el mismo nombre de sus variables, y si van a cambiarla, les recomiendo seleccionar la variable que cambiaran y utilizar el comando CTRL+D, que les permite seleccionar a misma variable la veces que se encuentre repetida.

(el comando de CTRL+D lo aprendi en un comentario que hicieron, lean los comentarios, entre todos, construimos el edificio del conocimiento)

hay tres tipos de funciones.
Funciones que no retornan nada por ejemplo alert(“soy una función pero no retorno nada”) es curioso la función alert no solo funcione con cadenas de texto o string también funciona con números enteros (8), booleanos(2.342).

Vamos con el segundo tipo y es tipo de función que no tiene parámetros Math.random() y lo que en realidad estoy haciendo ahí es invocarla para que se ejecute de inmediato de igual forma pasa con la función alert(123134).

Y por ultimo está la que retorna algo y aquí si la declaro para luego invocarla para poder crear una función debo de escribir la palabra sagrada function ojo si la f va en mayuscula no va funcionar luego le paso el nombre a mi función puede ser cualquier nombre pero nunca debe de empezar con un signo especial como ¿*"! y con un numero 637543 siempre debe de empezar con una legra esto respeta las reglas para declarar variables este nombre que le paso a mi función es una variable pero, pero de tipo función luego abro paréntesis y dentro va algo que se llama parámetros y escribo mis variables si son muchas separadas por una coma (,) y luego cierro el paréntesis después dejo un espacio y abro llaves ({) y cierro(}) dentro de las llaves voy a escribir todo el código que quiero que me retorne con la palabra sagrada return.

encontré 2 extensiones para VS code que son muy útiles.
. La primera es ident-rainbow : Te ayudara a ver el orden de la identación , que es de lo que habla Freddy sobre mantener cada bloque de código alineado a un margen.

. La segunda es Error Lens : Nos va a mostrar instantáneamente algún error que cometamos escribiendo una línea de código; La línea va a quedar resaltada en rojo, alertándonos de que hay un error.

quizás han leído un código que postee errado en una de las anteriores clases. Bueno encontré una forma mas simple y funcional de hacer el combate. y funciona.

 if (pc==jugador){
            alert("EMPATE")
           }else if(Math.abs(pc-jugador)==1 && pc<jugador){
            alert("HAS GANADO")
           } else if (Math.abs(pc-jugador)==2 && pc>jugador){
            alert("HAS GANADO")
           }else {
            alert("HAS PERDIDO")
           }
tengo una duda en la funcion eleccion(jugada){let resultado = " " if(jugada == 1) {resultado = "piedra".. como sabe la funcion que jugada es el numero que va a elegir el jugador? si en ningun lugar se especifico. quien puda ayudarme

Un compañero y yo hicimos esta calculadora que:
suma
resta
multiplica
divide
saca porcentajes

con lo aprendido en las doble condición; if y else

CALCULADORA

<html>
<head>

<script>

// 1. sumar, 2. restar, 3. multiplicar, 4. dividir, 5. porcentaje
let usuario = 0
usuario = prompt (" Elige: 1. sumar, 2. restar, 3. multiplicar, 4. dividir, 5. porcentaje")
valor1 = parseInt(prompt ("introduce el primer valor "))
valor2 = prompt ("introduce el segundo valor si no es porcentaje ")
let resultado

// alert (" elegiste " + usuario)

if (usuario == 1) {
resultado = (valor1 + parseInt(valor2))
} else if (usuario == 2) {
resultado = (valor1 - parseInt(valor2))
} else if (usuario == 3) {
resultado = (valor1 * parseInt(valor2))
} else if (usuario == 4) {
resultado = (valor1 / parseInt(valor2))
} else if (usuario == 5) {
resultado = (valor1 / 100)
}
alert (resultado)

</script>

</head>

<body>

</body>

</html>

estuve media hora revisando que hice mal y cuando aregle eso se daño otra cosa los memes de programacion son mas canon de lo que pense
Uy que dicha...he buscado cursos básicos y no había encontrado el método que me llevara poco a poco...excelente...mil gracias...
TENGO 40 AÑOS Y APENAS ESTOY APRENDIENDO , OJALA QUE CUANDO APRENDA ME CONTRATEN PARA SENTIRME FELIZ Y UTIL....(Cuando consiga empleo me pagare un curso) GRACIAS FREDDY POR LOS CURSOS GRATIS
que frustrante pero creo que si puedo
voy superr bienn!!!
Alguien que pueda ayudarme, no sé en que estoy fallando, al correr el código y escribir alguna respuesta y darle enter ya no me arroja nada después ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-01-01%20015349-f2efea4c-7396-4f69-baf4-252c66d7a892.jpg)
\*tambien
Siento que apartir de la claqse de funciones como k uno se empieza a perder un poquito :(
ya me perdi !!!!!!

siiiiiiuuuuuuuuuuuuuuuu

Las llaves pueden llamar en ingles “mustache” que es “bigote” en espaniol 〰️ lo que lo hace divertido. En ingles el termino normal pero menos divertido es “curly brackets” o “braces”.

DEJO MI CÓDIGO POR SI NO LES CORRE, TUVE QUE ORDENAR TODO DE UNA FORMA METICULOSA PARA QUE CORRIERA

<!DOCTYPE html>
<head>
<meta charset=“utf-8”/>
<title> PIEDRA, PAPEL O TIJERA</title>

<script>

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

function eleccion(jugada)
{ let resultado = "HOLA"
if (jugada == 1) { resultado = “PIEDRA”}
else if (jugada == 2) { resultado = “PAPEL” }
else if (jugada == 3) { resultado = “TIJERA”}
else {resultado = “NULO”}
return resultado
}

let jugador = 0

jugador= prompt("ELIGE UN NUMERO DE 1 A 3")
alert("TU ELIGES:---- " + eleccion(jugador))

let pc = aleatorio(1,3)
alert("PC ELIGE: " + eleccion(pc))

//COMBATE

if (pc == jugador) {alert(“EMPATE”)}
else if (jugador == 1 && pc == 3) {alert(“GANASTE”)}
else if (jugador ==2 && pc == 1) {alert(“GANASTE”)}
else if (jugador ==3 && pc == 2) {alert(“GANASTE”)}
else {alert(“PIERDES”)}

</script>
</head>
<body>
<h1>PIEDRA, PAPEL O TIJERA</h1>
</body>
</html>

Este es el código que hice e intenté refactorizar. En el combate, utilicé un método que mencionaron en clases pasadas, según los comentarios, usando [inserte música tenebrosa] ¡ÁLGEBRA, pero sencilla! 😉
.

Lo que se intenta hacer es crear una matriz donde se resten las posiciones del Jugador y PC (en mi caso lo hice PC - jugador, ¿por qué? ¡Porque sí, jeje!). Obtendrás los números que indican si es un empate, si gana el jugador o si pierde.
.
Recuerda, el álgebra es tu amigo, no tu enemigo. 🤭
.
Acepto retroalimentación para optimizar y hacer más eficiente el código. ¡Gracias! 😋
.

Tuve un error al corregir el final del código, resulta que el navegador no mostraba mi elección ni la del PC en el alert, razón? me olvidé de borrar el doble igual ( == ) de la variable resultado en lugar de dejar solo uno, lo que hizo que se compararan en lugar de asignarle el texto XD

Me tardé un buen rato en detectar este simple error jajaja

Cosas importantes:
Las funciones son pedacitos de código que mientras los escribamos de una manera de propósito general podemos reusarlos muchas veces
Una regla muy Importante es que nunca debes estar copiando el mismo código; eso merece ser una función para ser invocada cuando la necesites
La función te permite traer cosas de lugares
Las funciones son verbos (acciones)” traer”
Y estas deben temer parámetros, es decir (Que deben hacer)
Las funciones son nombres de variables
Es una buena práctica que comiencen por una letra y que esta sea en minúscula
Y los parámetros siempre van entre paréntesis
El resultado de esa función es lo que vamos a colocar en una variable (o sea, el que)
Y a esto de doy un RETURN (que es lo que espero que me devuelva)
Se considera una buena práctica:
Primero declaro las funciones que voy a usar en mi programa
Y luego las uso
Antes de usar una función, primero la debo definir, declarar (que es básicamente escribirla)
Por eso la escribimos debajo de donde esta nuestra función aleatoria

La palabra function debe ir en minúscula.
Luego va un espacio
Lo que hacemos, es que aquí debajo de la función aleatorio vamos a crear una nueva función y esa nueva función la vamos a llamar elección y lo que le pedimos por parámetro es el tipo de jugada que hice, de esa manera sé qué voy a elegir una vez más abrimos llaves
function elección (jugada){
}
Programar es manejar la frustración del error perdido
Y lo que voy hacer es cargar acá mi elección, es decir voy a copiar y lo voy a ajustar un poquito y lo ajusto con TAB.
Lo que queremos hacer es que esta función me RETORNE EL RESULTADO.
Entonces, lo que voy hacer es Dentro de la función voy a crear una variable que se llame resultado y le voy a crear un stream vacío
Let resultado = “ “
Reemplazo jugador por jugada y en vez de alert disparo un resultado = abro comillas y quito paréntesis en todos los renglones, al último le agregamos opción invalida
Resultado = “piedra”
Resultado = “papel”
Resultado = “tijera”
Resultado = “OPCIÓN INVALIDA”

Ahora tengo que retornar el valor
¿Y que es lo que retorno? Pues la variable resultado
Return resultado
Entonces yo ya sé que hay una variable jugada que entra por parámetro
Que:
Si la jugada es 1 resultado es = a piedra
Si la jugada es 2 resultado es = a papel
Si la jugada es 3 resultado es = a tijera
Y si la jugada no es igual a ninguno de las 3 el resultado es = a opción invalida Y REGRESO EL RESULTADO,

Entonces Ahora, puedo quitar todo este código y en vez de eso
Alert(“pc elige: “ + elección(pc))
Alert(“tú eliges: “ + elección(jugador))
Y guardamos
Control s

Este es mi codigo con saludo de bienvenida en la pagina
<!DOCTYPE html>
<html>
<head>
<meta charset=“utf-8” />
<title>Piedra, papel o tijeta</title>
<script>
function aleatorio(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
function eleccion(jugada) {
let resultado = ""
if(jugada == 1) {
resultado = "Piedra " + nombre
} else if(jugada == 2) {
resultado = "Papel " + nombre
} else if(jugada == 3) {
resultado = "Tijera " + nombre
} else {
resultado = "Haz Elejido PERDER " + nombre
} return resultado
}
let nombre = ""
nombre = prompt(“Cuál es tu nombre?”)
alert("Bienvenido " + nombre)
// 1 es piedra, 2 es papel, 3 es tijera
let jugador = 0
let pc = aleatorio(1,3)
jugador = prompt(“Elige: 1 para piedra, 2 para papel y 3 para tijera”)
//alert(“Elejiste” + jugador)

        alert("Tu eliges: " + eleccion(jugador))
        alert("Pc elige: " + eleccion(pc))
        
        // COMBATE
        if(pc == jugador) {
                alert("Empataste " + nombre)
            } else if(jugador == 1 && pc == 3) {
                alert("Ganaste " + nombre)
            } else if (jugador == 2 && pc == 1) {
                alert("Ganaste " + nombre)
            } else if (jugador == 3 && pc == 2) {
                alert("Ganaste " + nombre) 
            } else {
                alert("Perdiste " + nombre)
            }
    </script>
</head>
<body>
    <h1>Piedra, papel o tijera F5 para continuar</h1>
</body>

</html>

Así va mí código:

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

        function eleccion(jugada) {
            // Opciones de elección: 1 -> Piedra, 2 -> Papel, 3 -> Tijera
            let resultado = ""
            if(jugada == 1) {
                resultado = "Piedra 🥌"
            } else if(jugada == 2){
                resultado = "Papel 🧻"
            } else if(jugada == 3 ){
                resultado = "Tijera ✂"
            } else{
                alert("Opción no disponible")
            }
            return resultado
        }
        
        let jugador = 0
        let pc =  aleatorio(1,3)
        jugador = prompt("A jugar!! elije: 1 -> Piedra, 2 -> Papel ó 3 -> Tijera ")

        alert("Humano elige: " + eleccion(jugador))
        alert("Máquina elige: " + eleccion(pc))
        
        //Combate!!
        if(pc == jugador) {
            alert("EMPATE! 😑")
        } else if( (jugador == 1 && pc == 3) 
					|| (jugador == 2 && pc == 1) 
					|| (jugador == 3 && pc == 2) )
{
            alert("GANASTE! 🏆")      
        } else{
            alert("PERDISTE! 👎")
        }

funciones:pedacitos de codigo

❤️

Tengo este error de corchete y no puedo solucionarlo pero unos solucion que funcione pero no me gusta es copiarlo en otro archivo y misteriosamente funciona 😐

// Este es el ejercicio de hacer un juego de piedra papel o tijera pero con funciones

    let min = 1, max = 3, nombre = "", emoji = "", pc = Math.floor(Math.random() * (max - min + 1) + min)

    function Asiganacion(valor) {
        if (valor == 1) {
            emoji = "✊"
        } else if (valor == 2) {
            emoji = "✋"
        } else if (valor == 3) {
            emoji = "✌"
        } else {
            emoji="Opcion invalida, No puede jugar"
        }
        return emoji
    }
    
    // nombre = prompt("Cual es su nombre")
    let user = prompt("Hola, " + nombre + ", Seleccione una opcion, 1. Para ✊ 2. Para ✋ 3. Para ✌")       
    
    alert("El usuario eligio: "+ Asiganacion(user))
    alert("La maquina eligio: "+ Asiganacion(pc))

    if (user == pc) {
        alert("Empataron por que La Maquina tambien saco " + emoji)
    } else if (user < pc) {
        alert("El usuario pierde, la maquina saco " + emoji)
    } else if (user == 3 && pc == 1) {
        alert("El usuario pierde la maquina saco " + emoji)
    } else if (pc < user) {
        alert("La maquina pierde el usaurio saco " + emoji)
    } else if (pc == 3 && user == 1) {
        alert("La maquina pierde el usaurio saco " + emoji)
    }
</script>

Alt + Shitf + F Organiza TODO el código (le da espacios)

miren mi codigo de piedra papel o tijera

<code> 
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Algoritmo piedra, papel o tijera</title>
        <script>
            //1 es piedra, 2 es papel, 3 para tijera
            let jugador = 0
            let min = 1
            let max = 3
            let pc = Math.floor(Math.random() * (max - min + 1) + min)
            //OBTENIENDO LA ELECCIÓN DEL JUGADOR
            jugador = prompt("Elige: 1 para piedra, 2 para papel, 3 para tijera");
            //alert("Elegiste " + jugador)
            if(jugador == 1) {
                alert("Elegiste ✊")
            } else if(jugador == 2) {
                alert("Elegiste 📄")
            } else if(jugador == 3) {
                alert("Elegiste ✂️")
            }
            else {
              alert("Elegiste  PERDER!!!")
            }
            if(pc == 1) {
                alert("pc Eligio ✊")
            } else if(pc == 2) {
                alert("pc Eligio 📄")
            } else if(pc == 3) {
                alert("pc Eligio ✂️")
            }
            // PIEDRA PAPEL O TIJERA TU VS PC!!!
            if(pc == jugador){
                alert("EMPATE :O")
            } else if(jugador == 1 && pc == 3) {
                alert("GANASTE SIUUUU")
            } else if (jugador == 2 && pc == 1){
                alert("GANASTE SIUUUU")
            } else if (jugador == 3 && pc == 2){
                alert("GANASTE SIUUUU")
            }
             else {
                alert("oh no... PERDISTE!!!")
            }
        </script>
    </head>
    <body>
        <h1>Piedra, papel o tijera</h1>
    </body>
</html>

“Programar es manejar la frustración del error”.

Recomiendo usar el inglés en nombres simples como rock, paper, scissors, player, win, tie, lose. Son pequeños detalles que aportan para familiarizar el idioma y nuestros proyectos. Aparte que nos preparan por si tenemos como objetivo trabajar en países angloparlantes. Have a good one, brothers and sisters 🐨🔝

Este es mi codigo con mucho ❤ para todos

<<!DOCTYPE html>
<html>
     <head>
        <meta charset="utf-8" />
        <title>Piedra, papel o tijera</title>
     <script>
        function aleatorio(min, max) {
            return Math.floor(Math.random() * ( max - min + 1 ) + min)
        }

        function eleccion(jugada) {
            let resultado = ""
        if(jugada == 1) {
            resultado = "Piedra 🥌"
        } else if(jugada == 2) {
            resultado = "Papel 🧻"
        } else if (jugada == 3) {
            resultado = "Tijera ✂"
        } else {
            resultado = "MAL ELEGIDO"
        }
        return resultado
    }    
    
    // 1 es piedra, 2 es papel, 3 es tijera
    let jugador = 0
    let pc = aleatorio(1,3)
    jugador = prompt("Elige: 1 para piedra, 2 es papel, 3 para tijera")
    //alert("Elegiste " + jugador)

    alert("PC elige: " + eleccion(pc))
    alert("Tu eliges: " + eleccion(jugador))

        // COMBATE
        if(pc == jugador) {
            alert("EMPATE") 
        } else if(jugador == 1 && pc == 3) {
            alert("GANASTE")
        } else if(jugador == 2 && pc == 1) {
            alert("GANASTE")
        } else if(jugador == 3 && pc == 2)  {
            alert("GANASTE")
        } else {
            alert("PERDISTE jajajajajaj me burlo")
        }
        </script>
    </head>
     <body>
        <h1>Piedra, papel o tijera</h1>
  </body>
</html>> 

Pos aquí andamos prosperando con nuevos cursos pa mi curriculum.

Jajajaja, Freddy haciendo un Bob Ross con eso de los parentesis incompletos 😂

<!DOCTYPE html>
Este es un tipo de documento en HTML5, es una declaración que indica al navegador web que se está utilizando HTML5.

<html>
Este es el contenedor principal de todo el código HTML, es el lugar donde se escriben todas las etiquetas necesarias para crear una página web.

<head>
Es una sección donde se escriben las meta-informaciones de una página web, esto incluye cosas como el título de la página que se muestra en la pestaña del navegador, los enlaces a los estilos css y javascript entre otros.

<meta charset=“utf-8”>
Es una meta-etiqueta que especifica la codificación de caracteres que se utilizará en el documento HTML.

<title>Piedra Papel o Tijera</title>
Es el título que aparecerá en la pestaña del navegador y que es utilizado por los buscadores para identificar la página.

<script>
Es donde se escribe el código JavaScript, es decir, las instrucciones que harán que la página web tenga ciertas acciones.

function aleatorio(min, max) {return Math.floor(Math.random()*(max-min + 1) + min)}
Esta es una función, es un bloque de código reutilizable que se puede llamar en varios puntos de nuestro código. En este caso esta función recibe dos argumentos min y max, que representan los valores mínimo y máximo de un rango. Utiliza una función predefinida de javascript Math.random() que genera un número aleatorio entre 0 y 1, luego se multiplica por el rango que queremos (max-min) y se suma el valor mínimo. Finalmente se utiliza Math.floor() para redondear hacia abajo el número resultante asegurando así que sea un entero. El valor que devuelve la función es ese número aleatorio entero dentro del rango que se le especifico.

Por ahora estoy viendo el material y lo repetire hasta que aprenda, por ahora no hago aportes

[ ] —> corchetes
{ } —> llaves
( ) —> paréntesis

aqui esta la mia, totalmente funcional

!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8"/>
	<title>jueguito de 🥌 🧻 ✂</title>
	<script>
		//intro
	    alert("Bienvenido a tu juego 😀")	
		let choice = ""
		choice = prompt("¿Deseas jugar?, si o no" )
		if(choice == "si"){
		

			//corre el juego
			// 1 roca, 2 papel, 3 cuchilla
				// inicio de funciones
				function aleatorio(min,max){
					return Math.floor(Math.random() * (max - min + 1) + min)
				}

				function opcion (move){
					let resultado = ""
				  if (move == 1){
				  	 resultado = "🥌"
				  }else if (move == 2){
				  	 resultado = "🧻"
				  }else if (move == 3){
				  	 resultado = "✂"
				  } else alert("el " + player + " no se vale, tramposo")
				  return resultado 
				}
                // fin de funciones

			//declaracion de variables
			let player = 0
			let pc = aleatorio(1,3)
			// eleccion del player
			  player = prompt("elige tu tirada: 1 piedra, 2 papel, 3 tijera")

			  //BATTALLA 
			     if (player == 1 || player == 2 || player == 3){

			  		alert("pc elige: " + opcion(pc) + " mientras que tu elegiste: " + opcion(player))
				   if (player == pc){
				   	alert("entonces es EMPATE 😮")
				   	m = "hum, empate, mayor suerte la prosima vez 🤗"
				   } else if (player == 1 && pc == 3){	   	
				   	alert("entonces GANASTE😀")
				   	m = "Felicidades, eres un ¡CAMPEON! 😎"
				   } else if (player == 3 && pc == 2){			   
				   	alert("entonces GANASTE😀")
				   	m = "Felicidades, eres un ¡CAMPEON! 😎"
				   } else if (player == 2 && pc == 1){			   
				   	alert("entonces GANASTE😀")
				   	m = "Felicidades, eres un ¡CAMPEON! 😎"
				   }  else {
				   	alert("entonces PERDISTE😪")
				   	m = "Felicidades, eres un ¡PERDEDOR, PERRA! 😡"
				   }
			       alert(m)
			   } else { alert("no puedes jugar con esa opcion")}

			  //final del juego
			// despedida 
			let bye = ""
			bye = prompt("¿Deseas volver a jugar? 🤔: si o no")
			if (bye == "si"){
				alert("recarga la pagina 😀")
			}else {
				alert("cierra esta pagina, hasta luego 😘")
			}

		}else if (choice == "no"){
		alert("tienes miedo de que te gane, ¡PERRA!" )
		}else{
		 alert("(" + choice + ") no es valido 🤷🏻‍♂️")
		}



	</script>
</head>

<body>
	<p>espero que les halla gustado mi aporte</p>
</body>
</html>
	

Segui la misma logica para poder sintentizar en una funcion la parte del combate en el juego, cualquier sugerencia estare abierto a leerla

function combate(jugador,pc){
         let desicion
         if (pc == jugador) {
        desicion="Empate"
      } else if (jugador == 1 && pc == 3) {
        desicion="Haz ganado"
      } else if (jugador == 2 && pc == 1) {
        desicion="Haz ganado"
      } else if (jugador == 3 && pc == 2) {
        desicion="Haz ganado"
      } else {
        desicion="Perdiste"
      }
      return desicion
      }
alert(combate(jugador,pc))

Como 20 minutos en un error, pero con mucha atención al detalle logre que funcionara.

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

        function pchoise(choise){
            let resultado = "";
            if(choise==1){
                resultado = "Stone 🥌";
                return resultado;
            }else if(choise==2){
                resultado = "Paper 🧻";
                return resultado;
            }else{
                resultado = " Scissors ✂";
                return resultado;
            }
        }

        function match(home,player){
            if(player == home){
                alert('EMPATEE 🎮💥');
            }else if((player == 1 && home == 3) || (player == 2 && home == 1) || (player == 3 && home == 2) ){
                alert('GANADORA 🎉🥳🥂');
            }else {
                alert('Perdiste 😭😿🥀');}
        }
        //1 🧻 |2 🥌 |3 ✂
        let jugador = 0;
        let pc = randomm(3,1);
        
        jugador = prompt('1 Piedra, 2 Papel, 3 Tijera');
        
        alert("PC elige: " + pchoise(pc));
        alert("Tu eliges: " + pchoise(jugador));

        match(pc , jugador);

definitivamente si le toca a uno mirar bien entre mayúsculas puntos comas y demás y tener mucha paciencia para encontrar el error ya me paso y gracias a los comentarios lo pude solucionar

El proceso de refactoring en un proceso sistemático, en el cual vamos a conseguir mejorar nuestro código sin crear nuevas funcionalidades.

Esto último es muy importante, ya que por una parte mejoramos el código, y las funcionalidades se hacen por otro lado.