Ver Mensaje Individual
  #54 (permalink)  
Antiguo 20/07/2007, 11:01
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Aqui esta el codigo que uso para las batallas remotas:

Primero defino el tipo de juego.

Si op = 1 => Juego Humano vs CPU
Si op = 2 => Juego Humano vs Humano (Aun no habilitado)
Si op = 3 => Juego CPU vs CPU

En el primer caso, recibo el tablero, lo proceso e imprimo toda la presentacion que se ve.

En el tercer caso, ejecuto una funcion aparte:

Código PHP:

function getRemoteBoard($url) {
    
//$b = file_get_contents($url.'?op=3&ob='.$this->you.'&tablero='.serialize($this->encode_board()));
    
$b = @fopen($url.'?op=3&ob='.$this->you.'&tablero='.serialize($this->encode_board()),'r');
    
$b = @fgets($b);
    
$_b $b;
    
$b unserialize($b);
    if(
count($b) !== 3) {
        
$_SESSION['output'] .= "<p><b>El script remoto es inválido.</b>";
        if(!empty(
$_b)) $_SESSION['output'] .= " La respuesta recibida fue: <br /><br />".htmlspecialchars($_b);
        
$_SESSION['output'] .= "</p>";
        return;
    }
    
$this->board $this->decode_board($b);
    if(
count($this->getAv()) < 1) {
        
$this->end_game(0);
        
$_SESSION['output'] .= $this->get_board(null,1);
        
$_SESSION['output'] .=  '<p>El resultado del juego es: <b>Empate!</b></p>';
        return;
    }
    
$_SESSION['output'] .= $this->get_board(null,1);
    
$this->makeMyMove();
    if(
$this->i_win()) {
        
$this->end_game($this->me);
        
$_SESSION['output'] .= $this->get_board(null,1);
        
$_SESSION['output'] .=  '<p>El resultado del juego es: <b>Gana el script local!</b></p>';
        return;
    } 
    if(
$this->you_win()) {
        
$this->end_game($this->you);
        
$_SESSION['output'] .= $this->get_board(null,1);
        
$_SESSION['output'] .=  '<p>El resultado del juego es: <b>Gana el script remoto</b></p>';
        return;
    } 
    
$_SESSION['output'] .= $this->get_board(null,1);
    
$this->getRemoteBoard($url);
    return;

Esa es una funcion adicional que implemente a la clase, y se llama siempre y cuando la variable url en la url haya sido definida. SI no esta definida, imprime solamente el tablero serializado

Un saludo,