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.
No hay comentarios.:
Publicar un comentario