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,