Foros del Web » Programando para Internet » Javascript »

Juego de dados entre dos jugadores.

Estas en el tema de Juego de dados entre dos jugadores. en el foro de Javascript en Foros del Web. Supongamos que tenemos el siguiente archivo que ejecuta el juego de tirar un dado, pero necesito crear un segundo jugador y hacer que primero tire ...
  #1 (permalink)  
Antiguo 02/07/2016, 08:21
 
Fecha de Ingreso: noviembre-2009
Mensajes: 278
Antigüedad: 14 años, 4 meses
Puntos: 2
Juego de dados entre dos jugadores.

Supongamos que tenemos el siguiente archivo que ejecuta el juego de tirar un dado, pero necesito crear un segundo jugador y hacer que primero tire un jugador, después tire el segundo jugador y que salga un mensaje que diga qué jugador ha ganado.

¿Cual sería su código?
Debería mostrar dos imágenes de dos

Código del juego del dado.
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <head>
  3.         <meta charset="utf-8">
  4.         <title>Dados Jquery</title>
  5.         <script src="http://code.jquery.com/jquery-latest.js"></script>
  6.         <script type="text/javascript">
  7.             $(document).ready(function(){
  8.                 // una vez cargado el archivo, tiramos el primer dado
  9.                 tiroDado();
  10.             });
  11.            
  12.             function tiroDado(){
  13.                          
  14.                 // obtenemos un numero aleatorio entre el 0 y el 5
  15.                 var num = Math.floor(Math.random() * 6) + 0;
  16.                 // escondemos todas las imagenes
  17.                 $("#tablero img").hide();
  18.                 // mostramos la imagen aleatoria
  19.                 $("#tablero img").eq(num).fadeIn();
  20.                 // mostramos el numero en texto
  21.                 $("#ultimoNumero").html(num+1);
  22.             }
  23.         </script>
  24.         <style>
  25.             #tablero img {display:none;width:167px;height:167px;}
  26.         </style>
  27.     </head>
  28.     <div id="tablero">
  29.         <img src="dado1.png"/>
  30.         <img src="dado2.png"/>
  31.         <img src="dado3.png"/>
  32.         <img src="dado4.png"/>
  33.         <img src="dado5.png"/>
  34.         <img src="dado6.png"/>
  35.     </div>
  36.     <input type="button" onclick="tiroDado();" value="Tirar Dado"/> N&uacute;mero: <span id='ultimoNumero'></span>
  37.    
  38. </body>
  39. </html>

Última edición por quad22; 02/07/2016 a las 11:17
  #2 (permalink)  
Antiguo 02/07/2016, 12:04
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Juego de dados entre dos jugadores.

a puro js no se puede, ya que la conexión entre jugadores debe pasar por un servidor que conecten dos o más clientes.

te recomiendo usar ajax y php

saludos. :)
  #3 (permalink)  
Antiguo 02/07/2016, 13:05
 
Fecha de Ingreso: noviembre-2009
Mensajes: 278
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Juego de dados entre dos jugadores.

Bueno... sólo quiero una simulación.

Creo que debería duplicar el código y escribir la orden de que al finalizar el jugador 1 empiece el jugador 2 y finalmente que un script indique qué jugador ha sacado el número más alto.

¿Cómo sería el código?
  #4 (permalink)  
Antiguo 02/07/2016, 13:20
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Juego de dados entre dos jugadores.

Quieras una simulación o no, para conectar 2 clientes -o más- debes tener alguna tecnología que acepte y tome los datos de todo el juego, porque no es solo conocer quien ganó la partida, sino que el estado del juego en general. y eso con js no lo vas a lograr

edito: lo otro es probar con node js

saludos

Última edición por alvaro_trewhela; 02/07/2016 a las 14:04
  #5 (permalink)  
Antiguo 02/07/2016, 14:55
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Juego de dados entre dos jugadores.

¿Algo como esto?

Básicamente, tienes que establecer al conjunto de jugadores implicados, el resultado del lanzamiento del dado para cada uno de ellos y el ganador o ganadores (en caso de empate).

En este ejemplo, se permite registrar a N jugadores; luego, se procede a guardarlos en un arreglo que es recorrido con una estructura cíclica para que, en cada iteración, se realice la simulación del lanzamiento del dado que no es otra cosa que la obtención de un número aleatorio entre el 1 y el 6 (no se puede obtener un cero al lanzar un dado, como pretendes). Al obtener el resultado, se le compara con el valor mayor obtenido en los lanzamientos previos; pero como al inicio no se habrá realizado lanzamiento alguno, establezco un valor inicial menor que el mínimo que se puede obtener para que así, luego del primer lanzamiento, el primer jugador, por lógica, lleve la delantera. Conforme se obtienen resultados superiores, se almacena el nombre o nombres correspondientes en una variable que, finalmente, es mostrada, indicando quién o quiénes ganaron.

Debido a que se trata de un ejemplo sencillo, te sugiero adaptarlo a lo que necesitas. No dudes en preguntar por si no entendiste algo.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 02/07/2016, 16:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 278
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Juego de dados entre dos jugadores.

Lo que necesito es establecer esto:

  #7 (permalink)  
Antiguo 02/07/2016, 16:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Juego de dados entre dos jugadores.

Lo único que cambiaría es la muestra del resultado, misma que imprimirías en el elemento que nos muestras. La determinación del ganador o ganadores, no tendría que variar.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 02/07/2016, 17:04
 
Fecha de Ingreso: noviembre-2009
Mensajes: 278
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Juego de dados entre dos jugadores.

También tiene que estimar el empate. Este ejemplo es más sencillo:

  #9 (permalink)  
Antiguo 02/07/2016, 17:11
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Juego de dados entre dos jugadores.

Mira yo he persistido con ajax por la simple idea MÍA de que cada jugador INDEPENDIENTE, es decir, no bots como lo muestra Alexiss88, y que además cada jugador este en su ordenador.

Ahora, si ambos jugadores están en el mismo PC, se me ocurrió una solución un poco fea:

Código HTML:
Ver original
  1.     <head>
  2.         <title>Dice Game</title>
  3.         <script type="text/javascript">
  4.         start = false;
  5.        
  6.         function startGame(){
  7.             if(!start){
  8.             var name1 = document.getElementById("player1_start").value;
  9.             var name2 = document.getElementById("player2_start").value;
  10.            
  11.             var aux = true;
  12.            
  13.                 if(name1 == "" || name2 == ""){
  14.                 alert("Uno de los jugadores no ingreso su nombre");
  15.                 aux = false;
  16.                 }
  17.                
  18.                 if(name1 == name2){
  19.                 alert("Los nombres de los jugadores coinciden");
  20.                 aux = false
  21.                 }
  22.                
  23.                 if(aux){
  24.                 start=true;
  25.                 document.getElementById("start_form").style.display = "none";
  26.                 document.getElementById("game_main").style.display = "inline";
  27.                
  28.                 document.getElementById("player1").innerHTML=name1;
  29.                 document.getElementById("player2").innerHTML=name2;
  30.                
  31.                 alert("Juego iniciado!! suerte ;)");
  32.                 }
  33.             }
  34.             else{
  35.             alert("Juego ya iniciado");
  36.             }
  37.         }
  38.        
  39.         function jugar(num){
  40.             if(start){
  41.             var jugador = document.getElementById("player"+num+"_result");
  42.                 if(jugador.innerHTML == "0"){
  43.                 var dado = Math.floor(Math.random()*6)+1;
  44.                 jugador.innerHTML = dado;
  45.                 }
  46.                 else{
  47.                 alert("usted ya lanzo...");
  48.                 }
  49.             }
  50.             else{
  51.             alert("El juego aun no ha iniciado");
  52.             }      
  53.         }
  54.        
  55.         function winner(){
  56.         var r1 = parseInt(document.getElementById("player1_result").innerHTML);
  57.         var r2 = parseInt(document.getElementById("player2_result").innerHTML);
  58.             if(r1 != 0 && r2 != 0){
  59.             var playerName1 = document.getElementById("player1").innerHTML;
  60.             var playerName2 = document.getElementById("player2").innerHTML;
  61.            
  62.                 if(r1 > r2){
  63.                 alert(playerName1+" gano!!");
  64.                 var playerScore1 = document.getElementById("score_1");
  65.                 playerScore1.innerHTML = parseInt(playerScore1.innerHTML)+1;
  66.                 }
  67.                 else if(r1 < r2){
  68.                 alert(playerName2+" gano!!");
  69.                 var playerScore2 = document.getElementById("score_2");
  70.                 playerScore2.innerHTML = parseInt(playerScore2.innerHTML)+1;
  71.  
  72.                 }
  73.                 else{
  74.                 alert("empate");
  75.                 }
  76.             document.getElementById("player1_result").innerHTML = "0";
  77.             document.getElementById("player2_result").innerHTML = "0";
  78.             }
  79.             else{
  80.             alert("Espere al otro jugador");
  81.             }
  82.         }
  83.        
  84.         </script>
  85.     </head>
  86.     <body>
  87.         <div id="start_form">
  88.         Jugador 1: <input type="text" id="player1_start"><br/>
  89.         Jugador 2: <input type="text" id="player2_start"><br/>
  90.         <input type="button" value="Start" onclick="startGame();" />
  91.         </div>
  92.        
  93.         <div id="game_main" style="display:none;">
  94.         <span id="player1"></span> <input type="button" value="Tire el dado!!" onclick="jugar(1); setTimeout('winner()', 100);"/> Su numero es <span id="player1_result" >0</span> &nbsp; Puntaje: <span id="score_1">0</span><br/>
  95.         <span id="player2"></span> <input type="button" value="Tire el dado!!" onclick="jugar(2); setTimeout('winner()', 100);"/> Su numero es <span id="player2_result" >0</span> &nbsp; Puntaje: <span id="score_2">0</span><br/>
  96.         </div>
  97.     </body>
  98. </html>

está muy fea la hice a la rápida y sin pensar en MUCHAS cosas, simplemente resolví el problema a lo bruto...

Saludos
  #10 (permalink)  
Antiguo 02/07/2016, 18:05
 
Fecha de Ingreso: noviembre-2009
Mensajes: 278
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Juego de dados entre dos jugadores.

Buena aportación.

Y cómo implementarías las imágenes de los dados, esto es, ¿como adaptarías el código:

<div id="tablero">
<img src="dado1.png"/>
<img src="dado2.png"/>
<img src="dado3.png"/>
<img src="dado4.png"/>
<img src="dado5.png"/>
<img src="dado6.png"/>
</div>
<input type="button" onclick="tiroDado();" value="Tirar Dado"/> N&uacute;mero: <span id='ultimoNumero'></span>

a tu solución?.

(cada jugador deberá mostrar su propio dado).
  #11 (permalink)  
Antiguo 02/07/2016, 18:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Juego de dados entre dos jugadores.

Ten un arreglo con las rutas de las imágenes y selecciona a la que corresponda con el valor aleatorio obtenido, recordando que, en un arreglo, las posiciones se cuentan desde el cero.

Por cierto, en el ejemplo que te pasé, también se toma en cuenta un eventual empate entre N jugadores.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:43.