Ver Mensaje Individual
  #10 (permalink)  
Antiguo 30/07/2011, 11:49
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 9 meses
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