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

Visual Studio Code

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

Aleatoriedad

10/84
Recursos

Aportes 174

Preguntas 77

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Para el reto de hacer menos l铆neas de c贸digo tu que d茅 el mismo resultado, tienen que tener en cuenta que no siempre tienen que achicar el c贸digo y que quede un c贸digo que no se pueda entender.
Recuerden 鈥淯n buen programador no es el que hace menos l铆neas de c贸digo, es el que hace c贸digo que se pueda entender鈥.

Aqu铆 esta como yo achiqu茅 el c贸digo.

Utilic茅 un booleano llamado 鈥渙鈥, que en c贸digo se expresa 鈥渱|鈥.
Espero haya sido de ayuda mi comentario.

驴C贸mo se obtiene la f贸rmula con la clase Math?

  • Para geeks que les encanta saber m谩s.

Supongamos que queremos n煤meros aleatorios entre 1 y 5:

  1. Definimos nuestro rango:
    En papel ser铆a hacer 5 - 1= 4
    En nuestro c贸digo hacemos:
(max - min)      _
  1. Generamos un numero aleatorio con Math.random y lo multiplicamos por el rango anterior.
    Recuerda que Math.random() devuelve un n煤mero aleatorio entre 0 (incluido) y 1 (no incluido)
Math.random() * (max - min)       _
  • El m铆nimo resultado que obtendremos ser谩 0 x 4 = 0

  • Por simplicidad supongamos que el m谩ximo ser谩 0.999 x 4 = 3.996

OjO -> Como Puedes ver, nos falta algo ya que queremos que el valor m铆nimo sea 1 y el m谩ximo 5,
y si le quitamos los decimales a estos resultados el m铆nimo ser铆a 0 y el m谩ximo ser铆a 4.

  1. Para corregir el m铆nimo, podemos sumar al resultado final el l铆mite inferior:
(Math.random() * (max - min)) + min      _
  • El m铆nimo resultado que obtendremos ser谩 (0 x 4) + 1 = 1

  • El maximo resultado que obtendremos ser谩 (0.999 x 4) + 1 = 4.996

OjO -> De nuevo estamos en problemas porque si bien ahora el m铆nimo es 1, el m谩ximo sigue siendo 4

  1. Es evidente que en lugar de multiplicar 0.999 x 4, necesitamos generar algo para que el valor m谩ximo sea 0.999 x 5
    La 煤nica forma de hacerlo es que el Rango sea 5

Aqu铆 surge la idea de sumar 1 al rango:

(Math.random() * (max - min + 1)) + min      _

RECAPITULEMOS:

  • El m铆nimo resultado que obtendremos ser谩 0 x 5 + 1= 1

  • El maximo resultado que obtendremos ser谩 (0.999 x 5) + 1 = 5.995

Yay! Lo hemos conseguido鈥racias por leer hasta aqu铆

馃憖 tu si tu, tambien te equivocaste escibiendo math.ramdon en el codigo y por eso no te salio xd tmr
es: Math.random

鉁嶐煆

**驴Math de donde sale y porque? **
Te cuento, Math es un _objeto _integrado en el lenguaje JavaScript por defecto e incluye bastantes _funciones _como los que vemos en esta clase (floor y random) entre otras m谩s, y existen ah铆 en el lenguaje para que las uses cuando las necesites, donde sea dentro de JavaScript.
.
As铆 como Math, hay una gran variedad de otros objetos que puedes usar y que est谩n all铆, listos y disponibles, entenderlos o por lo menos saber que existen, te ayudara en multiples situaciones para que hagas magia programando. Un ejemplo es el m茅todo Date para usar fechas. 馃憣
.
M谩s Info: En este enlace

me costo entender pero nah como el explica me da hasta entender por que me dejo mi ex :麓(

10 - Aleatoriedad

  • Math.floor() 鈫 Quita los decimales a cualquier numero. La clase es Math y el punto . trae la funci贸n floor()
  • Math.random() 鈫 Genera un numero aleatorio, con la funci贸n random() Nunca es 0 pero tampoco 1 ejem: 0.1545615
  • Para programar un Nro aleatorio en un rango:
  1. Declarar el rango 鈫 min = 1 y max = 3
  2. Generamos el Nro aleatorio invocando Math.random()
  3. Ese Nro lo multiplicamos por (max-min+1)
  4. A toda la expresi贸n le quitamos los decimales con Math.floor()
  • Podemos convertir todo este bloque de c贸digo en una FUNCION con:
    • Las variables se declaran dentro del parametro
    • return 鈫 retorna la funcion,
    • Esta funcion se puede invocar las veces que quiera
function *nombre* (*parametro*) {
    return 
}
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title>Piedra, papel o tijera</title>
    <script>
        function aleatiorio (min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min)
        }
        // 1 es piedra, 2 es papel, 3 es tijera
        let jugador = 0
        let pc =  aleatiorio(1,3)

        jugador = prompt("Elije: 1 para piedra, 2 para papel, 3 para tijera ")
        //alert("Elejista " + jugador)
        if(jugador == 1) {
            alert("Elejiste 馃")
        } else if(jugador == 2){
            alert("Elejista 馃Щ")
        } else if(jugador == 3){
            alert("Elejiste 鉁")
        } else{ // Si elije otra opcion que no sea 1,2 o 3. mostrar:
            alert("ELEJISTE PERDER!!")
        }
        // para saber que eligio la pc
        if(pc == 1) {
            alert("PC elije 馃")
        } else if(pc == 2){
            alert("PC elije 馃Щ")
        } else if(pc == 3){
            alert("PC elije 鉁")
        } else{ // Si elije otra opcion que no sea 1,2 o 3. mostrar:
            alert("PC ELIJE PERDER!!")
        }

        // COMBATE
        // 1. verificar que no empatamos
        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>
</head>

<body>
    <h1>Piedra, papel o tijera</h1>
</body>

</html>

Si no les sale a la primera Recuerden que se trata m谩s de leer c贸digo que de programar! 馃憣

Buenas tardes, me he tomado la libertad de hacer el famoso juego de piedra, papel, tijeras, lagarto, spock que sale en la seri The big bang theory. Espero que est茅 todo bien:

<html>
<head>
<meta charset=鈥渦tf-8鈥 />
<title>Mi primera programada</title>
<script>
// 1 es piedra, 2 es papel, 3 es tijera
let jugador = 0
let pc = Math.floor(Math.random() * 5);
jugador = prompt(鈥淓lige: 1 para piedra, 2 para papel, 3 para tijera, 4 para lagarto y 5 para spock鈥)

  //Elecci贸n del jugador

  if(jugador == 1) {
    alert("Elegiste 馃")
  }else if (jugador == 2) {
    alert("Elegiste 馃搵")
  }else if (jugador == 3) {
    alert("Elegiste 鉁傦笍")
  }else if (jugador == 4) {
    alert("Elegiste 馃")
  }else if (jugador == 5) {
    alert("Elegiste 馃枛")
  } else {
    alert("Elegiste 馃懝")
  }

  //Elecci贸n del ordenador

  if (pc == 1){
    alert("El ordenador eligi贸 馃")
  }else if (pc == 2){
    alert("El ordenador eligi贸 馃搵")
  }else if(pc == 3){
    alert("El ordenador eligi贸 鉁傦笍")
  }else if (pc == 4) {
    alert("El ordenador eligi贸 馃")
  }else if (pc == 5) {
    alert("El ordenador eligi贸 馃枛")
  }

  //Combate

  if(pc==jugador){
    alert("Empate")
    resultado="empate"
  } else if (jugador == 3 && pc == 2 || jugador == 2 && pc == 1 || jugador == 1 && pc == 4 || jugador == 4 && pc == 5 || jugador == 5 && pc == 3 || jugador == 3 && pc == 4 || jugador == 4 && pc == 2 ||  jugador == 2 && pc == 5 || jugador == 5 && pc == 1 || jugador == 1 && pc == 3) {
    alert("GANASTE")
    resultado = "victoria"
  } else {
    alert("PERDISTE")
    resultado = "derrota"
  }

</script>

</head>
<body>
<h1>Piedra, papel, tijeras, lagarto, spock</h1>
<script>
if(resultado==鈥渧ictoria鈥){
document.write("<p>隆Ganaste! 鉂わ笍</p>");
}else if(resultado==鈥渄errota鈥){
document.write("<p>隆Perdiste! 馃懝</p>");
}else{
document.write("<p>隆Empate! 馃き</p>");
}
</script>
</body>
</html>

Siento que el jugador 鈥淧C鈥 sabe lo que hace porque me ha ganado en 7 ocasiones seguidas 馃槷

Sin darme cuenta estoy aprendiendo y jugando con JavaScript ** :3 **

Tuve la oportunidad de terminar el anterior curso de programaci贸n justo antes del lanzamiento de este鈥 El lenguaje ha cambiado y esta es una gran raz贸n para no parar de aprender.
Ac谩 les dejo mi aporte y el enlace a GitHub. se acepta todo tipo de feedback

Buenas Practicas


Simplificar codigo no es reducir las lineas solamente, tambien es aumentar su comprensi贸n al ser leido.
Al final de esta clase a todos nos queda un codigo muy redundante en su logica y un poco largo, eso complica su lectura y comprensi贸n, una buena practica al programar es evitar las redundancias.


驴Como lo hacemos?

Con las funciones, estas nos permiten encapsular codigo que vayamos a utilizar multiples veces, esto significa que no tendremos que escribir una sentencia una y otra vez, sino solo una vez reutilizando ese codigo solamente cambiando sus parametros.


<h5>Aqui mi ejemplo:</h5>

Vas a pasar mas tiempo leyendo codigo de otra persona que escribiendo codigo.

Math.floor(Math.random() * (max - min + 1) + min);

Mi c贸digo comprimido manteni茅ndolo entendible:

    <script>
        // Funci贸n para generar numeros aleatorios entre un rango asignado
        function generateRandomInteger(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        // La computadora elige aleatoreamente un n煤mero entre 1 y 3
        let eleccionpc = GenerarNumerosEnterosAleatorios(1,3)
        if(eleccionpc == 1) {  
            eleccionpc = "piedra"
        } else if(eleccionpc == 2) {  
            eleccionpc = "papel"
        } else if(eleccionpc == 3) {  
            eleccionpc = "tijera"
        }

        //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")
        if(eleccionjugador == 1) {  
            eleccionjugador = "piedra"
        } else if(eleccionjugador == 2) {  
            eleccionjugador = "papel"
        } else if(eleccionpc == 3) {  
            eleccionjugador = "tijera"
        }

        //variable resultado
        let resultado = 0

        //Cuando el jugador gana
        if((eleccionjugador == "piedra" && eleccionpc == "tijera")
        || (eleccionjugador == "papel" && eleccionpc == "piedra") 
        || (eleccionjugador == "tijera" && eleccionpc == "papel")) {  
            resultado = "GANASTE"                 
        } else if(eleccionjugador == eleccionpc) {
            resultado = "EMPATARON"  
        //Cuando el jugador pierde
        } else {
            resultado = "PERDISTE"  
        }        
        
        //Imprimir resultado
            alert("Elegiste " + eleccionjugador + "\nLa computadora eligi贸 " + eleccionpc + "\nResultado: " + resultado)         
    </script>

Se me apago el cerebro鈥 tengo que reiniciarlo jajajajajaja

Podr铆a ser un aporte para c贸digo mas peque帽o, o tal vez no, que un experto me lo diga si es que estoy mal o esa forma es una mala practica o algo. Es para el numero aleatorio lo que hice fue.
var aleatorio=Math.floor((Math.random() * 3)+1);

Ejemplo si el Math.random me genera 0.5; seria
0.5 * 3=1.5+1=2.5, con el floor se convierte en 2; y pueden probar con cualquier numero aleatorio, siempre te dar谩 un numero del 1 al 3.

Con funciones se puede reducir el codigo un ejemplo de ello.

Casi me saco un ojo con la batalla pero lo logre jajajaj Muchas gracias! fue divertido 馃槈

      // BATALLA
      if (jugador == pc) {
        alert("EMPATE");
      } else if (
        (jugador == 1 && pc == 3) ||
        (jugador == 2 && pc == 1) ||
        (jugador == 3 && pc == 2)
      ) {
        alert("GANASTE! 馃帀馃帀馃コ馃馃帄");
      } else {
        alert("Perdiste 馃槶馃樋馃");
      }

Este apunte te va ayudar mucho si quedaste, con dudas con el Math.random, otra cosa si ves las letras con rojo es que es may煤scula esos peque帽os detalles a veces son dif铆cil de en encontrar.

Pas茅 una hora buscando porque no me sal铆a
Hab铆a escrito 鈥淢atch鈥 en lugar de 鈥淢ath鈥

Aqu铆 les dejo mi aporte. Aunque no simplifiqu茅 mucho el c贸digo, lo mejor茅 un poco.

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

        // 1 es piedra, 2 es papel, 3 es tijera
        let jugador = 0;
        let pc = random(1, 3);
        jugador = prompt("Elige: 1 es 鉁, 2 es  馃搫, 3 es 鉁傦笍")


        function condition(name, variable) {
            if (variable == 1) alert(`${name} eligi贸 鉁奰);
            else if (variable == 2) alert(`${name} eligi贸  馃搫`);
            else if (variable == 3) alert(`${name} eligi贸 鉁傦笍`);
            else alert("Elije una opci贸n v谩lida");
        }

        condition("Elkin", jugador);
        condition("PC", pc);
        kombat(jugador, pc);

        // COMBATE 
        function kombat(player1, player2) {
            if (!player1 || !player2) {
                alert("BATALLA CANCELADA");
                return;
            }

            if (player1 == player2) alert("Es un EMPATE")
            else if (
                (player1 == 1 && player2 == 2) ||
                (player1 == 2 && player2 == 3) ||
                (player1 == 3 && player2 == 1)
            ) alert("PERDISTE");
            else alert("GANASTE :D")
        }
    </script>

Con la menor cantidad de l铆neas posibles(solo reduje la condici贸n del combate y simplifique las condiciones en una sola l铆nea, tambi茅n es otra forma de ver el c贸digo)

FUNCIONES

隆Estas le dan vida a JavaScript y a nuestro c贸digo!

Debemos usar la palabra function y luego el nombre de esta funci贸n. Luego par茅ntesis () seguido de llaves {}.
Entonces en la memoria se va a guardar esta funci贸n. Ese espacio tendr谩 el nombre que ya le asignamos.

Dentro de los par茅ntesis colocamos par谩metros que son los datos que necesita nuestra funci贸n para procesarlos y devolver un resultado. La funci贸n puede funcionar sin par谩metros, si no los necesita. Por ejemplo, la funci贸n random() (que viene por defecto en el navegador) no necesita par谩metros para devolvernos un n煤mero decimal aleatorio, pero la funci贸n alert() necesita que le enviemos la cadena de texto que se va a mostrar en pantalla, o no saldr谩 nada.

**Dentro de las llaves ** escribimos la l贸gica de nuestro c贸digo. Podemos escribir funciones dentro de otras funciones y devolver el resultado usando la palabra return. Puede que la funci贸n no necesite devolver resultado y puede entonces no tener la palabra return.

Las llaves {} Se pueden ver en diferentes expresiones de JavaScript, y sirven para encerrar c贸digo. Se usa en las funciones, condicionales y siclos, y podemos llamar a todo lo que est谩 dentro un Objeto. Mientras avances sabr谩s por qu茅.

Invocar a la funci贸n es muy sencillo.
Solo hay que escribir el** nombre** que le asignamos al espacio de memoria de la funci贸n seguido de ().

nombre()
``` Y dentro de los par茅ntesis escribimos la informaci贸n que necesita la funci贸n para procesarla. Cuando se coloca aqu铆 esta informaci贸n se le llama **argumentos**. Es necesario enviar _argumentos_ para que sean recibidos en los _par谩metros_ de la funci贸n.

Si eres de lo que fue trolleado por el factor 鈥渁leatorio鈥 pensando que tu codigo estaba mal y resulta que tu codigo estaba bien solo que la pc tiro 10 veces seguidas el mismo valor, ven铆 que te doy un abrazo xq me paso lo mismo!

Yo estoy iniciando la carrera de JavaScript y vengo del curso b谩sico de JavaScript (muy bueno por cierto 馃槈) y en uno de los retos hicimos el mismo juego鈥 aqu铆 comparto la l贸gica de mi juego para comparar la opci贸n del jugador y del CPU.

Sin los comentarios serian 15 lineas de c贸digo pero los a帽adi para que sea m谩s f谩cil comprenderlo (yo tambi茅n voy iniciando). Tambi茅n las variables de los nombres son descriptivas pero en el c贸digo final serian remplazadas por la elecci贸n del usuario. Esto es 煤nicamente la l贸gica para comparar las elecciones y determinar qui茅n gana.

Gist link: https://gist.github.com/rookiecarlos/44f64892d41438fdf957f471afc0cd19

function startGame(user, gpu) {
    // != siginifica Si no son iguales... haz esto, basicamente lo contrario a si son iguales :)
    if (user != gpu) {
        // Como dijo Freddy en clases pasadas solo hay tres maneras en el que el usuario gana
        // A continucion tenemos dichos tres escenarios
        if (user == rock && gpu == scissor) {
            console.log('You win!');
        } else if (user == paper && gpu == rock) {
            console.log('You win!');
        } else if (user == scissor && gpu == paper) {
            console.log('You win!');
        // Si ninguno de los tres escenarios de arriba se cumple entonces gana la GPU
        } else {
            console.log('You lost!');
        }
    // Si las elecciones del usuario y del GPU son iguales cae en este else, quedaria en empate
    } else {
        console.log('Draw!');
    }
}

Me est谩 encantando el curso. Es genial. La habilidad de Freddy para compartir conocimiento es admirable.
Pero existe algo que en ocasiones me distrae un poco. Al principio, y en determinadas ocasiones, me provocaba risa. Ya no.
Sucede que constantemente Freddy utiliza una frase: 鈥淣o apagues el cerebro鈥. Al igual que otras formas de incitar a las personas, que probablemente tienen asociaciones negativas con las matem谩ticas, a continuar aprendiendo.
A m铆, francamente, me distrae un poco.
Comprendo que ciertas personas necesiten un 鈥榚mpuj贸n鈥. Pero en mi caso, sucede que estoy plenamente concentrado en lo que est谩 explicando y de un momento a otro hace alguna puntualizaci贸n para aquellas personas. En esos momentos me encuentro bastante estimulado por entender algo que desconozco (estado de flujo) y esas pausas, por breves que puedan ser, me desconcentran un poco.
Desconozco si soy la 煤nica persona que experimenta esto, pero me es inc贸modo. Suele hacerlo con frecuencia en diversos cursos o en v铆deos de otras plataformas.
Pierdo la concentraci贸n, al punto de motivarme a escribir 茅ste comentario. :麓)

Les comparto mis notas de clase, por ahora estan en construcci贸n mientras voy avanzando!

Enjoy

prendiendo de nuevo programaci贸n y la tercera es la vencida

Hola! Saben como adjunto imagenes a este chat?

Hola a todos, he intengado optimizar un poco y reutilizar una funcion para el caso de que eligio la pc y el jugador y la funcionalidad de 3 vidas para salirse del juego.

   function aleatorio(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min)
        }
        function choose(propiedad, valor) {
            let tipo
            if (valor == 1) {
                tipo = 'Piedra'
            } else if (valor == 2) {
                tipo = 'Papel'
            } else if (valor == 3) {
                tipo = 'Tijera'
            } else {
                tipo = 'Perder!!!'
            }
            return alert(propiedad + 'elige: ' + tipo);}

        let num1 = 1
        let num2 = 3
        let pc = aleatorio(num1, num2);
        contador = 3
        // 1 = Piedra, 2 = Papel, 3 = Tijera.
        while (contador > 0) {
            let jugador = prompt('Piedra, Papel o Tijera 1,2,3!!');
            choose('Jugador ', jugador);
            choose('pc ', pc);
            if (jugador == pc) {
                alert('Es un empate')
                status = false
            } else if (jugador == 1 && pc == 3) {
                alert('GANASTE!!')
                status = false
            } else if (jugador == 2 && pc == 1) {
                alert('GANASTE!!')
                status = false
            } else if (jugador == 3 && pc == 2) {
                alert('GANASTE!!')
                status = false
            } else {
                alert('HAS PERDIDO');
                contador--
            }
            document.write('Te quedan ' + contador + ' vidas!!')

Math.floor le quita los decimales a cualquier n煤mero.

Para volver a invocar una funcion en consola solamente presionen flecha arriba 馃槂

Les comparto mi c贸digo humildemente, seguimos aprendiendo!

Siempre tuve la duda de como hacer que el computador escogiera algo al azar, en este caso los n煤mero y me parece excelente. Me voy a poner un poco creativo en el juego a ver que tal me va. De repente pedir al usuario que diga si va a jugar contra la computadora o un versus contra un amigo en la misma pc jajajaja

Excelente curso ya estaba pensando en retirarme de la programaci贸n

// Peque帽o juego de priedra, papel o tijera
function aleatorio (min, max) {
    return Math.floor( Math.random() * (max - min + 1) + min );
}
function seleccion (opcion) {
    switch (parseInt(opcion)) {
        case 1:
            return "Priedra 馃";
        case 2:
            return "Papel 馃搫";
        case 3:
            return "Tijeras 鉁";
        default:
            return "Perder.";
    }
}
function resultado(pc, jugador) {
    if (pc == jugador) {
        return "Empate!";
    } else if ((jugador == 1 && pc == 3) || (jugador == 2 && pc == 1) || (jugador == 3 && pc == 2)) {
        return "Ganaste!!!";
    } else {
        return "Perdiste :C";
    }
}

// 1 es piedra, 2 es papel, 3 es tijera
let continuar = 1;
let jugador, pc = 0;
while (continuar == 1) {
    pc = aleatorio (1, 3);
    jugador = prompt("Elige 1 para piedra, 2 para papel y 3 para tijeras.");
    alert("Elegiste: " + seleccion(jugador) + ". La PC eligi贸: " + seleccion(pc) + ". El resultado es: " + resultado(pc,jugador));
    continuar = confirm("驴Volver a jugar?");
}

tiene toda la raz贸n cuando dice que es m谩gico, me cae tan Bien El profe 鈾ワ笍

En vez de tener un bloque de c贸digo para mandar la alerta de la elecci贸n del jugador y otro para la elecci贸n de la pc, cre茅 una funci贸n de las opciones del juego (piedra, papel y tijera), que ser铆a como tener los dos bloques en uno.
Solo har铆a falta, como se ve en el c贸digo, invocar la funci贸n 2 veces: uno para enviar la alerta del la elecci贸n del jugador y otro para la alerta de la pc.

Con lo que he aprendido as铆 me sali贸 mi c贸digo con la m铆nima cantidad de c贸digo

      //Variables globales del juego
      jugador = 0;
      pc = Math.floor(Math.random()*3)+1;

      //Capturar desici贸n
      jugador = prompt ("1.Piedra, 2.Papel, 3.Tijeras");

      //Proporcionar desiciones 
      if(jugador == 1)
      {
        alert("Escogiste piedra");
      }
      else if(jugador == 2)
      {
        alert("Escogiste papel");
      }
      else if(jugador == 3)
      {
        alert("Escogiste tijeras");
      }
      else
      {
        alert("Opci贸n no valida");
      }

      if(pc == 1)
      {
        alert("Pc escogi贸 piedra");
      }
      else if(pc == 2)
      {
        alert("Pc escogi贸 papel");
      }
      else if(pc == 3)
      {
        alert("Pc escogi贸 tijeras");
      }

      //Combate
      if(jugador != 1 && jugador != 2 && jugador != 3)
      {
        alert("Perdiste por defecto")
      }
      else if (jugador == pc)
      {
        alert("Empate");
      }
      else if ((jugador == 1 && pc == 2) || (jugador == 2 && pc == 3) || (jugador == 3 && pc == 1))
      {
        alert("Perdiste");
      }
      else
      {
        alert("Ganaste");
      }

Hola a todos, aqui les mando mi juego, le meti algunas cosas para que quedara mejor, es mi primera vez codeando, pero estoy aprendiendo mucho, espero alguna retroalimentaci贸n 馃槂
PD: Perd铆 jsjs :v

En la l贸gica creo estar bien, pero en la funcionalidad, veo necesario mostrar el valor de cada elecci贸n

let player = prompt("Elige una opci贸n\n 1 Piedra \n 2 Papel \n 3 Tijeras");
let pc = Math.floor(Math.random()*(3 - 1 + 1)+1);
console.log(pc);
let winner = player == pc ? alert("Empate") : 
             player == 1 && pc == 2 ? alert(`Elegiste ${player} y Pc eligio ${pc} perdiste`):
             player == 3 && pc == 1 ? alert(`Elegiste ${player} y Pc eligio ${pc} perdiste`):
            alert("Numero erroneo") 

Intente hacer un algoritmo de n煤meros aleatorios sin ver la clase.
Tal vez no es la mejor manera ni la m谩s eficiente, pero hice mi mejor intento.
驴Qu茅 opinan de mi c贸digo?

    let numeroMin = parseInt(prompt('pon el numero minimo'));
    let numeroMax = parseInt(prompt('pon el numero maximo'));
    let promedio = ((numeroMin + numeroMax)/2)*5;
    let numeroDefinitivo = numeroMax + 1;
    let condicion = false;

    while (condicion == false) {
        let aleatorio = Math.random();
        numeroDefinitivo = promedio*aleatorio;
        if(numeroMax > numeroDefinitivo && numeroDefinitivo > numeroMin){
            document.write(numeroDefinitivo + '</br>')
            condicion = true;
        }
        
    }

Fantastic!

  • Bueno esta es una opci贸n f谩cil pero algo enga帽osa pues el juego ya esta arreglado porque tu le das que opci贸n sacar al jugador y al pc. 馃槓
var jugador = "tijeras";
var cpu = "piedra";

if (jugador == cpu) {
    console.log("Perdiste");
} else if (jugador == "piedra" && cpu == "papel") {
    console.log("Perdiste");z
} else if (jugador == "papel" && cpu == "tijeras") {
    console.log("Perdiste");
} else if (jugador == "tijeras" && cpu == "piedra") {
    console.log("Perdiste");
} else {
    console.log("Ganaste");
}
  • Esta pues es casi lo mismo del video, solo que unas 6 lineas menos xd
var jugador = prompt("馃 es 1, 馃搩 es 2, 鉁傦笍 es 3. 驴Que eliges?");
var cpu = aleatorio(1, 3);

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

if(cpu == 1) {
  alert("La maquina eligio 馃")
} else if (cpu == 2) {
  alert("La maquina eligio 馃搩")
} else if (cpu == 3) {
  alert("La maquina eligio 鉁傦笍")
}

if (jugador == cpu) {
  alert("empate");
} else if (jugador == 1 && cpu == 2) {
  alert("Perdiste");
} else if (jugador == 2 && cpu == 3) {
  alert("Perdiste");
} else if (jugador == 3 && cpu == 1) {
  alert("Perdiste");
} else {
  alert("Ganaste");
}

Estos son los cambios que le hice a mi codigo.

hace un par de d铆as estaba haciendo un c贸digo y necesitaba redondear y use Math.floor, muy buen curso, ayuda bastante a reforzar conocimientos

<!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);

        }
        // 1  es piedra , 2 es papel, 3  es tijera;

        let min = 1;
        let max = 3;

        let JUGADOR = "0";
        let pc = aleatorio(1,3);
        
        JUGADOR = prompt("Elije: 1 para piedra, 2 para papel, 3 para tijera");
        // alert ("Elegistes " + JUGADOR);

        // ELIJE JUGADOR.

        switch(true){

            case(JUGADOR == 1): alert ("Elegistes 鉁");
            break;

            case(JUGADOR == 2): alert ("Elegistes 鉁");
            break;

            case(JUGADOR == 3): alert ("Elegistes 鉁");
            break;

            default: alert("NO ES NINGUNA DE LAS OPCIONES 鉂");
            break;

        }

        
        // ELIJE MAQUINA.

        switch(true){


            case(pc == 1): alert ("PC elije 鉁");
            break;

            case(pc == 2): alert ("PC elije 鉁");
            break;

            case(pc == 3): alert ("PC elije 鉁");
            break;

        }

        // COMBATE

        switch (true){

            
            case (pc == JUGADOR): alert("EMPATE");
            break;

            case (JUGADOR == 1 && pc == 3): alert("GANASTE馃弳");
            break;

            case (JUGADOR ==2 && pc == 1): alert("GANASTE馃弳");
            break;

            case (JUGADOR ==3 && pc ==2): alert("GANASTE馃弳");
            break;

            default: alert("PERDISTES 鉂");
            break;
            
        }


    </script>

    <body>
        <h1>Piedra, Papel o tijera </h1>
    </body>

</head>

</html>

Math.floor() (redondea hacia abajo al entero m谩s cercano)
Math.ceil() (redondea hacia arriba al entero m谩s cercano).
Math.random() devolver谩 un n煤mero de coma flotante mayor o igual que 0 y menor que (pero nunca igual a) 1

Para generar un numero entero del 1 al 3, a mi me funciono lo siguiente:

let pc = Math.floor(Math.random()*3 + 1);

  • Los n煤meros aleatorios en los PC鈥檚 est谩n entre el 0 y 1.
  • La funci贸n Math.floor le quita los decimales a los n煤meros.
  • El punto me permite traer una funci贸n que esta dentro de mAth para este caso.
  • Math.random, es usada para generar n煤meros aleatorios en un rango de que va a estar entre 0 y 1, mas no va a tomar dichos valores.

esto es lo mas que pude hacerlo con menos lienas de codigo (me tarde mas de 1 hora porque intente reescribirlo apoyandome del codigo que ya hice en la clase)

Les comparto como es que comprim铆 el c贸digo inicial. En el bloque de combate utilice un operador OR para agrupar los diferentes escenarios donde podr铆amos ganar en una sola linea, usando || que en c贸digo significa " o " .

Hab铆a pausado el video cuando se explic贸 la formula mucho antes de la 鈥渕anera especial鈥, lo hab铆a colocado de esta manera y me funcion贸 igual

let jugador = 0
min = 1
max = 3
number = Math.floor(Math.random()*(max-min+1)+min)
pc = number
jugador = prompt(鈥淓lige: 1 para piedra, 2 para papel o 3 para tijera鈥)

La menor lineas de codigo se consigue metiendo en funci贸n el emoji y usando or(||) en condicional

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

      function eleccion(num) {
        if (num == 1) {
          return "鉁"
        }
        if (num == 2) {
          return "馃搫"
        }
        if (num == 3) {
          return "鉁傦笍"
        }
      }
      // 1 es piedra, 2 papel, 3 tijera
      let jugador = 0
      let pc = aleatorio(1, 3)
      jugador = prompt("Elige: 1 para piedra, 2 para papael 3 para tijera")

      alert("Elegiste " + eleccion(jugador))
      alert("PC elige " + eleccion(pc))

      if (pc == jugador) {
        alert("EMPATE")
      } else if ((jugador == 1 && pc == 3) || (jugador == 2 && pc == 1) || (jugador == 3 && pc == 2)) {
        alert("Ganaste")
      } else {
        alert("Perdiste")
      }

    </script>

<!DOCTYPE html>
<html lang=鈥渆s鈥>
<head>
<meta charset=鈥淯TF-8鈥>
<meta http-equiv=鈥淴-UA-Compatible鈥 content=鈥淚E=edge鈥>
<meta name=鈥渧iewport鈥 content=鈥渨idth=device-width, initial-scale=1.0鈥>
<link rel=鈥渋con鈥 href="./img/ico/games_02.ico" type=鈥渋mage/x-icon鈥 />
<title>PIEDRA_PAPEL_o_TIJERAS</title>

<script>
  function aleatorio(min, max){
    return Math.floor(Math.random() * (max - min + 1) + min);
  }
  /*  1 es piedra; 2 es papel; 3 es tijera. */
  let jugador = 0;
  
  /* VARIABLES MINIMOS Y MAXIMOS */
  let min = 1;
  let max = 3;

  /* LLAMADO A LA FUNCION */
  let pc = aleatorio(min, max); 
  jugador = prompt("Elije: 1 para piedra, 2 para papel, 3 para tijera");  
  /* jugador */
 if(jugador == 1) {
  alert('Elegiste piedra 馃Й');
 }else if(jugador == 2) {
  alert('Elegiste papel 馃');
 }else if(jugador == 3) {
  alert('Elegiste tijera 鉁');
 }else {
  alert('Elegiste perder');
 }
 /* jugador */

 /* pc */
 if(pc == 1) {
  alert('PC elige piedra 馃Й');
 }else if(pc == 2) {
  alert('PC elige papel 馃');
 }else if(pc == 3) {
  alert('PC elige tijera 鉁');
 }
 /* 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('PERDISTE');
 }
</script>

</head>
<body>
<H1>Piedra, papel o tijeras</H1>
</body>
</html>

Vamos a hacer matem谩ticas 馃槰馃樀鈥嶐煉

Vamos a hacer matem谩ticas divertidas 馃馃コ

Gracias crack por compartir tus conocimientos con los dem谩s de forma gratuita. Cada vez me gusta m谩s el curso 馃槂

馃槄 Bueno, Freddy dijo lo m谩s comprimido posible.

Alguien sabe porque no me funciona el return?? me vi el video otra vez y lo tengo todo como debe estar.

Aca les dejo el codito del tio Fredy.


        function aleatorio(max,min){
            return Math.floor(Math.random() * (max-min+1) + min) //Math.floor me convierte el decimal en entero. 
        }

        function jugada(mano){
            let resultado= " "
            if(mano == 1){
                resultado= "Piedra 馃彯"
            }else if(mano == 2){
                resultado= "Papel 馃搰"
            }else if(mano == 3){
                resultado= "Tijera 鉁"
            }else{
                resultado= "Mal elegido"
            }
            return resultado
        }


        // 1 Es piedra, 2 es papel y 3 es tijera.
        const player1= prompt("Juguemos piedra, papel o tijera. Donde 1 es piedra, 2 papel y 3 tijera 鈿") 
        const pc= aleatorio(3,1) 

        alert("Pc elige " + jugada(pc))
        alert("Tu eliges " + jugada(player1))


        if(player1 == pc){
            alert("Es un empate")
        }else if(player1== 1 && pc== 3){
            alert("Ganaste")
        }else if(player1== 2 && pc== 1){
            alert("Ganaste")
        }else if(player1== 3 && pc== 2){
            alert("Ganaste")
        }else{
            alert("Perdiste")
        }

No les pasa que鈥?鈥淰amos a hacer matem谩ticas ( yeih)鈥

2 seconds later:
"No te vayas, vuelve, vuelve. Vamos a hacer matem谩ticas divertidas"馃ぃ馃ぃ馃ぃ

Llevo horas practicando, me niego a avanzar hasta dominar la aleatoriedad 馃ぃ

Pueben y prueben. Esta es mi solucion. Les recomiendo que si desean aprender de verdad no se limiten a hacer lo mismo que el instructor

<script>
            //Juego de piedras, papel y tijeras
            function randoNumer(min, max){
                return Math.floor(Math.random()*(max-min+1)+min)
            }
            let jugador = 0
            let pc = randoNumer(1,3)
            jugador = prompt(
            "               VAMOS A JUGAR\n" +
            "                     馃暪锔忦煏癸笍\n" + 
            "       POR FAVOR ELIGE UNA OPCION馃幆\n" + 
            "                   馃搫PAPEL = 1\n" + 
            "                   鉁傦笍TIJERAS = 2\n" +                  
            "                   馃PIEDRA = 3"
            );

            if(jugador == 1 || jugador == 2 || jugador == 3){
                //JUGADOR
                if (jugador == 1) {
                alert("Elegiste Papel 馃搩馃搩");
                } else if (jugador == 2) {
                alert("Elegiste Tijera 鉁傦笍鉁傦笍");
                } else {
                alert("Elegiste Piedra 馃馃");
                }
                //PC
                if (pc == 1) {
                alert("La PC elige Papel 馃搩馃搩");
                } else if (pc == 2) {
                alert("La PC elige Tijeras 鉁傦笍鉁傦笍");
                } else {
                alert("La PC elige Piedra 馃馃");
                }
                //COMBATE
                if (pc == jugador){
                    alert("Es un empate 馃馃徑馃馃徑")
                }else if((jugador == 1 && pc == 3) || (jugador == 2 && pc == 1) || (jugador == 3 && pc == 2)){
                    alert("Ganaste al pc馃帀馃帀馃帀")
                }else{
                    alert("Has perdido 馃挃馃様馃挃")
                    }
            }else {
                alert("Dato fuera de rango o invalido")
            }
        </script>
function aleatorio(min,max)
        {
            return Math.floor(Math.random()*(max-min+1)+min)
        }
        
        let jugador = 0 , pc = aleatorio (1,3)

        jugador = prompt ("Elige 1 para piedra, 2 para papel, y 3 para tijera")
        
        function eleccion(jugada)
        {
            if (jugada == 1)
            {
                return "馃"
            }
            else if (jugada == 2)
            {
                return "馃Щ"
            }
            else if (jugada == 3)
            {
                return "鉁傦笍"
            }
            else
            {
                return "una opcion no disponible"
            }
        }

        alert ("Tu elegiste " + eleccion(jugador))
        alert ("La PC eligio " + eleccion(pc))
        
        function combate(pc,jugador)
        {
            if (pc == jugador)
            {
                return "EMPATE"
            }
            else if ((jugador == 1 && pc == 3) || (jugador == 2 && pc == 1) || (jugador == 3 && pc == 2))
            {
                return "GANASTE"
            }
            else
            {
                return "PERDISTE"
            }
        }

        alert(combate(pc,jugador))

como dijo un grande
Los grandes programadores copian, los genios roban!馃槀馃槀馃槀


esta fue la parte del codigo que logre acortar de forma exitosa

Seg煤n mi poca eperiencia en programaci贸n, lo que hice con el Math, funciona.
Lo prueban y me dicen como les va?

pc = (Math.floor(Math.random() * 10) % 3) + 1

//COMBATE
if(pc == jugador){
alert(鈥淓MPATE鈥);
} else if ((jugador == 1 && pc == 3) || (jugador == 2 && pc == 1) || (jugador == 3 && pc == 2)){
alert(鈥淕ANASTE鈥);
} else {
alert(鈥淧ERDISTE鈥);
}

Aleatorio en HTML

<!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)
            }
            //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 馃搩, 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 eligi贸 馃")   
            }
            else if(pc == 2) {
                alert("Pc eligi贸 馃搩")   
            }
            else if (pc == 3) {
                alert("Pc eligi贸 鉁傦笍")   
            }
            //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 if((jugador == 1 && pc ==3) || (jugador == 2 && pc == 1) || (jugador == 3 && pc == 2)) {
                alert("GANASTE")
            }
            else{
                alert("PERDISTE")
            }
        </script>
    </head>
    <body>
        <h1>Piedra, Papel o tijera</h1>
    </body>
</html>

Aleatorio en Python

import random
#1 es piedra, 2 es papel, 3 es tijera
comienza = random.randint(1, 3)
jugador = 0
pc = comienza
jugador = int(input("Elige: 1 para piedra , 2 para papel , 3 para tijera: "))           
#alert("Elegiste "+ jugador)
if jugador == 1:
  print("Elegiste piedra")
elif jugador == 2:
  print("Elegiste papel")
elif jugador == 3:
  print("Elegiste tijera")
else:
  print("Perdiste")  
  
if pc == 1:
  print("Pc eligi贸 piedra")
elif pc == 2:
  print("Pc eligi贸 papel")
elif pc == 3:
  print("Pc eligi贸 tijera")

#combate
if pc == jugador:
  print("EMPATE")
elif ((jugador == 1 and pc == 3) or (jugador == 2 and pc == 1)or (jugador == 3 and pc == 1)):
  print("GANASTE")
else:
  print("PERDISTE")
    

EXCELENTE APRENDIZAJE
No sab铆a que la programaci贸n era tan divertida

Aqu铆 est谩 mi contribuci贸n鈥 me tom茅 el tiempo de hacerlo un poco distinto y con multijugador. Se puede pulir bastante pero lo importante es aprender jeje

https://gitlab.com/JesusMohali/piedrapapeltijera

por ahora, lo que se me ocurre es agrupar los condicionales, con eso me ahorro varias lineas.

馃 Creo que logr茅 cumplir el reto
Estuve intentando por varios d铆as, finalmente llegu茅 una forma de 鈥渙ptimizar鈥 el c贸digo. Lo que hice fue unir las tres condicionales en una sola eliminando algunos pasos, aunque la desventaja es que no es pr谩ctico. Luego vi el aporte de Ronny ( @ronnyjm06 ), que de hecho ayud贸 a simplificar incre铆blemente el c贸digo por el uso de booleanos.
馃幃 Intenta jugarlo: https://fernanshay.github.io/rock-paper-scissor/

  • 1/4- Este es el c贸digo para el combate inspirado en la soluci贸n de Ronny 鈫

  • 2/4 - Y as铆 quedar铆a el c贸digo con las alertas de las selecciones (鈥渆legiste tijera鈥 鉁) 鈫

  • 3/4 - Y ahora este el c贸digo que yo hice, si lo observas con detenimiento es sencillo de entender 鈫

    Finalmente, descart茅 mi soluci贸n por ser poco pr谩ctica y me qued茅 con la soluci贸n de Ronny鈥

  • 4/4 - Este es el c贸digo completo junto al resultado 鈫

    Puedes ver el repositorio en GitHub, espero les guste mi aporte. 馃挌

La funci贸n (Math.random) sirve para crear aleatorios

Reto Cumplido!
Un aporte es en la validaci贸n de entrada de datos Jugador, espero les sirva!

Se que me falta mucho por aprender pero poco a poco!

EXPLICACION DE 鈥楳ATH鈥

Para hablar de Math, debemos entender que es una clase鈥

Las clases son un concepto de programaci贸n orientada a objetos.
En t茅rminos simples, una clase es una plantilla, y a partir de ella podemos crear objetos del mismo tipo y por lo tanto tienen caracter铆sticas y comportamiento.

Normalmente solo podemos acceder a las caracter铆sticas y al comportamiento solo si tenemos un objeto creado. Sin embargo, existen otro tipo de clases (plantillas) llamadas clases est谩ticas. La clase 鈥楳ath鈥 es una de ellas, por lo tanto podemos acceder a su comportamiento (el comportamiento de una clase se declara por medio de funciones) sin necesidad de crear objetos.

Me imagino que mas adelante se hablar谩 de esto en el curso.

Esta es mi nueva versi贸n la anterior la optimize de otra forma utilize parte del aporte de un compa帽ero con el uso || y recree el algoritmo con funciones para mayor legibilidad, espero que les aporte algo de valor.

<  <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
        // funcion aleatorio //
         function aleatorio(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min)
        }
        // player y pc //
        let player = prompt("Escribe 1, para piedra鉁, 2 para papel鉁, 3 para tijeras鉁")
        let pc = aleatorio(1 , 3)

        // selecci贸n //
        function seleccion(player, pc) { 
            if(player == 1 || pc == 1) {
                alert("Selecciono piedra 鉁")
            } else if(player == 2 || pc == 2) {
                alert("Selecciono papel鉁")
            } else if(player == 3 || pc == 3) {
                alert("Selecciono tijeras鉁")
            } else if(player < 1 || player > 3) {
                alert("No seleccionaste nada :(")
            } else{
                alert("No seleccionaste nada :(")
            }
        }
        seleccion(player)
        seleccion(pc)
        // Combate //
        function combate(pc, player) {
            if(pc == player) {
                alert("Empate")
            }else if(player == 1 && pc == 3 || player == 2 && pc == 1 || player == 3 && pc == 2) {
                alert("Ganaste :)")
            }else{
                alert("Perdiste")
            }
        } 
        combate(pc, player)
    </script>
</head>
<body>
    <h1>Pierdra, papel y tijeras.</h1>
</body>
</html>  > 

Buenas, les comparto la forma en que yo lo hice, se que se puede simplificar m谩s pero es una buena forma de utilizar aun m谩s las variables function.

<html>
<head>
<title>馃馃搫鉁</title>
<script>
function random (min, max) {
return Math.floor( Math.random() * (max - min + 1) +
min)
}

        let player = 0
        let pc = random (1,3)
        player = prompt ('1 = 馃, 2 = 馃搫, 3 = 鉁')

        function choice (play) {
            if (play == 1) {
                return '馃'
            }
            else if (play ==2) {
                return '馃搫'
            }
            else if (play ==3) {
                return '鉁'
            }
            else {return 'Wrong option鉂'}
        }
        alert( 'Tu eliges ' + choice(player))
        alert( 'PC elige ' + choice(pc))

        function combat (pc, player) {
            if (player == pc) {
                return 'Tie'
            }
            else if ((player == 1 && pc == 3) || (player == 2 && pc == 1) || (player == 3 && pc == 2)) {
                return 'You win'
            }
            else {
                return 'You lost'
            }
          }
        alert (combat(pc, player))
    </script>
</head>
<body>

</body>

</html>

Mi peque帽o aporte:

<!DOCTYPE html>
<html>
<head>
<meta charset=鈥渦tf-8鈥 />
<title>Papel, piedra y tijera</title>
<script>

        function numAleatorio(numMin,numMax){
            return Math.floor(Math.random() * (numMax-numMin+1)+numMin)
        }

        function mensajeEscogio(nombrePlayer, eleccion){
            nombreEleccion = ""
            eleccion = Math.floor(eleccion)
            if(eleccion == 1){
                nombreEleccion = "Papel"
            } else if(eleccion == 2){
                nombreEleccion = "piedra"
            } else{
                nombreEleccion = "tijeras"
            }
            alert(nombrePlayer + " escogi贸 " + nombreEleccion)
            return nombreEleccion
        }

        //1 papel, 2 piedra, 3 tijera
        let min = 1
        let max = 3
        let jugador = prompt("1 papel, 2 piedra, 3 tijera")

        if(jugador >= min && jugador <= max){
            let nombreJ = "Jugador"
            let nombreEleccionJ = mensajeEscogio(nombreJ, jugador)

            let nombrePC = "PC"
            let pc = numAleatorio(min,max)
            let nombreEleccionPC = mensajeEscogio(nombrePC, pc)

            if(jugador == pc){
            alert("Empate." + " J: " + nombreEleccionJ + " vs " + " PC " + nombreEleccionPC)
            } else if(jugador < pc && (jugador != min && pc != max)){
            alert("Gana " + nombreJ + ". J: " + nombreEleccionJ + " vs " + " PC: " + nombreEleccionPC)
            } else{
            alert("Gana " + nombrePC + ". J: " + nombreEleccionJ + " vs " + " PC: " + nombreEleccionPC)
            }
        }else{
            alert("No escogi贸 bien")
        }

    </script>
</head>
<body>
    <h1>Papel, piedra y tijera</h1>
</body>

</html>

<!DOCTYPE html>
<html>
<head>
<meta charset=鈥渦tf-8鈥>
<title>Piedra, papel o tijera</title>
<script>
//FUNCION GENERADORA DE NUMEROS ALEATORIOS
function aleatorio(min, max){
return Math.floor(Math.random()*(max-min+1)+min)
}
function elector(name, random_num){

            if(random_num==1){

            alert("El "+name+" eligi贸: 馃")

           }else if(random_num==2){

            alert("El "+name+" eligi贸: 馃摪")

           }else if(random_num==3){

            alert("El "+name+" eligi贸: 鉁")

          }else{
            alert("Elegiste un n煤mero inv谩lido")

          }
        }
        //1 es piedra, 2 es papel, 3 es tijera
        let jugador = 0
        let max = 3
        let min = 1
        let pc = aleatorio(max,min)
        jugador = prompt("Elige: 1 para piedra 馃, 2 para papel 馃摪,  3 para tijera 鉁")
        //alert("Elegiste "+ jugador)
        
        //Sistema PC
        elector("Jugador",jugador)
        elector("PC",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 鈽犫槧")
        }
    </script>

</head>
<body>
    <h1>Piedra, papel o tijera</h1>

</body>

</html>

siempre quise saber lo que es programar... son un vicio tus videos... GRACIAS por la buena explicaci贸n!

if (pc == player) {
alert(鈥淚t is a draw鈥)
} else if ((player == 1 && pc == 3) || (player == 2 && pc == 1) || (player == 3 && pc == 2)) {
alert(鈥淵ou are the winner鈥)
} else {
alert(鈥淧c is the winner鈥)
}

Me gusto mucho la parte de aleatoriedad, lo comprend铆 =)

Aqui mi aporte de codigo realizado en python

import random
jugador = 0
pc = 0
print("""Bienvenido al juego de piedra papel o tijeras
      Instrucciones para jugar:
      1 para piedra
      2 para papel
      3 para tijera
      """)
# Ingreso de datos
jugador = int(input("Ingresa un numero: "))

pc: int = random.randint(1,3)

print("Usted elgio ", jugador)
print("Pc eligio ", pc)

#inicio del juego
if jugador == pc:
      print("Esto fue un empate!")
elif jugador == 2 and pc == 1:
      print("Felicidades Ganaste!")
elif jugador == 1 and pc == 3:
      print("Felicidades Ganaste!")
elif jugador == 3 and pc == 2:
      print("Felicidades Ganaste!")
else:
      print("Perdiste")
<!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 elige(participante)
            {
                let mensaje = ""
                if(participante == 1){
                    mensaje = "馃"
                }
                else if(participante == 2){
                    mensaje = "馃搫"
                }
                else if(participante == 3){
                    mensaje = "鉁"
                }
                else{
                    mensaje = "PERDER"
                }
                return mensaje
            }
            // 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("Elegiste " + jugador)
            alert("Elegiste " + elige(jugador))
            alert("PC elige " + elige(pc))
            //COMBATE
            if(jugador == pc)
            {
                alert("EMPATE")
            }else if((jugador == 1 && pc == 3) || (jugador == 2 && pc == 1) || (jugador == 3 && pc == 2))
            {
                alert("GANASTE")
            }
            else{
                alert("PERDISTE")
            }
        </script>
    </head>
    <body>
        <h1>Piedra, papel o tijera</h1>
    </body>
</html>
if(jugador == pc){
            alert("Empate!!, juguemos nuevamente"
        }
        else if ((jugador == "馃" && pc == "馃摑") || (jugador == "馃摑" && pc == "鉁") || (jugador== "鉁" && pc == "馃")){
            alert("Has perdido!!")
        else if ((jugador == "馃" && pc == "鉁") || (jugador == "馃摑" && pc == "馃") || (jugador == "鉁" && pc == "馃摑")) {
            alert("Has ganado!!")
        }
        else{
            alert("PERDISTE!!")

Solamente dos veces me gano la PC,
He ganado 4 veces!!!
genial!!!

confundi macth con math. casi no encuentro el error

Dejo mi aporte con menos l铆neas de c贸digo, saludos.

<!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 elige(ppt) {
            switch (ppt) {
                case 1:
                    alert("La PC elige 馃")
                    break
                case 2:
                    alert("La PC elige 馃摪")
                    break
                case 3:
                    alert("La PC elige 鉁傦笍")
                    break
            }
        }

        function combate(jugador, pc) {
            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")
            }
        }
        let pc = aleatorio(1, 3)
        let jugador = prompt("Elige 1 es piedra, 2 es papel, 3 es tijera")
        elige(pc)
        combate(jugador, pc)
    </script>
</head>

<body>
    <h1> Piedra, papel o tijera</h1>
</body>

</html>

eh aqui mi aporte馃檧:

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

    //FUNCION PARA MOSTRAR ELECCIONES
   function mostrar(turno,quien){
    if(turno==1) {
        alert(quien + "馃")
    }else if(turno==2) {
        alert(quien + "馃Щ")
    }else if(turno==3){
        alert(quien + "鉁")
    }else{
        alert("Elegiste perder")
    }
   }

   //FUNCION DE COMBATE Y RESULTADOS
   function combate(persona1,persona2){
    if(persona1==persona2) {
        alert("Es un empate 馃槩")
    }else if(persona1==1&&persona2==3 || persona1==2 && persona2==1||persona1==3 && persona2==2 ){
        alert("ganaste 馃槝")
    }else{
        alert("Perdiste 馃槩")
    }
   }

    //VARIABLES
    let jugador=0
    let pc=aleatorio(1,3)
    jugador=prompt("Elige: 1 para piedra, 2 es papel y 3 es tijera")
    
    //EJECUCION DEL ALGORITMO
   mostrar(jugador,"Elegiste: ")
   mostrar(pc,"El pc eligi贸: ")
   combate(jugador,pc)

Hola esta fue la forma que encontre para optimizar el codigo

function numero(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
//1 es piedra 2 es papel 3 para tijera
let jugador = 0
let pc = numero(1,3)
array = [鈥減iedra鈥 , 鈥減apel鈥 , 鈥渢ijeras鈥漖
jugador = prompt(鈥淓lige: 1 para piedra, 2 par papel 3 para tijera鈥)

    if (jugador == 1 || jugador == 2 || jugador == 3) {
        alert("Elegiste " + array[jugador-1])
    }else{
        alert ("perdiste")
    }
    
    if (pc == 1 || pc == 2 || pc == 3) {
        alert("PC eligio " + array[pc-1])
    }else{
        alert ("perdiste")
    }
   

    if (pc == jugador) {
        alert("EMPATE")
    } else if (jugador == 1 && pc == 3 || jugador == 2 && pc == 1 || jugador == 3 && pc == 2 ){
        alert ("GANASTE")
    }else{
        alert("PERDISTE")
    }

que recuerdos veo a fredy explicando esto desde 2015 jaajajajja

Esto fue lo que se me ocurrio, aparte le a帽adi el uso de el operador || tambien creo que podria pogramar una funcion para la disparar la alerta con menos codigo.

<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)
        }
        //1 es piedra, 2 es papel, 3 es tijera
        let pc = aleatorio(1,3)
        jugador = prompt("Elije: 1 es piedra, 2 es papel, 3 es tijera")
        //alert("Elejiste " + emoji)
        if (jugador == 1){ (emoji =  "馃")}
        else if(jugador == 2) {emoji = "馃搫"} else if(jugador == 3) {emoji = "鉁傦笍"}
        else {alert("Elegiste PERDER")}
        if (pc == 1){ (emojipc =  "馃")}
        else if(pc == 2) {emojipc = "馃搫"} else if(pc == 3) {emojipc = "鉁傦笍"}
        alert("Elejiste " + emoji)
        alert("Pc elije " + emojipc)
        //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鈽狅笍")}
    </script>

</head>
<body>
    <h1>Piedra, papel, tijeras.</h1>

</body>

</html>

Aqui esta mi codigo, no lo puede simplificar mucho, solo declarando la funcion en una misma linea con arrow Functions, declarar la variable jugador en la misma linea y colocando en un mismo if todos las opciones q se tiene para ganar con || operador de or (creo q hay q usar cosas un poco mas avanzadas en comparacion con el curso para poder comprimir el codigo)

Este es mi codigo reducido, creo que se puede mejorar aun mas

<script>
      let usuario = prompt("Elige tu opcion: 馃 1, 馃摪 2, 鉁傦笍 3");
      let computador = Math.floor(Math.random() * (3 * 1 + 1) + 1);

      function eleccion(jugador) {
        if (jugador == 1) {
          return "馃";
        } else if (jugador == 2) {
          return "馃摪";
        } else if (jugador == 3) {
          return "鉁傦笍";
        } else {
          return "Decidiste Perder馃毇";
        }
      }
      //quizas podria incluir estos mensaje en una funcion o objeto
      alert("Tu elegiste " + eleccion(usuario));
      alert("El computador eligio " + eleccion(computador));

      if (usuario == computador) {
        alert("Empate 馃槷");
      } else if (usuario == 1 && computador == 3 || usuario == 2 && computador == 1 || usuario == 3 && computador == 2) {
        alert("GANASTE 馃弳");
      } else {
        alert("PERDISTE 馃槪");
      }
    </script>
function aleatorio(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

const pc = aleatorio(1, 3);
const jugador = prompt('Elige: 1 para piedra, 2 para papel, 3 para tijera');

if (jugador === 1 || pc === 1) {
  alert('Elegiste piedra 馃');
} else if (jugador === 2 || pc === 2) {
  alert('Elegiste papel 馃搩');
} else if (jugador === 3 || pc === 3) {
  alert('Elegiste tijera 鉁傦笍');
} else {
  alert('Elegiste PERDER');
}

// 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');
}

Justo en el curso anterior quede donde explicaba lo de generar n煤meros aleatorios(clase 18), eso me quemo la cabeza :p. Ahora entiendo un poco mejor as铆 que genial, esta vez s铆 lo probare a ver que tal me sale.

Hecho para que la persona escriba piedra papel o tijera

 function aleatorio(min,max){
      return Math.floor(Math.random()*(max-min+1)+min)
    }
    n = aleatorio(1,3)
    if (n == 1){
      pc = "piedra"
    }
    else if (n == 2){
      pc = "papel"
    }
    else {
      pc = "tijera"
    }
    let jugador = ""
    
    jugador = prompt("Piedra, papel o tijera?")
    
    if (jugador == "piedra"){
      alert("Elegiste "+ jugador)
    }
    else if(jugador == "papel"){
      alert("Elegiste "+ jugador)
    }
    else if(jugador == "tijera"){
      alert("Elegiste " + jugador)
    }else{
      alert("Perdiste, no elegiste ninguno")
    }
    if ( pc == "piedra" ){
      alert("El pc eligi贸 "+ pc)
    }
    else if(pc == "papel"){
      alert("El pc eligi贸 "+ pc)
    }
    else if(pc == "tijera"){
      alert("El pc eligi贸 " + pc)
    }else{
      alert("Perdiste, no elegiste ninguno")
    }
    //Combate
    if(pc == jugador){
      alert("Empate")
    }
    else if(jugador == "piedra" && pc == "tijera"  ){
      alert("Ganaste")
    }
    else if(jugador == "papel" && pc == "piedra"  ){
      alert("Ganaste")
    }
    else if(jugador == "tijera" && pc == "papel"  ){
      alert("Ganaste")
    }
    else if(jugador == "piedra" && pc == "papel"  ){
      alert("Perdiste")
    }
    else if(jugador == "papel" && pc == "tijera"  ){
      alert("Perdiste")
    }
    else if(jugador == "tijera" && pc == "piedra"  ){
      alert("Perdiste")
    }

  </script>