Tutorial: Crea tu propio juego de "Piedra, Papel, Tijera, Lagarto, Spock" con html css y js

Voldemorth Seguir

No recomendado
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
10 Ene 2012
Mensajes
928
Bien primero que nada les comentare que el titulo es solo para atraer gente, ya que en realidad es solo con html y js, no tengo dotes de diseñador y mucho menos ganas de hacer que el resultado de este tutorial quede vistoso. Eso se los dejo a lo que gusten hacerlo.
Aclarado esto, y suponiendo que se fue la chusma que pasa por los totorales esperando llevarse un código hecho y derecho al 100% empecemos...

Para este tutorial se requiere:
1-Conocimientos de html y js (usaremos jQuery).
2-Un archivo index.html
3-Un archivo js donde escribiremos la lógica del juego (en mi caso pptls.js)
4-Opcionalmente un archivo css para dar estilo a gusto.

Lo primero que haremos sera tomar nuestro index.html y colocar dentro una plantilla básica de html, obtendrán algo, mas o menos así:
Insertar CODE, HTML o PHP:
<html>
<head>
	
</head>
<body>

</body>
</html>

Una vez tengan esto crearemos la estructura de nuestro juego, en mi caso sera algo como esto:

index.png

Como notaran no les mentí respecto a el CSS... En fin, veamos que tenemos en este ejemplo:
1-Un titulo que dice "¿Piedra, Papel, Tijera, Lagrato, o Spock?".
2-Los marcadores de el usuario y el ordenador.
3-Una breve descripción de la jugada.
4-Las opciones de "Piedra Papel Tijera Lagarto Spock"

Tener en cuenta que:
1-El marcador cambia dinamicamente incrementando en +1 para el ganador de cada partida.
2-La descripción dela jugada solo se mostrara cuando se haya hecho una jugada, es decir cuando elijan entre piedra, papel, etc.

Así pues en nuestro html ahora podríamos tener algo como esto:

Insertar CODE, HTML o PHP:
<html>
<head>
	
</head>
<body>
<h1>¿Piedra, Papel o Tijera?</h1>
	<div class="u">Usuario: </div><div class="usuario">0</div>
	<div class="ordenador">0</div><div class="o">Ordenador: </div>
	<div class="clear"></div>
	<div id="resultado"></div>
	<div id="opciones">
		<input type="radio" name="elemento" id="piedra" value="piedra"><label for="piedra">Piedra</label>
		<input type="radio" name="elemento" id="papel" value="papel"><label for="papel">Papel</label>
		<input type="radio" name="elemento" id="tijera" value="tijera"><label for="tijera">Tijera</label>
		<input type="radio" name="elemento" id="lagarto" value="lagarto"><label for="lagarto">Lagarto</label>
		<input type="radio" name="elemento" id="spock" value="spock"><label for="spock">Spock</label>
	</div>

</body>
</html>

en resumidas cuentas es html puro, las opciones son radiobuton cuyo valor levantaremos con un archivo js y una vez evaluado quien gana pasaremos el nuevo marcador así como la descripción breve de la jugada.

Hasta qui no he hecho nada nuevo, incluso creo que muchos de los que leen el tutorial se estarán muriendo de aburrimiento bien vamos a lo que hace que este juego tome vida, el js.
Desde un punto de vista muy abstracto este juego funciona así, tu escoges una opción de las 5 posibilidades, un js se activa al dicha opción, genera un numero random entre 1 y 5 donde cada valor corresponde a una de las opciones. Se comparan ambas opciones de forma que:

- Si ambas opciones son iguales es un empate, entonces se indica en al descripción que ambos jugadores escogieron lo mismo y los marcadores quedan como estaban.

- Si la opción que has marcado es mas fuerte que la escogido el ordenador (respetando las normas de el juego) se indica que tu ganas y tu marcador se incrementa en +1.

-Si fallan las dos opciones anteriores por lógica tu pierdes (porque no ganas ni empatas), se indica en la descripción lo ocurrido y el marcador del ordenador se incrementa +1.

Todo eso que explique de forma larga y seguramente no del todo entendible se resume en una función de js que contiene 28 lineas de código aunque se podría hacer incluso mas breve.
Dicha funciona es:

Insertar CODE, HTML o PHP:
//Defino mi función
$(function() {

//Indico que se active al clickear en un radiobuton

    $('input[type="radio"]').click(function(){

//Guardo el valor de el radio button seleccionado en la variable "elemento"

        var elemento = $('input:radio[name=elemento]:checked').val();

//Creo una nueva variable "aleatorio" que tendrá un valor entre 1 y 5

        var aleatorio=Math.floor(Math.random() * 5) + 1;

//Segun el valor de "aleatorio" le asigno una opción

        if (aleatorio == 1) elemento_contra = "piedra";
        else if (aleatorio == 2) elemento_contra = "papel";
        else if (aleatorio == 3) elemento_contra = "tijera";
        else if (aleatorio == 4) elemento_contra = "lagarto";
        else elemento_contra = "spock";
        var ganador;

//Compruebo si ambas opciones (elemento y elemento_contra) son iguales y si esto ocurre digo que ganador es empate

        if (elemento == elemento_contra) ganador = "empate";

//Si esto no pasa y la opción de usuario es gana a la del ordenador digo que igualo ganador = gana usuario

        else if ((elemento == "piedra" && ( elemento_contra == "tijera" || elemento_contra == "lagarto" )) || (elemento == "lagarto" && ( elemento_contra == "spock" || elemento_contra == "papel" )) || (elemento == "spock" && ( elemento_contra == "tijera" || elemento_contra == "piedra" )) || (elemento == "papel" && ( elemento_contra == "piedra" || elemento_contra == "spock" )) || (elemento == "tijera" && ( elemento_contra == "papel" || elemento_contra == "lagarto" ))) {
            ganador = "gana usuario";

// Por ultimo me sumo un punto

            var actual = parseInt($('.usuario').html());
            actual += parseInt(1);
            $('.usuario').html(actual);
        }

// Si ninguna de las dos cosas anteriores pasan, entonces usuario a perdido, entonces igualo ganador = gana ordenador

        else {
            ganador = "gana ordenador";
// y claro le sumo un punto al ordenador.
            var actual = parseInt($('.ordenador').html());
            actual += parseInt(1);
            $('.ordenador').html(actual);
        }

//Finalmente genero un html con la descripción de la partida valiéndome de las variables que ya tengo y solo agregándole alguna texto que siempre sera el mismo

        $('#resultado').html("Usuario juega " + elemento + " - Ordenador juega " + elemento_contra + "<br> El resultado es " + ganador);
        
    });
});

Eso es todo, ahora solo queda invocar en nuestro html 2 scripts, el primero sera jQuery y el segundo nuestra función, Tener en cuenta que la lógica de este juego se vale de ambos así que si no esta uno de ellos el resultado no sera el esperado.

En resumen tendremos algo así:

Insertar CODE, HTML o PHP:
<html>
<head>
	<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
	
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	
</head>
<body>
<h1>¿Piedra, Papel o Tijera?</h1>
	<div class="u">Usuario: </div><div class="usuario">0</div>
	<div class="ordenador">0</div><div class="o">Ordenador: </div>
	<div class="clear"></div>
	<div id="resultado"></div>
	<div id="opciones">
		<input type="radio" name="elemento" id="piedra" value="piedra"><label for="piedra">Piedra</label>
		<input type="radio" name="elemento" id="papel" value="papel"><label for="papel">Papel</label>
		<input type="radio" name="elemento" id="tijera" value="tijera"><label for="tijera">Tijera</label>
		<input type="radio" name="elemento" id="lagarto" value="lagarto"><label for="lagarto">Lagarto</label>
		<input type="radio" name="elemento" id="spock" value="spock"><label for="spock">Spock</label>
	</div>
	<script type="text/javascript" src="pptls.js"></script>
</body>
</html>

Suponiendo claro que son tan desordenados como yo y dejaron todos sus archivos en la raíz :)
De aqui en mas solo deben agregar su css para que se vea bien, a modo e ejemplo les dejo el que uso en el ejemplo de la imagen:

Insertar CODE, HTML o PHP:
html {
	background: #444444;
}

body {
	width: 450px;
	padding:15% 25px 25px 25px;
	margin:auto;
	background: #fff;
	text-align:center;
}

.usuario, .u {
	float: left;
	font-size: 30px;
}

.ordenador, .o {
	float:right;
	font-size:30px;
}

.o{
	margin-left:40px;
}

.clear {
	clear:both;
}

input.radio {
	width: 50px;
}
#resultado {
	margin-top: 30px;
	text-align: center;
}
#opciones {
	margin-top: 30px;
	font-size:30px;
	text-align:center;
}

input{display: none}

Saludos y espero disfruten de este tutorial y les sea util.

Para los que gusten ver el resultado final es este: Demo

Y algo que había olvidado, por si no las conocen estas son las reglas el juego:

“Las tijeras cortan el papel, el papel cubre a la piedra, la piedra aplasta al lagarto, el lagarto envenena a Spock, Spock destroza las tijeras, las tijeras decapitan al lagarto, el lagarto se come el papel, el papel refuta a Spock, Spock vaporiza la piedra, y, como es habitual… la piedra aplasta las tijeras.”
 
Última edición:

intoroddex

Lambda
Verificación en dos pasos desactivada
Desde
9 Abr 2014
Mensajes
2.989
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Hay demo para ver si vale la pena ponerme a hacer el juegito xD

Saludos se agradece el aporte :welcoming:
 

Voldemorth

No recomendado
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
10 Ene 2012
Mensajes
928
Realmente no tengo una demo online, pero dame unos minutos y cuelgo algo,, aun así te dire que el tuyo es solo e la lógica para que sea atractivo tendrás que dale tu impronta con css

- - - Actualizado - - -

Hay demo para ver si vale la pena ponerme a hacer el juegito xD

Saludos se agradece el aporte :welcoming:

He agregado una demo, esta al final del tutorial
 

intoroddex

Lambda
Verificación en dos pasos desactivada
Desde
9 Abr 2014
Mensajes
2.989
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Jaaja simple pero se puede mejorar xD, solo le gane con spock! :witless:

Realmente no tengo una demo online, pero dame unos minutos y cuelgo algo,, aun así te dire que el tuyo es solo e la lógica para que sea atractivo tendrás que dale tu impronta con css

- - - Actualizado - - -



He agregado una demo, esta al final del tutorial
 

Voldemorth

No recomendado
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
10 Ene 2012
Mensajes
928
Si, es cosa de darse maña con css y hacerlo mas atractivo, un punto a tener en cuenta es que el mismo script corre en escritorio y en teléfonos móviles, así que puedes usar cordova para crear una app para android a partir de este código
 

Beta75

VIP
Iota
Social Media
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Suscripción a IA
Desde
1 Ago 2014
Mensajes
2.107
Mire el demo y mola bastante....

Lo dejaré en Favoritos para leerlo después con calma...

Saludos y Gracias por el Aporte....

- - - Actualizado - - -

Mire el demo y mola bastante....

Lo dejaré en Favoritos para leerlo después con calma...

Saludos y Gracias por el Aporte....
 

Carambel

Ómicron
Social Media
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Feliz cumpleaños!
Desde
25 Ago 2013
Mensajes
4.926
Bug largarto siempre ganara :'D aquí les dejo la muestra de lo que digo.

XVDvOw8.png
 

Voldemorth

No recomendado
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
10 Ene 2012
Mensajes
928
Bug largarto siempre ganara :'D aquí les dejo la muestra de lo que digo.

XVDvOw8.png

He testado nuevamente el demo y no siempre gana lagarto, Lagarto pierde contra tijeras y piedra y gana contra Spock y papel, es solo un tema de suerte.

Gracias por comentar y por probar el juego!
 

Beta75

VIP
Iota
Social Media
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Suscripción a IA
Desde
1 Ago 2014
Mensajes
2.107
He testado nuevamente el demo y no siempre gana lagarto, Lagarto pierde contra tijeras y piedra y gana contra Spock y papel, es solo un tema de suerte.

Gracias por comentar y por probar el juego!

Cierto, no siempre gana...

- - - Actualizado - - -

He testado nuevamente el demo y no siempre gana lagarto, Lagarto pierde contra tijeras y piedra y gana contra Spock y papel, es solo un tema de suerte.

Gracias por comentar y por probar el juego!

Cierto, no siempre gana...
 

GraceMcLennon

Alfa
Verificación en dos pasos desactivada
Desde
10 Abr 2015
Mensajes
22
Gracias, la verdad es que estaba buscando un tutorial como este y ahora lo seguiré paso a paso, en serio muchas gracias :)
 

Antonio Muñoz

Iota
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
14 Dic 2013
Mensajes
2.281
la demo no funciona, alguien lo ha probado últimamente?
 

Voldemorth

No recomendado
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
10 Ene 2012
Mensajes
928
anda la osa ni me acordaba de esta publicación
 

Voldemorth

No recomendado
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
10 Ene 2012
Mensajes
928
la demo no funciona, alguien lo ha probado últimamente?
Ya no tengo el dominio soy el uno, pero puedo dar fe que el codigo es funcional, o bueno al menos que no tiene nada de codigo malicioso (a decir verdad ni me acordaba de esta publicacion) te recomiendo probarla en un localhost para validar que todo este bien y poder tener tu propio demo
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba