domingo, 10 de agosto de 2014

piedra papel tijera lagarto spock


Abusando del poco tiempo libre que luego tengo de programación básica ofrecido por mejorando.la (Realmente una muy buena opción para aprender tecnologias nuevas) , mi principal objetivo es perderle el miedo a programar en java. Y el primer ejercicio interesante que hicimos fue un juego de piedra papel o tijera



El juego piedra papel tijera tiene un algoritmo muy fácil, piedra gana tijera, tijera gana a papel, y papel gana piedra. Y se puede ordenar como un ciclo ási


La forma facil pero larga de resolverlo es darle valores a los elementos por ejemplo piedra= 0, papel=1 y tijeras=2. se pide al usuario que escoga uno, la maquina genera aleatoriamente un numero entre 0 y 2(incluidos obviamente) y se hacen las comparaciones con ciclos if. 


Por ejemplo


Si maquina escoge piedra y 


:si usuario piedra entonces es empate, si usuario papel entonces gana usuario: si usuario tijeras entonces gana la maquina





Y asi para los 3 casos y es simple y sirve, por eso nuestra tarea era hacer esto con el juego piedra papel o  tijera lagarto spock, con un codigo mas reducido y como plus, hacerlo con html y css, no con ventanas emergente. Facil no?


Vamos por pasos, realmete piedra papel y tijera se resulve matematicamente de una manera peculiar, pues podemos decir que piedra<tijera<papel<piedra y si les damos valores de 2,1,0 podemos evaluar las diferencias numericss entre ellos para determinar un ganador. 


Entonces tenemos 3 casos


Si opcion usuario-opcion maquina es igual a 0:empate


Si opcion usuario -opcion maquina es igual a 1 o -2

Cualquier otra cosa, pierde.







Lo interesante es cuando tenemos 5 opciones, donde no se observa un ciclo, pero si 5 ciclos entremezclados, así que no podemos aplicar esto tan fácil, lo que se me ocurrió fue poner números al azar, procurando que las diferencias ganadoras no fueron el inverso multiplicativo de una diferencia perderora, por ejemplo si el usuario escoge piedra que vale 15 y la maquina escoge tijera que vale 16 la diferencia de -1 es una diferencia ganadora y al contrario si el usuario escoge tijera y maquina piedra la diferencia de uno es una diferencia perdedora.


Esta fue la parte mas complicado de sacar, pues era reducir las comparaciones al mínimo. Los números salieron por ensayo y error, donde se obtuvieron las siguientes diferencias ganadoras. -1,4,6,-2,-5,-7,8











Aquí se puede observar el código en javascript, las lineas señaladas en rojo son código para modificar la apariencia y el estilo del juego, por que el juego quedo resuelto en menos de 20 lineas. Se le pide al usuario una opcion, el sistema genera un numero aleatorio, las resta y evalua, de acuerdo a su posicion si es una diferencia ganadora o una perdedora.












Bibliofilica Web Developer

Morbi aliquam fringilla nisl. Pellentesque eleifend condimentum tellus, vel vulputate tortor malesuada sit amet. Aliquam vel vestibulum metus. Aenean ut mi aucto.

No hay comentarios.:

Publicar un comentario