Ahora que conoces lo más básico de programar ¿te animas a crear un pequeño juego de piedra papel o tijera con tu navegador?
Esta clase requiere que sepas lo fundamental sobre crear archivos HTML y escribir código JavaScript. Si aún no lo sabes, entonces visita la primera clase del curso y empieza desde allí 🙂 Esta es la clase número 9 del curso gratis de programación básica de Platzi 💚
Tips para aprender a programar
Ahora, antes de empezar, déjame darte algunos tips que seguro te ayudarán 😉
Escribe comentarios con “//”
La computadora ignora todo lo que escribas después de un “//” en una línea de código. Así que puedes usar esto para dejar mensajes útiles para ti (o tus compañeros) a lo largo del código.
Por ejemplo:
//RECOGIENDO LA ELECCIÓN DEL JUGADORlet eleccionJugador =prompt();// Aquí el jugador elije piedra, papel o tijera
Nombra variables
Se recomienda fuertemente usar nombres que dejen claro el propósito de la variable. Evita usar nombres sencillos como “a”, porque puedes olvidar que es lo que hace cuando trabajas con muchas variables a la vez.
La práctica más común es utilizar nombres compuestos por varias palabras en Camel Case (sin espacios, empezando en minúscula, y colocando en mayúscula la inicial de todas las palabras después de la primera).
Ojo, recuerda no emplear acentos ni “ñ” en tu código para evitar errores de lectura.
Si lo piensas bien, el juego de piedra, papel y tijera requiere de condiciones como “si el jugador elije piedra y la computadora elije piedra, entonces el jugador gana”.
Para hacer eso en JavaScript debes seguir una formula sencilla:
if( variableAComparar ==ValorDeComparacion){//Código a ejecutar si la condición se cumple}elseif( variableAComparar ==ValorDeComparacion2){//Código a ejecutar si la condición 1 no se cumple, pero la segunda sí}else( variableAComparar ==ValorDeComparacion3){//Código a ejecutar si ninguna condición se cumple}
En resumen:
Usas if para evaluar la primera condición. else if, para evaluar más condiciones si la primera no se cumple, y else para decir lo que ocurrirá si ninguna otra condición se cumple.
Entre los paréntesis escribes la condición que deseas evaluar. Por lo general se compara una variable con un valor.
Recuerda que = se utiliza para asignar valores a las variables. Si deseas comparar variables con valores dentro de un if, entonces debes emplear un ==. También puedes emplear un ===si quieres comparar tanto el valor como el tipo de dato (número, string, o *boolean).
El código que escribas entre {} es el código que se va a ejecutar si la condición entre paréntesis se cumple.
💡 Los datos tipo Boolean son datos “Verdadero o falso”. Puedes escribirlos como true / false o 1 / 0. Por lo regular son muy útiles 👍
Escribiendo el algoritmo
Esto lo vamos a hacer en dos partes. Y lo primero es crear el archivo HTML dónde vamos a escribir nuestro código, abrirlo en nuestro editor de código, y escribir la base en HTML.
Intenta hacerlo sin ayuda 😉 Y si te pierdes, aquí te dejo el código que deberías preparar de primeras.
<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>Algoritmo piedra, papel o tijera</title><script></script></head><body><h1>Piedra, papel o tijera</h1></body></html>
Luego escribiremos un código que nos permita saber si el jugador elije piedra papel o tijera. Intenta crear una variable que capture la elección del jugador usando un prompt(). Explícale que escriba 1 para piedra, 2 para papel o 3 para tijera, y luego recuérdale el número que eligió con un alert().
Intenta hacerlo sin ver la solución. Cuando termines, compara lo que obtuviste con el código de abajo y sigue leyendo:
<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>Algoritmo piedra, papel o tijera</title><script>//OBTENIENDO LA ELECCIÓN DEL JUGADORlet eleccionDelJugador =0; eleccionDelJugador =prompt("Elige: 1 para piedra, 2 para papel, 3 para tijera");alert("Elegiste "+ jugador);</script></head><body><h1>Piedra, papel o tijera</h1></body></html>
Bien, ahora probemos con la condición. Primero convierte el recordatorio en un comentario. Vamos a crear un recordatorio más preciso, uno que le diga al usuario si eligió piedra, papel, tijera, o algo más.
Para hacerlo, inicia una condición dónde vas a hacer tres comparaciones. Primero usa un if para evaluar si el jugador eligió piedra. Si lo hizo, envíale un alert() indicándole que eligió piedra. Luego usa un par de else if para evaluar si eligió papel o tijeras, y envíale un alert() en cada uno informándole de su decisión.
Finalmente, emplea un else para evitar que el jugador quiera pasarse de listo al escribir algo que no sea 1, 2 o 3. En ese caso, envíale un alert() indicándole que elija 1, 2 o 3 (o juegale una broma. Es tu juego después de todo 😉).
Intenta hacerlo por tu cuenta. Y cuando termines, compáralo con el código de abajo antes de continuar.
¡Recuerda probar tu código en el navegador y pulirlo hasta que funcione!
<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>Algoritmo piedra, papel o tijera</title><script>//OBTENIENDO LA ELECCIÓN DEL JUGADORlet eleccionDelJugador =0; eleccionDelJugador =prompt("Elige: 1 para piedra, 2 para papel, 3 para tijera");// alert( "Elegiste " + jugador );//INFORMANDO LA ELECCIÓN DEL JUGADORif( eleccionDelJugador ==1){alert("Elegiste piedra");}elseif( eleccionDelJugador ==2){alert("Elegiste papel")}elseif( eleccionDelJugador ==3){alert("Elegiste tijera")}else{alert("Elegiste otra cosa, así no puedes jugar >-<")}</script></head><body><h1>Piedra, papel o tijera</h1></body></html>
Dejémoslo hasta aquí por ahora. Intenta reproducir este código por tu cuenta ahora que sabes cómo funciona. Y cuando estés listo, acompáñame a terminar este pequeño juego en: Algoritmo avanzado de piedra, papel o tijera
Algo mágico de la programación es que hay MUCHAS formas de hacer lo mismo. En los aportes de esta clase abajo encontrarás varias alternativas para hacer este mismo algoritmo 👇
No hay una mejor o peor, solo son diferentes. Así es la creatividad del software 💚
En que parte no los encuentro
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Piedra, papel o tijera </title><script>// 1 es piedra , 2 es papel, 3 es tijera;letJUGADOR="0";let pc ="1";let seleccion ="";JUGADOR=prompt("Elije: 1 para piedra, 2 para papel, 3 para tijera");// alert ("Elegistes " + JUGADOR);// ELIJE JUGADOR.if(JUGADOR==1){alert("Elegistes ✊");}elseif(JUGADOR==2){alert("Elegistes ✋");}elseif(JUGADOR==3){alert("Elegistes ✌");}else{alert("NO ES NINGUNA DE LAS OPCIONES ❌");}// ELIJE MAQUINA.if(pc ==1){alert("PC elije ✊");}elseif(pc ==2){alert("PC elije ✋");}elseif(pc ==3){alert("PC elije ✌");}// COMBATEswitch(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><h2>Piedra,Papel o tijera </h2></body></head>
</html>
💚💚💚En el anterior curso de Programación había personas que ya tenían experiencia programando y los ejercicios los hacían de una manera más elaborada solo para lucirse, gente por favor si van a hacer aportes que sean sobre esta clase y que sean útiles para que nos apoyemos entre todos 💚💚💚
ahora entiendo muchas cosas jajajaja
Este video de Freddy explicando los algoritmos me da mucha nostalgia les recomiendo que lo vean
Tip: el atajo que usa Freddy al inicio de la clase para abrir un nuevo archivo rápido es ++Ctrl + N++ :D y luego lo guarda con Ctrl + S Usar comandos es rápido y es Genial!
excelente aporte, yo me preguntaba como abria archivo. Gracias
Gracias!
Algoritmo de piedra, papel o tijera
ㅤ
La etiqueta <!DOCTYPE html> informa al navegador la versión de HTML, útil para compatibilidad con navegadores antiguos.
ㅤ
Se usa // para colocar comentarios en JavaScript, estos no son leídos por el navegador.
ㅤ
Una condicional es el código que solo se ejecuta si se cumplan cierta condición.
ㅤ
El == es el símbolo que se usa para comparación. Se usa el símbolo = para asignación de valores.
Que buen resumen
gracias por los aportes contenido de valor
8 - Algoritmo de piedra, papel o tijera
<!DOCTYPE html> → se usa para tener compatibilidad con navegadores viejos
// → doble slash se usa para comentar codigo, no afecta la codigo
Para ajustar texto largo en VS se utiliza: view → Word Wrap (ajustar palabra) o CTRL + Z
== → Comparación. esto es igual a esto
= es de asignación. esto entra dentro de esta variable
Condicional: Es un código que solo se ejecuta si la condición se cumple → if()
Es posible anidar if() pero no se ve bien y es una mala practica. la mejor opcion es ejecutarlo en cascada con else if()
<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>Piedra, papel o tijera</title><script> // 1 es piedra, 2 es papel, 3 es tijera
let jugador = 0
let pc = 2
jugador = prompt("Elije: 1 para piedra, 2 para papel, 3 para tijera ")
//alert("Elejista " + jugador)
if(jugador == 1) {
alert("Elejiste piedra")
} else if(jugador == 2){
alert("Elejista papel")
} else if(jugador == 3){
alert("Elejiste tijera")
} else{ // Si elije otra opcion que no sea 1,2 o 3. mostrar:
alert("ELEJISTE PERDER!!")
}
</script></head><body><h2>Piedra, papel o tijera</h2></body></html>
Como se le ponen esos cuadritos azules que resaltan el texto?
Como por ejemplo en el <!DOCTYPE html> de tu comentario.
Lo hace con comillas invertidas → `
Pones comilla invertida, el contenido, luego cierras la comiila invertida
2 preguntas que me estaba haciendo y encontré las respuestas. Se los dejo aquí para que les sea de utilidad.
¿ Por qué la variable ' jugador ' es cero?
Al ponerle 0 , estamos creando una variable vacía para que luego pueda tomar un valor ingresado por el jugador.
¿ Por qué la variable jugador de prompt al ser comparado con número no da error?
Javascript hace una conversión automática entre los string y números, en este caso el valor de prompt se cambiará automáticamente a un número por la comparación que hicimos en el if.
Si ejecutamos el siguiente código en la consola verán que esto es verdadero
"2" == 2 (true)
Muy bueno tu aporte, gracias!
En mi caso al llevar la primera prueba siempre me daba 0, a diferencia de freddy al cual le arrojaba "3"
Si se quieren simplificar la vida pongan Html 5 en Visual Estudio Code eso ya establece toda la estructura. Pero les recomiendo que lo escriban manualmente como lo hace Freddy si están aprendiendo!!! 😃 😃 😃
me da miedo el pato de linux qué puedo hacer?
Donde tengo que poner Html 5?
var jugador ="tijeras";var cpu ="piedra";if(jugador =="tijeras"&& cpu =="piedra"){console.log("Perdiste");}elseif(jugador =="piedra"&& cpu =="papel"){console.log("Perdiste");}elseif(jugador =="papel"&& cpu =="tijeras"){console.log("Perdiste");}else{console.log("Ganaste");}
Hice este piedra papel o tijeras con condicionales, la idea no es que te pierdas así que tratare de explicártelo lo mas resumido posible. Si crees que aun así después de explicártelo es muy difícil de entender no te preocupes guarda esto y mas adelante lo entenderás, solo es cuestión de "Nunca para de aprender"
.
tenemos dos variables una “jugador” y otra “cpu” cpu es la maquina, que ya de por si les estoy asignando con cual objeto empezar “tijeras y piedra”
var jugador ="tijeras";var cpu ="piedra";
el operador == es para comparar que se este cumpliendo estrictamente la comparación es decir: Si el jugador equivale a tijeras y cpu equivale a piedra, entonces la consola retornara "Perdiste" ¿Por qué?
porque tijeras no puede ganarle a piedra, los IF son para hacer un "Que pasaría si..." y el operador && es simplemente para poner una "y" en forma de código :D
if(jugador =="tijeras"&& cpu =="piedra"){console.log("Perdiste");
Ahora viene el ELSE IF, tranquilo esto témalo como si, si no se cumplió la condición de arriba entonces entra a esta otra y lo que esta haciendo esta es decir, si jugador equivale a "piedra" y cpu a "papel" entonces la consola gira "perdiste" hasta ahora ya tenemos dos casos cubiertos
elseif(jugador =="piedra"&& cpu =="papel"){console.log("Perdiste");
Ahora viene la ultima condición, si el jugador equivale a "Papel" y la cpu a "Tijeras" también retornara perdiste pues la explicación es obvia porque gana la maquina, tijeras mata a papel
elseif(jugador =="papel"&& cpu =="tijeras"){console.log("Perdiste");
Ahora viene las opciones del ganador, pues entonces si, no son ninguna de las anteriores la consola gira ganaste, pues ya cubrimos todos los casos en la que la maquina podia ganar y si no se cumple ninguna de esas es porque el jugador ganara.
else{console.log("Ganaste");
Vamos a ejecutarlo en el console del navegador
.
.
Como puedes ver retorno perdiste, porque se cumplió la primera condición, pero si cambiamos nuestras variables en un caso donde el jugador gane debería retornar esto.
.
.
Porque no se cumplió ninguna condición donde la maquina ganara. espero te haya servido, si no lo entendiste del todo, tranquilo, mas adelante lo harás, guarda este código te servirá mas adelante :D
muy buen aporte, no lo practique pero me vino la duda. si alguien no responde ni papel, ni piedra ni tijera y responde, no se, "margarita" por poner un ejemplo, cual seria el resultado? Está estipulado en el ultimo } else [ ? gracias. Voy a tratr de hacerlo a ver que sale.
Hola, ya he tratado de meterlo asi, pero no me sale....
MIS APUNTES😎😁
++<DOCTYPE html>++ es para la compatibilidad con navegadores viejos.
++//++ es un comentario ( el navegador no lo ejecuta)
Una condicional es un código que sólo se ejecuta sí la condición se cumple ( ++If++)
Las llaves son bloques de código que sólo se ejecuta a partir de la condición que está ({}.
Else ( sí no...)
El doble igual es de comparación ( == )
Un sólo igual ( = ) es de asignación.
tienes un error, el primero tiene un signo de exclamacion, asi:
<!DOCTYPE html>
Solo espero que lo tomen con humor 😁. Saludos a todos los "expertos"
Ya me siento un crack aunque sea un poquito :3
Condicionales
Una condición es un bloque de código que permite comparar distintas variables, y en base a los resultados decidir el flujo de un programa. Recuerda que estas se conforman de if, else if, y else.
*
Cuando comencemos con las condiciones, en la primera usaremos if que significa "si"
Ejemplo:
if(jugador ==1)//Si la variable juagador vale uno {alert("Elegiste piedra")}
Para agregar más condiciones abajo utilizamos else if
Ejemplo:
elseif(jugador ==2)//Si la variable jugador vale dos {alert("Elegiste papel")}elseif(jugador ==3)//Si la variable jugador vale tres{alert("Elegiste tijera")}
Al último de las condiciones ++si es necesario++ podemos usar else , que entrara en función si la variable jugador no es igual a ninguna de las condiciones anteriores
Ejemplo:
else//Si la variable no vale uno, dos o tres{alert("Elegiste PERDER!!!!!!")}
Así quedaría la estructura completa
if(jugador ==1)//Si la variable juagador vale uno {alert("Elegiste piedra")}elseif(jugador ==2)//Si la variable jugador vale dos {alert("Elegiste papel")}elseif(jugador ==3)//Si la variable vale tres{alert("Elegiste tijera")}else//Si la variable no vale uno, dos o tres{alert("Elegiste PERDER!!!!!!")}
No olvides los paréntesis para los parámetros donde ira la condición y las llaves la iniciar y terminar cada bloque. ¡Suerte! 😉
una consulta, me sale error cuando abro la pagina, no me toma el "alert". alguno me podria ayudar
Buenas tardes estoy intenado hacer el ejercicio pero no me da la opcion de esta pagina dice elegiste piedra y he revisado pero creo que esta igual podrian por favor ayudarme... :(
al final lo logre... gracias y queria compartir un poco lo que he sentido hasta ahora. veo tantos codigos y tantas palabras que me da miedo hacerlo sola y no poder completar pero no por eso lo dejare asi.
como poder ver toda esa informacion y no sentir que es demasiado, me da como una presion en el pecho ver tantas cosas pero me emociona continuar, feliz dia para todos.
Melani, no te preocupes. Es absolutamente normal y nos pasa a (casi) todos. Los que lo entienden todo a la primera son unos raritos. Allá ellos. Para todas y todos los demás, hay que ir pasito a pasito, ver la clase varias veces, tratar de entender cada pequeña partecita por más insignificante que parezca. El tiempo que "demores" en cada clase es absolutamente irrelevante. Lo que sí aporta es poner tu máximo esfuerzo, tratar de entender todo lo que pasa, practicar, primero copiar y pegar, luego tratar de romper todo... Y por supuesto hacer preguntas como esta para que la comunidad te pueda ayudar. :D
Tengo el mismo problema, me pueden ayudar.
En los ajustes de File pueden activar la opción "Auto guardar" para que el editor de texto guarde los cambios automáticamente cada vez que hacen algún cambio 😉
gracias!
Buen tip
Puedes comentar en diferentes tipos de archivo con el shortcut:
ctrl + k + c
y para desmarcar lo comentado;
ctrl + k + u
En mac la tecla ctrl no exite pero se emplea la tecla cmd (comand) y el shortcut es el mismo cmd + k + c para comentar y cmd + k + u para quitar la marca de comentario.
Cuando Freddy preguntó "cómo se dice si en inglés" yo disque YES. Menos mal que no estoy programando sola JAJAJA
JAJAJA Yo dije lo mismo...
jajajajajjajajajajajajaja x2 mas montañeros pa donde
Me pareció muy valido un comentario de un profesor en la clase anterior, en donde hacia la sugerencia de colocar al inicio "html:5", ahorra bastante tiempo al iniciar. Es super útil.
De esta clase no pienso avanzar hasta entender bien los condicionales
ajjaj exacto pense lo mismo
En total he hecho 20 prácticas del algoritmo avanzado de piedra, papel o tijera. Hoy por fin voy con la clase 10!
Hay fundamentos de JavaScript que ya debes ir reforzando. Como variables, funciones, ciclos y condicionales. Si aprendes estas sabrás hacer el programa que sea.
He aquí los condicionales. Nuestras páginas web necesitan tomar decisiones dependiendo de cómo interactúa el usuario con ellas. Ejemplo..
SI(el video está en pausa){aparece_un_icono_de_Play()}SINOSI(el video está corriendo){habilita_el_icono_de_Pausa()}
Lo que está ocurriendo es lo siguiente: la computadora pregunta
ES VERDAD QUE EL VIDEO ESTÁ EN PAUSA ?
COLOCARÉ EL ICONO DE PLAY SI ES VERDAD : COLOCARÉ EL ICONO DE PAUSA SI ES FALSO
Es por eso que podemos usar una expresión llamada, operador ternario, que funciona igual que usar if y else if. Usando el ejemplo de la clase sería así:
let jugador =prompt("") jugador==1?alert("Elegiste Piedra"): jugador==2?alert("Elegiste Papel"): jugador==3?alert("Elegiste Tijera"):alert("Elegiste otro numero")
Juega con los condicionales como quieras y aprende a usar el operador ternario.
La etiqueta <!DOCTYPE html> no es para tener compatibilidad con buscadores antiguos, pasa lo contrario.
Al poner esta etiqueta le hacemos saber a los buscadores que estamos trabajando con la última versión de html, que es la 5, y al omitir esta etiqueta entramos al modo quirk .
Existen 3 modos que utilizan los navegadores web, quirk mode, almost standard mode y full standard mode.
Dejo las referencias para mejor consulta de esta información.
https://developer.mozilla.org/en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Modehttps://www.w3schools.com/tags/tag_doctype.asp
Es totalmente cierto.
La etiqueta \<!DOCTYPE html> no es específicamente para tener compatibilidad con navegadores antiguos, aunque eso puede ser un efecto secundario. Su principal propósito es declarar el tipo de documento y la versión de HTML que se está utilizando.
Al incluir \<!DOCTYPE html>, le indicas al navegador que el documento es un archivo HTML5. Esto ayuda a los navegadores a renderizar correctamente el contenido y aplicar las reglas adecuadas de HTML5. En resumen, es más sobre especificar el estándar que se está utilizando que sobre compatibilidad directa con navegadores antiguos.