elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Resuelto] Piedra, papel, tijeras y algo más... en javascript
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Piedra, papel, tijeras y algo más... en javascript  (Leído 621 veces)
HelThunk

Desconectado Desconectado

Mensajes: 26



Ver Perfil
[Resuelto] Piedra, papel, tijeras y algo más... en javascript
« en: 11 Abril 2016, 04:29 »

Buenas :D,
Hace nada (ayer) me puse a aprender algo de javascript, me pareció entretenido intentar hacer el siguiente 'piedra, papel o tijeras', básicamente es como el clásico, pero con más opciones;



Sería un placer leer sus aportaciones (si pegáis el code en la consola del navegador podréis probarlo);
Código
  1. function randomnumber() //Número aleatorio (Para asignar a la máquina)
  2. {
  3.    var numero = Math.floor( Math.round(Math.random() * 15 ));
  4.    return numero;}
  5. function allgame() //Base juego
  6. {
  7. userOption = prompt("Select a one option; \n Gun = 0 \n Lightning = 1 \n Devil = 2 \n Dragon = 3 \n Water = 4 \n Air = 5 \n Paper = 6 \n Sponge = 7 \n Wolf = 8 \n Tree = 9 \n Human = 10 \n Snake = 11 \n Scissors = 12 \n Fire = 13 \n Rock = 14");
  8. alert("Your select " + options[userOption]);
  9. alert("Machine select " + options[machineOption]);
  10. userOption = parseInt(userOption);
  11. switch(userOption){
  12. case 0:
  13. //Gun
  14.    if(machineOption == userOption){
  15. alert("tie :O");
  16. }
  17. else if(machineOption == "Rock" || machineOption == "Fire" || machineOption == "Scissors" || machineOption == "Snake" || machineOption == "Human" || machineOption == "Tree" || machineOption == "Wolf"){
  18. alert("Yea, you're a winner");
  19. }
  20. else if(machineOption != "Lightning" || machineOption == "Devil" || machineOption == "Dragon" || machineOption == "Water" || machineOption == "Air" || machineOption == "Paper" || machineOption == "Sponge"){
  21.       alert("Oh, damn.. you're a loser");
  22. }
  23. continuos;
  24.  break;
  25. case 1:
  26. //Lightning
  27. if(machineOption == userOption){
  28. alert("tie :O");
  29. }
  30. else if(machineOption == "Gun" || machineOption == "Rock" || machineOption == "Fire" || machineOption == "Scissors" || machineOption == "Snake" || machineOption == "Human" || machineOption == "Tree"){
  31. alert("Yea, you're a winner");
  32. }
  33. else if(machineOption == "Devil" || machineOption == "Dragon" || machineOption == "Water" || machineOption == "Air" || machineOption == "Paper" || machineOption == "Sponge" || machineOption == "Wolf"){
  34.       alert("Oh, damn.. you're a loser");
  35. }
  36. break;
  37. case 2:
  38. //Devil
  39. if(machineOption == userOption){
  40. alert("tie :O");
  41. }
  42. else if(machineOption != "Lightning" || machineOption == "Gun" || machineOption == "Rock" || machineOption == "Fire" || machineOption == "Scissors" || machineOption == "Snake" || machineOption == "Human"){
  43. alert("Yea, you're a winner");
  44. }
  45. else if(machineOption == "Dragon" || machineOption == "Water" || machineOption == "Air" || machineOption == "Paper" || machineOption == "Sponge" || machineOption == "Wolf" || machineOption == "Tree"){
  46.       alert("Oh, damn.. you're a loser");
  47. }
  48. break;
  49. case 3:
  50. //Dragon
  51. if(machineOption == userOption){
  52. alert("tie :O");
  53. }
  54. else if(machineOption != "Devil" || machineOption != "Lightning" || machineOption == "Gun" || machineOption == "Rock" || machineOption == "Fire" || machineOption == "Scissors" || machineOption == "Snake"){
  55. alert("Yea, you're a winner");
  56. }
  57. else if(machineOption == "Water" || machineOption == "Air" || machineOption == "Paper" || machineOption == "Sponge" || machineOption == "Wolf" || machineOption == "Tree"|| machineOption == "Human"){
  58.       alert("Oh, damn.. you're a loser");
  59. }
  60. break;
  61. case 4:
  62. //Water
  63. if(machineOption == userOption){
  64. alert("tie :O");
  65. }
  66. else if(machineOption != "Dragon" || machineOption != "Devil" || machineOption != "Lightning" || machineOption == "Gun" || machineOption == "Rock" || machineOption == "Fire" || machineOption == "Scissors"){
  67. alert("Yea, you're a winner");
  68. }
  69. else if(machineOption == "Air" || machineOption == "Paper" || machineOption == "Sponge" || machineOption == "Wolf" || machineOption == "Tree"|| machineOption == "Human"|| machineOption == "Snake"){
  70.       alert("Oh, damn.. you're a loser");
  71. }
  72. break;
  73. case 5:
  74. //Air
  75. if(machineOption == userOption){
  76. alert("tie :O");
  77. }
  78. else if(machineOption != "Water" ||machineOption != "Dragon" || machineOption != "Devil" || machineOption != "Lightning" || machineOption == "Gun" || machineOption == "Rock" || machineOption == "Fire"){
  79. alert("Yea, you're a winner");
  80. }
  81. else if(machineOption == "Paper" || machineOption == "Sponge" || machineOption == "Wolf" || machineOption == "Tree"|| machineOption == "Human"|| machineOption == "Snake"|| machineOption == "Scissors"){
  82.       alert("Oh, damn.. you're a loser");
  83. }
  84. break;
  85. case 6:
  86. //Paper
  87. if(machineOption == userOption){
  88. alert("tie :O");
  89. }
  90. else if(machineOption != "Air" || machineOption != "Water" ||machineOption != "Dragon" || machineOption != "Devil" || machineOption != "Lightning" || machineOption == "Gun" || machineOption == "Rock"){
  91. alert("Yea, you're a winner");
  92. }
  93. else if(machineOption == "Sponge" || machineOption == "Wolf" || machineOption == "Tree"|| machineOption == "Human"|| machineOption == "Snake"|| machineOption == "Scissors"|| machineOption == "Fire"){
  94.       alert("Oh, damn.. you're a loser");
  95. }
  96. break;
  97. case 7:
  98. //Sponge
  99. if(machineOption == userOption){
  100. alert("tie :O");
  101. }
  102. else if(machineOption != "Paper" || machineOption != "Air" || machineOption != "Water" ||machineOption != "Dragon" || machineOption != "Devil" || machineOption != "Lightning" || machineOption == "Gun"){
  103. alert("Yea, you're a winner");
  104. }
  105. else if(machineOption == "Wolf" || machineOption == "Tree"|| machineOption == "Human"|| machineOption == "Snake"|| machineOption == "Scissors"|| machineOption == "Fire"|| machineOption == "Rock"){
  106.       alert("Oh, damn.. you're a loser");
  107. }
  108. break;
  109. case 8:
  110. //Wolf
  111. if(machineOption == userOption){
  112. alert("tie :O");
  113. }
  114. else if(machineOption != "Sponge" || machineOption != "Paper" || machineOption != "Air" || machineOption != "Water" ||machineOption != "Dragon" || machineOption != "Devil" || machineOption != "Lightning"){
  115. alert("Yea, you're a winner");
  116. }
  117. else if(machineOption == "Tree"|| machineOption == "Human"|| machineOption == "Snake"|| machineOption == "Scissors"|| machineOption == "Fire"|| machineOption == "Rock"|| machineOption == "Gun"){
  118.       alert("Oh, damn.. you're a loser");
  119. }
  120. break;
  121. case 9:
  122. //Tree
  123. if(machineOption == userOption){
  124. alert("tie :O");
  125. }
  126. else if(machineOption != "Wolf" || machineOption != "Sponge" || machineOption != "Paper" || machineOption != "Air" || machineOption != "Water" ||machineOption != "Dragon" || machineOption != "Devil"){
  127. alert("Yea, you're a winner");
  128. }
  129. else if(machineOption == "Human"|| machineOption == "Snake"|| machineOption == "Scissors"|| machineOption == "Fire"|| machineOption == "Rock"|| machineOption == "Gun"|| machineOption != "Lightning"){
  130.       alert("Oh, damn.. you're a loser");
  131. }
  132. break;
  133. case 10:
  134. //human
  135. if(machineOption == userOption){
  136. alert("tie :O");
  137. }
  138. else if(machineOption != "Tree" ||machineOption != "Wolf" || machineOption != "Sponge" || machineOption != "Paper" || machineOption != "Air" || machineOption != "Water" ||machineOption != "Dragon"){
  139. alert("Yea, you're a winner");
  140. }
  141. else if(machineOption == "Snake"|| machineOption == "Scissors"|| machineOption == "Fire"|| machineOption == "Rock"|| machineOption == "Gun"|| machineOption != "Lightning"|| machineOption != "Devil"){
  142.       alert("Oh, damn.. you're a loser");
  143. }
  144. break;
  145. case 11:
  146. //Snake
  147. if(machineOption == userOption){
  148. alert("tie :O");
  149. }
  150. else if(machineOption == "Snake"||machineOption != "Tree" ||machineOption != "Wolf" || machineOption != "Sponge" || machineOption != "Paper" || machineOption != "Air" || machineOption != "Water"){
  151. alert("Yea, you're a winner");
  152. }
  153. else if(machineOption == "Scissors"|| machineOption == "Fire"|| machineOption == "Rock"|| machineOption == "Gun"|| machineOption != "Lightning"|| machineOption != "Devil"||machineOption != "Dragon"){
  154.       alert("Oh, damn.. you're a loser");
  155. }
  156. break;
  157. case 12:
  158. //Scissors
  159. if(machineOption == userOption){
  160. alert("tie :O");
  161. }
  162. else if(machineOption == "Scissors"||machineOption == "Snake"|| machineOption != "Tree" ||machineOption != "Wolf" || machineOption != "Sponge" || machineOption != "Paper" || machineOption != "Air"){
  163. alert("Yea, you're a winner");
  164. }
  165. else if(machineOption == "Fire"|| machineOption == "Rock"|| machineOption == "Gun"|| machineOption != "Lightning"|| machineOption != "Devil"||machineOption != "Dragon"|| machineOption != "Water"){
  166.       alert("Oh, damn.. you're a loser");
  167. }
  168. break;
  169. case 13:
  170. //Fire
  171. if(machineOption == userOption){
  172. alert("tie :O");
  173. }
  174. else if(machineOption == "Fire"||machineOption == "Scissors"||machineOption == "Snake"|| machineOption != "Tree" ||machineOption != "Wolf" || machineOption != "Sponge" || machineOption != "Paper"){
  175. alert("Yea, you're a winner");
  176. }
  177. else if(machineOption == "Rock"|| machineOption == "Gun"|| machineOption != "Lightning"|| machineOption != "Devil"||machineOption != "Dragon"|| machineOption != "Water" || machineOption != "Air"){
  178.       alert("Oh, damn.. you're a loser");
  179. }
  180. break;
  181. case 14:
  182. //Rock
  183. if(machineOption == userOption){
  184. alert("tie :O");
  185. }
  186. else if(machineOption == "Rock"|| machineOption == "Fire"||machineOption == "Scissors"||machineOption == "Snake"|| machineOption != "Tree" ||machineOption != "Wolf" || machineOption != "Sponge"){
  187. alert("Yea, you're a winner");
  188. }
  189. else if(machineOption == "Gun"|| machineOption != "Lightning"|| machineOption != "Devil"||machineOption != "Dragon"|| machineOption != "Water" || machineOption != "Air" || machineOption != "Paper"){
  190.       alert("Oh, damn.. you're a loser");
  191. }
  192.  
  193. default:{
  194. alert("Stupid boy, select a one valid option...");
  195. }
  196. }}
  197.  
  198. var userOption;
  199. var options = ["Gun", "Lightning", "Devil", "Dragon", "Water", "Air", "Paper", "Sponge", "Wolf", "Tree", "Human", "Snake", "Scissors", "Fire", "Rock"];
  200. alert("Hello, I'm the creation, the first creation on javascript, please, select a one  option,.. you know rock, paper scrissors?, it's similar");
  201. allgame();
  202. finishgame =false;//condicion para salir/entrar en el do-while
  203. do{
  204. allgame();
  205. alert("You like play again?")
  206. var machineOption = randomnumber();
  207. var answerAgain;
  208. answerAgain = prompt("Please, write 'Yes' or 'No'", "Yes")
  209. if(answerAgain == "Yes" || answerAgain == "YEs"|| answerAgain == "YES"|| answerAgain == "yES"|| answerAgain == "yeS"|| answerAgain == "yEs"|| answerAgain == "yes"){
  210. alert("Reload game..");
  211. finishgame = true;
  212. }
  213. else if(answerAgain == "No" || answerAgain == "no" || answerAgain == "NO" || answerAgain == "nO"){
  214. alert("Leaving game...");
  215. finishgame = false;
  216. }
  217. else{
  218. ("Leaving game.. ");
  219. finishgame = false;
  220. }
  221. }while(finishgame)
  222.  
  223.  
  224.  


« Última modificación: 19 Abril 2016, 23:19 por #!drvy » En línea

gathosdeath

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Piedra, papel, tijeras y algo más... en javascript
« Respuesta #1 en: 11 Abril 2016, 06:12 »

MM.. Bueno si estas aprendiendo bien, pero fijate que cuando la "machine" le toca elegir devuelve undefined. Para empezar esta bien. Aca te dejo la funcion de random

Código:
function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}


En línea

xustyx

Desconectado Desconectado

Mensajes: 207


Ver Perfil
Re: Piedra, papel, tijeras y algo más... en javascript
« Respuesta #2 en: 11 Abril 2016, 10:47 »

Podrías haber solucionado el juego con una Lista circular.

Si la opción elegida esta 7 posiciones por delante de la seleccionada por el contrincante ganas tú, sino gana el otro.
En línea

HelThunk

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: Piedra, papel, tijeras y algo más... en javascript
« Respuesta #3 en: 13 Abril 2016, 00:18 »

MM.. Bueno si estas aprendiendo bien, pero fijate que cuando la "machine" le toca elegir devuelve undefined. Para empezar esta bien. Aca te dejo la funcion de random

Código:
function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
Muchas gracias :)

Podrías haber solucionado el juego con una Lista circular.

Si la opción elegida esta 7 posiciones por delante de la seleccionada por el contrincante ganas tú, sino gana el otro.

¿Cómo se puede hacer eso? :O
En línea

MinusFour


Desconectado Desconectado

Mensajes: 4.361


I'm fourth.


Ver Perfil WWW
Re: Piedra, papel, tijeras y algo más... en javascript
« Respuesta #4 en: 13 Abril 2016, 17:09 »

Lo más sencillo es construir un mapa e.g.:

Código
  1. var map = {
  2. "Rock": ["Fire", "Scissors", "Snake", "Human", "Tree", "Wolf", "Sponge"],
  3. "Fire": ["Scissors", "Snake", "Human", "Tree", "Wolf", "Sponge", "Paper"],
  4. "Scissors": ["Snake", "Human", "Tree", "Wolf", "Sponge", "Paper", "Air"],
  5. "Snake": ["Human", "Tree", "Wolf", "Sponge", "Paper", "Air", "Water"],
  6. "Human": ["Tree", "Wolf", "Sponge", "Paper", "Air", "Water", "Dragon"],
  7. "Tree": ["Wolf", "Sponge", "Paper", "Air", "Water", "Dragon", "Devil"],
  8. "Wolf": ["Sponge", "Paper", "Air", "Water", "Dragon", "Devil", "Lightning"],
  9. "Sponge": ["Paper", "Air", "Water", "Dragon", "Devil", "Lightning", "Gun"],
  10. "Paper": ["Air", "Water", "Dragon", "Devil", "Lightning", "Gun", "Rock"],
  11. "Air": ["Water", "Dragon", "Devil", "Lightning", "Gun", "Rock", "Fire"],
  12. "Water": ["Dragon", "Devil", "Lightning", "Gun", "Rock", "Fire", "Scissors"],
  13. "Dragon": ["Devil", "Lightning", "Gun", "Rock", "Fire", "Scissors", "Snake"],
  14. "Devil": ["Lightning", "Gun", "Rock", "Fire", "Scissors", "Snake", "Human"],
  15. "Lightning": ["Gun", "Rock", "Fire", "Scissors", "Snake", "Human", "Tree"],
  16. "Gun": ["Rock", "Fire", "Scissors", "Snake", "Human", "Tree", "Wolf"]
  17. }

De ahí nada mas teniendo las opciones de los dos jugadores (p1 es player 1 y p2 es player 2) haces:

Código
  1. if(p1 === p2) {
  2.   //nadie gana
  3. } else if(map[p1].includes(p2)){
  4.   //gana p1
  5. } else {
  6.   //gana p2
  7. }

Obviamente es bastante tedioso escribir ese diccionario o mapa, así que lo puedes construir con javascript:

Código
  1. var options = ['Rock', 'Fire', 'Scissors', 'Snake','Human',
  2. 'Tree', 'Wolf', 'Sponge', 'Paper','Air',
  3. 'Water', 'Dragon', 'Devil', 'Lightning','Gun']; //15 opciones
  4.  
  5. var map = options.reduce(function(o, v, i, a){
  6. var nPos, arr = [];
  7. for(var x = 1; x < 8; x++){
  8. nPos = i + x;
  9. nPos = nPos >= a.length ? (nPos - a.length) : nPos;
  10. arr.push(a[nPos]);
  11. }
  12. o[v] = arr;
  13. return o;
  14. }, {});

Puedes usar una lista ligada circular también:

Código
  1. var list = { head : { }, prev : null };
  2. list.current = list.head;
  3.  
  4. var options = ['Rock', 'Fire', 'Scissors', 'Snake','Human',
  5. 'Tree', 'Wolf', 'Sponge', 'Paper','Air',
  6. 'Water', 'Dragon', 'Devil', 'Lightning','Gun', null];
  7.  
  8. var linkedList = options.reduce(function(list, v){
  9. if(v !== null){
  10. list.current.v = v;
  11. list.current.n = { };
  12. //move forward
  13. list.prev = list.current;
  14. list.current = list.current.n;
  15. } else {
  16. //end of list
  17. list.prev.n = list.head;
  18. }
  19. return list;
  20. }, list).head;

Necesitas otras funciones para encontrar las opciones de los jugadores:

Código
  1. function find(list, v){
  2. var pointer = list;
  3. while (pointer.v !== v){
  4. pointer = pointer.n;
  5. }
  6. return pointer;
  7. }
  8.  
  9. function lookAhead(init, num, v){
  10. var pointer = init.n;
  11. for(var i = 0; i < num; i++){
  12. if(pointer.v === v) return true;
  13. pointer = pointer.n;
  14. }
  15. return false;
  16. }
  17.  
  18. var win = (p1, p2, list) => lookAhead(find(list, p1), 7, p2);

Y ahora simplemente para verificar si ganas o pierdes:

Código
  1. if(p1 === p2) {
  2.   //nadie gana
  3. } else if(win(p1, p2, linkedList)){
  4.   //gana p1
  5. } else {
  6.   //gana p2
  7. }
En línea

HelThunk

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: Piedra, papel, tijeras y algo más... en javascript
« Respuesta #5 en: 13 Abril 2016, 21:31 »

Mis disculpas, pero recién estoy iniciando y me cuesta bastante entender el funcionamiento de tu código. He entendido como funciona .map (gracias a la explicación de tu pág), pero me gustaría aclarar varias cosas;

Cuando creas la variable map;
Código
  1. var map = {
  2. "Rock": ["Fire", "Scissors", "Snake", "Human", "Tree", "Wolf", "Sponge"],
  3. "Fire": ["Scissors", "Snake", "Human", "Tree", "Wolf", "Sponge", "Paper"],
  4. "Scissors": ["Snake", "Human", "Tree", "Wolf", "Sponge", "Paper", "Air"],
  5. "Snake": ["Human", "Tree", "Wolf", "Sponge", "Paper", "Air", "Water"],
  6. "Human": ["Tree", "Wolf", "Sponge", "Paper", "Air", "Water", "Dragon"],
  7. "Tree": ["Wolf", "Sponge", "Paper", "Air", "Water", "Dragon", "Devil"],
  8. "Wolf": ["Sponge", "Paper", "Air", "Water", "Dragon", "Devil", "Lightning"],
  9. "Sponge": ["Paper", "Air", "Water", "Dragon", "Devil", "Lightning", "Gun"],
  10. "Paper": ["Air", "Water", "Dragon", "Devil", "Lightning", "Gun", "Rock"],
  11. "Air": ["Water", "Dragon", "Devil", "Lightning", "Gun", "Rock", "Fire"],
  12. "Water": ["Dragon", "Devil", "Lightning", "Gun", "Rock", "Fire", "Scissors"],
  13. "Dragon": ["Devil", "Lightning", "Gun", "Rock", "Fire", "Scissors", "Snake"],
  14. "Devil": ["Lightning", "Gun", "Rock", "Fire", "Scissors", "Snake", "Human"],
  15. "Lightning": ["Gun", "Rock", "Fire", "Scissors", "Snake", "Human", "Tree"],
  16. "Gun": ["Rock", "Fire", "Scissors", "Snake", "Human", "Tree", "Wolf"]
  17. }
y le asignas los datos, ¿realmente funcionara como un case no?, es decir, tu pedirás los datos de p1, digamos 'Air', y en ese momento, solo se centra en el array interno de Air no?, es decir, para el programa en ese momento map es igual a
Código
  1. Map == "Air": ["Water", "Dragon", "Devil", "Lightning", "Gun", "Rock", "Fire"]
y a continuación busca si p2(lo que ha seleccionado el segundo jugador) esta dentro de 'Air', para decidir quién gana no?

Otra duda, tanto en tu página como en el código anterior, veo que para comparar dos valores iguales utilizas '===', en vez de '==', ¿hay algún motivo en particular?
Código
  1.   if(p1 === p2) {

En cuento al resto del código.. se sale de mis limitaciones, aún me falta mucho por aprender.. disculpa las molestiasy gracias por la gran aportación :)
En línea

MinusFour


Desconectado Desconectado

Mensajes: 4.361


I'm fourth.


Ver Perfil WWW
Re: Piedra, papel, tijeras y algo más... en javascript
« Respuesta #6 en: 13 Abril 2016, 22:37 »

Si, el uso que le doy es algo similar a lo que harías con un case:

Código
  1. ...
  2. case 'Air':
  3.    return ["Water", "Dragon", "Devil", "Lightning", "Gun", "Rock", "Fire"].includes(p2);
  4. ...

map es map a menos que yo haga algún cambio. Cuando tu haces:

Código
  1. map[p1] //donde p1 es una de las 15 opciones

El resultado de esa expresión es el arreglo que contiene las posibilidades para la cual la entrada p1 es ganadora. Es decir si p2 eligió cualquiera de esas entradas entonces p1 gana y p2 pierde. De lo contrario p2 pierde. Lo único que haces es buscar si la opción que p2 eligió está dentro de este arreglo.

El triple signo de igualdad ( === ) es usado para hacer una comparación estricta entre dos expresiones. Cuando tu utilizas el doble signo de igualdad ( == ) y los valores a los que resuelve cada una de las expresiones son de diferente tipo, javascript intenta convertir los valores al punto que pueda hacer la comparación. Yo quiero comparar exactamente el mismo valor y no valores similares, quiero evitar esta coerción de datos. De todos modos, si utilizas valores del mismo tipo con doble signo de igualdad realiza los mismos pasos que si usarás el triple signo de igualdad.

Mi página todavía no está terminada :P, de momento solo tengo algunas entradas acerca de código asíncrono en javascript.
En línea

HelThunk

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: Piedra, papel, tijeras y algo más... en javascript
« Respuesta #7 en: 15 Abril 2016, 19:15 »

Si, el uso que le doy es algo similar a lo que harías con un case:

Código
  1. ...
  2. case 'Air':
  3.    return ["Water", "Dragon", "Devil", "Lightning", "Gun", "Rock", "Fire"].includes(p2);
  4. ...

map es map a menos que yo haga algún cambio. Cuando tu haces:

Código
  1. map[p1] //donde p1 es una de las 15 opciones

El resultado de esa expresión es el arreglo que contiene las posibilidades para la cual la entrada p1 es ganadora. Es decir si p2 eligió cualquiera de esas entradas entonces p1 gana y p2 pierde. De lo contrario p2 pierde. Lo único que haces es buscar si la opción que p2 eligió está dentro de este arreglo.

El triple signo de igualdad ( === ) es usado para hacer una comparación estricta entre dos expresiones. Cuando tu utilizas el doble signo de igualdad ( == ) y los valores a los que resuelve cada una de las expresiones son de diferente tipo, javascript intenta convertir los valores al punto que pueda hacer la comparación. Yo quiero comparar exactamente el mismo valor y no valores similares, quiero evitar esta coerción de datos. De todos modos, si utilizas valores del mismo tipo con doble signo de igualdad realiza los mismos pasos que si usarás el triple signo de igualdad.

Mi página todavía no está terminada :P, de momento solo tengo algunas entradas acerca de código asíncrono en javascript.

Perfecto :), muchas gracias por la explicación, aunque una duda.. dices que == intenta convertir los valores a un símil, ¿al finalizar la comparación devuelve el dato a su estado anterior?,¿ o si ha convertido un num en text se queda como text?
En línea

MinusFour


Desconectado Desconectado

Mensajes: 4.361


I'm fourth.


Ver Perfil WWW
Re: Piedra, papel, tijeras y algo más... en javascript
« Respuesta #8 en: 16 Abril 2016, 14:42 »

Perfecto :), muchas gracias por la explicación, aunque una duda.. dices que == intenta convertir los valores a un símil, ¿al finalizar la comparación devuelve el dato a su estado anterior?,¿ o si ha convertido un num en text se queda como text?

Las referencias se quedan como tal, los valores convertidos se usan para comparar y luego se descartan.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Piedra, Papel o Tijeras a lo Geek
Foro Libre
Angeldj27 7 1,771 Último mensaje 5 Abril 2010, 21:01
por Azielito
piedra papel tijera....en c++
Programación C/C++
flony 6 8,565 Último mensaje 9 Agosto 2010, 05:24
por Beakman
[SRC] Piedra Papel Tijera [Pro version (?) xD]
Programación Visual Basic
Psyke1 0 716 Último mensaje 6 Noviembre 2010, 17:30
por Psyke1
Piedra Papel Tijeras [JAVA]
Java
overxfl0w13 2 4,766 Último mensaje 9 Noviembre 2012, 15:33
por overxfl0w13
Piedra papel o tijeras
Programación C/C++
JaviCasti 1 103 Último mensaje 11 Enero 2017, 19:29
por AlbertoBSD
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines