Foros del Web » Programando para Internet » PHP »

Que el servidor adivine tu numero?

Estas en el tema de Que el servidor adivine tu numero? en el foro de PHP en Foros del Web. Hace poco me ayudaron a crear un "juego" donde tu adivinabas un numero del 1 al 100 segun el pc te decia muy alto o ...
  #1 (permalink)  
Antiguo 30/07/2011, 08:57
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 13 años
Puntos: 16
Pregunta Que el servidor adivine tu numero?

Hace poco me ayudaron a crear un "juego" donde tu adivinabas un numero del 1 al 100 segun el pc te decia muy alto o muy bajo, puse la demo aqui: www.forofopsp.cz.cc/num.php Hacer eso fue relativamente facil.

Ahora quiero que tu pienses un numero y el pc lo adivine suegun apretas botones muy alto o muy bajo. Es decir, yo pienso un numero del 1 al 100, pongamos el 50, el pc me dice, es el 30?, yo aprietoel boton muy bajo y el me dice uno mas alto, asi hasta adivinar mi numero. Me he estado comiendo la cabeza y no me sale!

P.D. me gustaria hacerlo con variables de session, ya que es para practicar!

Gracias de antemano!
  #2 (permalink)  
Antiguo 30/07/2011, 09:01
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Que el servidor adivine tu numero?

No hay forma de que tu programa sepa el numero que pensaste -_-"
  #3 (permalink)  
Antiguo 30/07/2011, 09:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Que el servidor adivine tu numero?

Pero eso no es adivinar, si le estás diciendo a la máquina cuál es el número Necesitas saber sobre sesiones, array y peticiones. Si sabes, ya con eso te das una idea de como lograrlo Ingresar en una sesión tipo array varios valores y por cada petición insertar en el array los números que concuerden a la pregunta que hizo. Si le preguntas, es menor a 30 y dice que no, insertas en el array del 1 al 30 y a la próxima verificas los números que estén en ese array y si concuerda no le preguntes bajo esos números sino bajo los números que falten.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 30/07/2011, 09:13
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 13 años
Puntos: 16
Respuesta: Que el servidor adivine tu numero?

Vamos a ver, me refiero, que el pc diga numero aleatorios con la funcion rand(x,y), en la cual segun tu vas apretando bajo y/o alto, esas x y y se vayan cerrando mas hasta que solo diga el que pensaste.
  #5 (permalink)  
Antiguo 30/07/2011, 09:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Que el servidor adivine tu numero?

Pues ya te di un ejemplo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 30/07/2011, 09:30
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 13 años
Puntos: 16
Respuesta: Que el servidor adivine tu numero?

Si, bueno, podrias decirme como empezzar un poco mas detalladamente?
  #7 (permalink)  
Antiguo 30/07/2011, 09:43
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Que el servidor adivine tu numero?

Empeza con rand(0,100). Eso te devuelve un número x.
Si te dice que es muy bajo el próximo rand lo haces con (x,100).
Si te dice que es muy alto lo haces con (0, x).

Suponete que el primer rand te dijo que era muy bajo, osea ahora vos haces un rand con (x,100) (supongamos que te da y). Suponé tambien que en la segunda vuelta te dice que es muy alto, entonces la tercera haces rand(x,y)... y así vas acotando inferior y superiormente.

Si no te quedo claro sos una planta xD
Saludos!
  #8 (permalink)  
Antiguo 30/07/2011, 10:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 13 años
Puntos: 16
Respuesta: Que el servidor adivine tu numero?

Bien, se como empezar la primera ronda, pero me quedo ataskao, soy un planta!
  #9 (permalink)  
Antiguo 30/07/2011, 10:13
Avatar de ZoroRoronoa  
Fecha de Ingreso: marzo-2011
Ubicación: California, USA
Mensajes: 824
Antigüedad: 13 años, 1 mes
Puntos: 116
Respuesta: Que el servidor adivine tu numero?

el numero arrojado lo guardas en una variable.

y mendiante condiciones, si es muy bajo o si es muy alto, y ejecutas nuevamente un numero aleatorio entre X y 100 si fue muy bajo o entre 0 y X si fue mui alto.
Pura Logica :D

*No lo he pesando bien, a medio tanteo solamente, pero creo que tambien pudieras usar un bucle
__________________
Programador jQuery & PHP
  #10 (permalink)  
Antiguo 30/07/2011, 11:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Que el servidor adivine tu numero?

No me gusta mucho este código, debe o tiene que existir una mejor forma, pero da la idea completa, si no sabes como lo hace, vas a tener que estudiar en el manual
Código PHP:
Ver original
  1. <?php
  2. define('MAX', 100);
  3. function mtRand()
  4. {
  5.     if(array_key_exists('tmp', $_SESSION) || array_key_exists('n', $_SESSION)){
  6.         $_SESSION['n'] = array_key_exists('n', $_SESSION) ? $_SESSION['n'] : array();
  7.         if(array_key_exists('tmp', $_SESSION)){
  8.             $_SESSION['n'] = array_unique(array_merge($_SESSION['n'], $_SESSION['tmp']));
  9.             foreach(range(1, MAX) as $v){
  10.                 if(!isset($min)){
  11.                     if(in_array($v, $_SESSION['n'])){
  12.                         continue;
  13.                     }
  14.                     $min = $v;
  15.                 }
  16.                 if(!isset($max)){
  17.                     if(!in_array($v, $_SESSION['n']) && $v != MAX){
  18.                         continue;
  19.                     }
  20.                     $max = $v == MAX ? $v : $v - 1;
  21.                 }
  22.                 $n = mt_rand($min, $max);
  23.             }
  24.         }
  25.     }else{
  26.         $n = mt_rand(1, MAX);
  27.     }
  28.     if(array_key_exists('n', $_SESSION) && count($_SESSION['n']) == MAX){
  29.         echo 'No sabes jugar ¬ ¬';
  30.         session_destroy();
  31.         exit;
  32.     }
  33.     if(array_key_exists('n', $_SESSION) && count($_SESSION['n']) == (MAX - 1)){
  34.         echo 'El número es ' . $n;
  35.         session_destroy();
  36.         exit;
  37.     }
  38.     unset($_SESSION['tmp']);
  39.     return $n;
  40. }
  41. if(array_key_exists('n', $_GET) && array_key_exists('r', $_GET)){
  42.     if(urldecode($_GET['r']) == '='){
  43.         echo 'El número es ' . $_GET['n'];
  44.         session_destroy();
  45.         exit;
  46.     }
  47.     switch(urldecode($_GET['r'])){
  48.         case '<':
  49.             $_SESSION['tmp'] = $_GET['n'] == MAX ? array(MAX) : range($_GET['n'], MAX);
  50.             break;
  51.         case '>':
  52.             $_SESSION['tmp'] = $_GET['n'] == 1 ? array(1) : range(1, $_GET['n']);
  53.             break;
  54.     }
  55. }else{
  56.     session_start();
  57. }
  58. $n = mtRand();
  59. echo $n;
  60. ?>
  61. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
  62. <input type="hidden" name="n" value="<?php echo $n; ?>" />
  63. <input type="radio" name="r" id="r_1" value="<?php echo urlencode('<'); ?>" /> <label for="r_1">Menor</label>
  64. <input type="radio" name="r" id="r_2" value="<?php echo urlencode('>'); ?>" /> <label for="r_2">Mayor</label>
  65. <input type="radio" name="r" id="r_3" value="<?php echo urlencode('='); ?>" /> <label for="r_3">Igual</label>
  66. <div><input type="submit" value="Verificar" /></div>
  67. </form>
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 30/07/2011 a las 12:08

Etiquetas: servidor, variables
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 09:07.