Foros del Web » Programando para Internet » PHP »

Desafio : Tres en Raya

Estas en el tema de Desafio : Tres en Raya en el foro de PHP en Foros del Web. Cita: Iniciado por Krunoslav Es realmente invencible. La única forma fue con trampa. Aunque «legítimo» programilmente, modificando la dirección. jeje [...] SI es cierto, como ...

  #31 (permalink)  
Antiguo 10/07/2007, 10:43
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Cita:
Iniciado por Krunoslav Ver Mensaje
Es realmente invencible.
La única forma fue con trampa. Aunque «legítimo» programilmente, modificando la dirección. jeje



[...]
SI es cierto, como el tablero se pasaba todo por la url, y no habia ninguna medida para verificar que el tablero sea el indicado... Pero ya le implemente un control, asi que ya no es posible hacerle trampas

Un saludo,
  #32 (permalink)  
Antiguo 10/07/2007, 12:12
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

Yaps termine de implementar mejor mi Gatito, ahora es la version 0.5 , ya estoy llegando a la version final wiii.

Se defiende bastante bien tanto cuando parte el, como cuando parte el usuario, y ademas ahora ataca y defiende bien. y no cae en las tipicas trampas.

Espero comentarios si alguien le gana a mi gatito
http://deerme.org/gato/
  #33 (permalink)  
Antiguo 10/07/2007, 12:15
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

http://deerme.org/gato/?op=&ob=&x=0&y=0

Fatal error: Call to a member function on a non-object in /home/deerme/public_html/gato/index.php on line 903

Solo hice clic en la esquina superior izquierda, en el primer turno

Un saludo,
  #34 (permalink)  
Antiguo 10/07/2007, 12:23
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Cita:
Iniciado por DeeR Ver Mensaje
[...]Se defiende bastante bien tanto cuando parte el, como cuando parte el usuario[...]

Cita:
Iniciado por DeeR Ver Mensaje
[...]y ademas ahora ataca[...]
[...]no cae en las tipicas trampas[...]
es cierto, tu gato no cae en ciertas trampas, pero tampoco sabe hacerlas, y es asi que llevo varios juegos y todos terminan en empate, aunque tu Kitty tuvo varias veces la oportunidad de ganarme...

Un saludo,
  #35 (permalink)  
Antiguo 10/07/2007, 12:32
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

Cita:
Iniciado por okram Ver Mensaje
http://deerme.org/gato/?op=&ob=&x=0&y=0

Fatal error: Call to a member function on a non-object in /home/deerme/public_html/gato/index.php on line 903

Solo hice clic en la esquina superior izquierda, en el primer turno

Un saludo,
Es poque todavia no se ha instanciado el objeto Gato , ya que primero hay que cargar un juego (boton nuevo juego) para eso, mejor q nada, no deberian haber enlaces si todavia no hay un juego xD xD XD, ya ta corregido :P

Sips mi tiny little kitty todavia se confunde , hay le toy enseñando para ver si aprende a atacar bien, como toda una fiera haha

Haha ya encontre una tecnica que pierde mi gato, cuando parte el player, mmm tendre q hacer q se defianda antes ella xD

Última edición por DeeR; 10/07/2007 a las 12:39 Razón: chorinfonflai
  #36 (permalink)  
Antiguo 10/07/2007, 12:40
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Le ganeeeeeeeeeeeeeeeee!!!!!!!!!!! Le falta valor predictivo a tu gato



Ademas he notado que al hacer F5 despues de jugar la pc vuelve a jugar, y sigue, y sigue, y al final...



incluyendo eso print_r() de arriba. Buen trabajo DeeR

Un saludo,
  #37 (permalink)  
Antiguo 10/07/2007, 12:47
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya



Un saludo,
  #38 (permalink)  
Antiguo 10/07/2007, 12:47
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

jeje grax okram sips, son esos print_r q salen de la nada haha (se hace lo q se puede haha)

bueno igual estube aplicando mi repertorio de tecnicas a tu felino , y le gane :P
(eso si, partiendo yo).




jeje pero ta weno, incluso simule una partida DeeR vs Okram (yo jugando contra ti, pero segun lo q responde mi maqina, y tus moviemientos, yo respondiendo en mi makina) y empatamos :P jeje

saludos
  #39 (permalink)  
Antiguo 10/07/2007, 12:56
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Yo no le puedo ganar al mio ... Cual fue la secuencia que usaste?
EDITO: La encontre... Mas tarde lo revisaré... Gracias por el dato!

Un saludo,
  #40 (permalink)  
Antiguo 10/07/2007, 13:06
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

Primero le dije
- Te voy a ganar CPU AAAAJAAA(estilo nelson)
jejej

hay va el screnshot


Saludos
  #41 (permalink)  
Antiguo 10/07/2007, 13:49
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

DeeR, me puse a jugar un poco con tu programa, y encontré que a veces en la última jugada no juega. Es decir, hay 4 jugadas de cada lado, la última es la mía... y cuando debería jugar el programa, no lo hace, me obliga a marcar 2 veces seguidas (el resultado no se modifica, es empate, pero bueno...)
No he logrado recrear la situación, pero sucede.

Como comentario general, les cuento que el mío por ahora no sabe moverse, simplemente va marcando las jugadas que se le pasan por la URL y detecta si hay una victoria.
El trabajo no me deja mucho tiempo para hacerlo, pero lo puedo terminar sin problemas antes del plazo de 3 semanas. Además, como ya escribí antes, ya tenía pensadas desde hace tiempo algunas jugadas interesantes (victorias seguras, en las que tu programa cae...), porque pensaba programar este juego. Me parece que mi programa va a ser muy fuerte en defensa pero no muy inteligente para atacar...
  #42 (permalink)  
Antiguo 10/07/2007, 15:29
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

Comenze a Trabajar en el Script Albitro para la Competencia de los Scripts.

Por el momento funciona bien ( reconoce cuando alguien gana ) y envia bien los datos a los Scripts, por el momento solo lo he probado CPU DeeR vs CPU DeeR , haha , como de 10 Partidos , 6 Empates y 2 Victorias para cada uno. ( tendre que solucionar los casos donde pierde mi Script).

http://deerme.org/gato/server.php

Para que funcione con Otras Scripts, deben tener los siguientes Campos de Entrada

op , que va a tener siempre el valor 3, indica que es un juego CPU vs CPU

ob , indica el Objeto de la Maquina a la Cual estamos llamando , tiene el valor 1 o 2 (es importante recalcar si una maquina juega con 1, la otra con 2).

tablero el tablero se le entrega en la URL serializado, es decir, si tienen Magic Quotes Activados, deben quitarle los Slash

Código PHP:
<?

$tablero 
unserialize(stripslashes($_REQUEST['tablero']));
// De Esta Manera la variable $tablero tiene el tablero que fue enviado por GET
?>
Y Finalmente el Script debe responder solamente lo siguiente (imprimir solamente esto)

Código PHP:
<?

echo (serialize($tablero));

?>
Por eso deben distingir la presentacion con la variable op , ya que esta indica que es un juego CPU vs CPU , si tiene un valor igual a 3 , solo debe imprimir el tablero serializado, si no , imprime la presentacion de los Scripts.

Si segimos estos pasos, podemos lograr, que los Scripts Funcionen adecuadamente para la competencia.
  #43 (permalink)  
Antiguo 10/07/2007, 18:12
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Cita:
Iniciado por DeeR Ver Mensaje

Que lata esta! Arreglé ese error y aparecieron otros que no estaban antes Lo complique mucho el codigo y ahora nisiquiera yo lo entiendo bien No se que voy a hacer!!!!!!!!

Un saludo,

EDITO: Le puse mas caritas, pero me dijo que solo puedo poner... 15?
Cita:
Iniciado por FDW
Has incluido 22 imágenes en tu mensaje. Tú estás limitado a utilizar 15 imágenes asi que por favor regresa y corriges el problema y continuas de nuevo.
  #44 (permalink)  
Antiguo 10/07/2007, 23:09
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

Yaps analize varias tecnicas donde perdia mi Script, tanto cuando parte Player o CPU. Ahora es la Version 0.999.
Y Se defiende muy bien. Aunque todavia tiene una debilidad, pero no he podido parchearla, ya que sucede derrepente y no la puedo excluir haha.

de echo tambien encontre otra debilidad(la q me conto el amigo alvlin) eso si es un caso ocacional, cuando se va a empatar, la maquina no juega, pero igual es un empate seguro. todavia no lo he podido excluir haha.


De echo ahora en la ver 0.999 ningun de mis contacto le pudo ganar a mi gato, asi q se ta defendiendo bien, todavia el ataque es suave, pero pronto sera brutal hahaha.

http://deerme.org/gato/

Saludos
  #45 (permalink)  
Antiguo 11/07/2007, 09:46
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

La verdad no recuerdo la secuencia, solo recuerdo que la posicion 0,0 y la posicion 1,0 estaban vacias, yo marque en la 1,0 y por alguna razon tu script no marco nada, asi que marque en la 0,0 y gane px



Un saludo,
  #46 (permalink)  
Antiguo 11/07/2007, 10:32
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Solucione el Bug de la version 1.2, pero no de la manera en que yo hubiera querido , bueno en fin; aqui os presento la version 1.3 en modo BETA (asi lo digo porque no lo probe a fondo, y puede tener debilidades que antes no tenia)...

http://www.okram.com.ar/fdw/threeinarow.class.php

Un saludo,
  #47 (permalink)  
Antiguo 13/07/2007, 12:58
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

No tenia tiempo para mi gatito, pero ya llego a la Version 1.0 Stable, parcheado el Error que aveces la CPU no responde ninguna jugada (Simplemente detecta si al final no ha jugado, que vuelva a jugar xD).

Por el momento, ya cuesta mucho ganarle a mi gato, de echo yo ya no puedo, ni yo partiendo, y mucho menos cuando el parte. Incluso he echo mini competencias entre mi Mismo Scripts y versiones anteriores, y la 1.0 le ha ganado a los otros jojojo, lo que si, cuando compite CPU 1.0 vs CPU 1.0 a 1000 partidas, hay como 10 partidas en la cual gana la primera CPU, y debido a que la CPU 2 no responde como debe (y eso que esta programada para responder de tal forma). y es una verdadera lata empezar averiguar por que no responde como debe ser, aunque eso sucede con una baja probabilidad :P

Ya bueno en fin, cuando tenga un rato libre tratare de parxear esta ultima vulnerabilidad , pero hasta el momento, yo jugando contra la maquina, no la he encontrado.

http://deerme.org/gato/

Saludos
  #48 (permalink)  
Antiguo 16/07/2007, 18:48
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Re: Desafio : Tres en Raya

Oye deer, esta xido tu gato, pero que crees, hay un error cuando en una ultima tirada.. yo dejo ganar al CPU osea no lo bloqueo si no dejo que acomplete el.. el final y me dice "Empate", pero si le suma la victoria..
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #49 (permalink)  
Antiguo 17/07/2007, 06:58
 
Fecha de Ingreso: abril-2007
Mensajes: 101
Antigüedad: 17 años
Puntos: 0
Re: Desafio : Tres en Raya

Hola Deer, otro de los errores que pude conseguir es que luego de haber jugado el Player (ya sea comenzando el CPU o el Player) si se le da actualizar (F5) a la página el CPU vuelve a jugar hasta que gane... Adicionalmente cuando se esta jugando si se cambia quien comienza, el contador de los puntos que llevan los jugadores cambian los titulos mas no el puntaje... Me explico si el CPU lleva 5 y el Player 1 al cambiar que comience el Player pues se mostraría los puntos intercambiados... y siempre que gane el CPU va a aumentar los puntos pertenecientes al CPU así estén cambiados... llevando un conteo erroneo

Así mismo me gustaría decirte que me gusta mucho que a pesar de cerrar la ventana de "La vieja" como llamamos el juego en Vzla, siempre queda almacenado cuales fueron los ultimos puntajes y como habia quedado el juego anterior! Eso esta muy bien!

Última edición por naujgf; 17/07/2007 a las 07:02 Razón: No todo son errores...
  #50 (permalink)  
Antiguo 18/07/2007, 11:20
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Parece que este desafio no tiene tanta acogida como el anterior. Sin embargo, seguimos esperando ... Aqui esta mi nuevo avance (Cambio de URL):

http://fdw.myokram.com.ar/gato/

permite efectuar un choque entre dos scripts. Por el momento solo hay dos capaces de soportarlo, el mio y el de DeeR....

Veamos, hacen clic en alguno de los dos links inferiores, que dicen juego con script remoto, les aparecera un cuadro donde tienen que introducir la url del script, terminada en .php, por ahora solo funciona con estas dos:

http://fdw.myokram.com.ar/gato/index.php
http://www.deerme.org/gato/index.php

Ponen cualquiera de los dos, escogen las marcas y el juego empieza (internamente claro, solo veran los resultados).

Para que un script sea apto para competir debe imprimir un tablero serializado, que debera ser un array en la forma especificada por DeeR en el primer post, y debera ser capaz de recibirlo por la variable tablero, procesarlo y luego imprimirlo. Paraver a que me refiero entrar a:

http://fdw.myokram.com.ar/gato/index...i:0;i:2;i:1;}}
ó
http://www.deerme.org/gato/index.php...i:0;i:2;i:1;}}

Estuve realizando varios choques, y todos terminaron en empate

Un saludo,
  #51 (permalink)  
Antiguo 18/07/2007, 13:31
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

Cita:
Iniciado por okram Ver Mensaje
Parece que este desafio no tiene tanta acogida como el anterior. Sin embargo, seguimos esperando ... Aqui esta mi nuevo avance (Cambio de URL):

http://fdw.myokram.com.ar/gato/

permite efectuar un choque entre dos scripts. Por el momento solo hay dos capaces de soportarlo, el mio y el de DeeR....

Veamos, hacen clic en alguno de los dos links inferiores, que dicen juego con script remoto, les aparecera un cuadro donde tienen que introducir la url del script, terminada en .php, por ahora solo funciona con estas dos:

http://fdw.myokram.com.ar/gato/index.php
http://www.deerme.org/gato/index.php

Ponen cualquiera de los dos, escogen las marcas y el juego empieza (internamente claro, solo veran los resultados).

Para que un script sea apto para competir debe imprimir un tablero serializado, que debera ser un array en la forma especificada por DeeR en el primer post, y debera ser capaz de recibirlo por la variable tablero, procesarlo y luego imprimirlo. Paraver a que me refiero entrar a:

http://fdw.myokram.com.ar/gato/index...i:0;i:2;i:1;}}
ó
http://www.deerme.org/gato/index.php...i:0;i:2;i:1;}}

Estuve realizando varios choques, y todos terminaron en empate

Un saludo,
Yo he echo batallas Locales mi CPU vs CPU , y de 1000 juegos, gana la CPU1 como 22 y los otros puros empates, xD xD.

Respecto a algunos errores, los voy a corregir sobre el contador de resultado , sobre que aveces no quiere jugar, es raro, pero lo voy a volver a ver, sobre lo de reload, es medio complicado, y ademas si alguien hace reload, deja jugar a CPU 2 veces la CPU pos hahaha.

Saludos

Voy a probar algunas batallas contra el Gatito de Okram

Saludos
  #52 (permalink)  
Antiguo 18/07/2007, 13:50
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

Okram, yo con mi Script para Competencias, que en general es bien basico, tengo problema al competir mi Script con el Tuyo, aunque cuando realizo DeeR vs DeeR , o Okram vs Okram , funcion bien.

Mira Primera Peticion Tablero Limpio
Código:
CP1:http://fdw.myokram.com.ar/gato/index.php?op=3&ob=2&tablero=a:3:{i:0;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}i:1;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}i:2;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}}
El Resultado se lo Mando a mi Tablero
Código:
CP2:http://deerme.org/gato/index.php?op=3&ob=1&tablero=a:3:{i:0;a:3:{i:0;i:0;i:1;i:0;i:2;i:2;}i:1;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}i:2;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}}
La Respuesta se la Mando al tuyo
Código:
CP1:http://fdw.myokram.com.ar/gato/index.php?op=3&ob=2&tablero=a:3:{i:0;a:3:{i:0;i:0;i:1;i:0;i:2;i:2;}i:1;a:3:{i:0;i:0;i:1;s:1:"1";i:2;i:0;}i:2;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}}
y aqui me devuelve un Tablero Vacio con tu Jugada
Código:
a:3:{i:0;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}i:1;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}i:2;a:3:{i:0;i:0;i:1;i:0;i:2;i:2;}}
Aunque con tu propio Script, hacer competir el mio contra el tuyo, funciona bien.
Pego Parte de mi Script de Server

Código PHP:
<?
// Desafio N°2    :     Implementando el Script Albitro "Tres en Raya"     FDW 
// Autor         :     DeeRme
//                    http://deerme.org

// Variables de Entrada $_REQUEST;
// Iniciamos Session

// Implementando el Script Albitro
include('class/class.myactiverecord.php');
define('MYACTIVERECORD_CONNECTION_STR''mysql://user:pwpwpw@deerme/gato');
define('USUARIO''user');
define('PASSWORD''pwpwpw');
define('SERVIDOR''localhost');
define('BASE_DE_DATOS''gato');

class 
resultado extends MyActiveRecord 
{
}
class 
gato
{
     
// Definimos Variables de la Entidad Juego
    
var $tablero = array (


=> array(

    
=> 0,
    
=> 0,
    
=> 0,
    ),
    
=> array(

    
=> 0,
    
=> 0,
    
=> 0,
    ),
    
=> array(

    
=> 0,
    
=> 0,
    
=> 0,
    )        
    


);
    
    
// Metodos

    
function win($quiengano)
    {    
        
// Debemos Buscar si Existe una Linea
        
for($ob $ob<$ob++)
        {
             
// Lados
             
            
if ( $this->tablero[0][0] == $ob AND $this->tablero[0][1] == $ob AND $this->tablero[0][2] == $ob)
            {
                
$quiengano=$ob;    return TRUE;
                
            }
            
            if ( 
$this->tablero[1][0] == $ob AND $this->tablero[1][1] == $ob AND $this->tablero[1][2] == $ob)
            {
                
$quiengano=$ob;    return TRUE;
            }
                
            if ( 
$this->tablero[2][0] == $ob AND $this->tablero[2][1] == $ob AND $this->tablero[2][2] == $ob)
            {
                
$quiengano=$ob;    return TRUE;
            }
            
            
// Abajo
            
if ( $this->tablero[0][0] == $ob AND $this->tablero[1][0] == $ob AND $this->tablero[2][0] == $ob)
            {
                
$quiengano=$ob;    return TRUE;    
            }
            
            if ( 
$this->tablero[0][1] == $ob AND $this->tablero[1][1] == $ob AND $this->tablero[2][1] == $ob)
            {
                
$quiengano=$ob;    return TRUE;        
            }
            
            
            if ( 
$this->tablero[0][2] == $ob AND $this->tablero[1][2] == $ob AND $this->tablero[2][2] == $ob)
            {
                
$quiengano=$ob;    return TRUE;        
            }
            
            
            
// Diagonal
            
if ( $this->tablero[0][0] == $ob AND $this->tablero[1][1] == $ob AND $this->tablero[2][2] == $ob)
            {
                
$quiengano=$ob;    return TRUE;        
            }
            
            
            if ( 
$this->tablero[2][0] == $ob AND $this->tablero[1][1] == $ob AND $this->tablero[0][2] == $ob)
            {
                
$quiengano=$ob;    return TRUE;    
            }
            
            
            
            
            
                
        }
        
        
// ¿ Empate ?
        
if ( !$this->buscar(&$this->tablero,0) )
        {
            
// Empate
            
$quiengano=0;
            return 
TRUE;
        }
        
        return 
0;
    
    }
    

    function 
buscar($array,$dato)
    {
        foreach(
$array as $valor)
        {
             foreach ( 
$valor as $digito )
             {
                if ( 
$dato == $digito )
                {
                    return 
TRUE;
                }
            }
        }
        return 
FALSE;
    }
    
    
    
    


    
}


function 
generartabla($array)
{
    echo 
'<br><table width="150" border="0" cellspacing="0" cellpadding="0" style="border:1px solid #999999">';
    for(
$i=0;$i<3;$i++)
    {
         echo 
'<tr>';
        for(
$j=0;$j<3;$j++)
        {
            echo 
'<td style="border:1px solid #999999">';
            
            if ( 
$array[$i][$j] == )
                echo 
'<img src="img/disponible.gif" width="50" height="50" />';
            elseif ( 
$array[$i][$j] == )
                echo 
'<img src="img/o.gif" width="50" height="50" />';
            elseif ( 
$array[$i][$j] == )
                echo 
'<img src="img/x.gif" width="50" height="50" />';
            echo 
'</td>';                
        }
        echo 
'</tr>';
    }
    
    echo 
'</table>';
    
    
}


for (
$i=0;$i<5;$i++)
{
    

// Comenzamos el Juego
$gatito = new Gato;
$CPU1 "http://fdw.myokram.com.ar/gato/index.php?op=3&";
$CPU2 "http://deerme.org/gato/index.php?op=3&";
// Mientras no Exista Ganador
do {
     
     
// Entregamos Tablero a la CPU1
     
$url $CPU1.'ob=2&tablero='.(serialize($gatito->tablero)).'';
     
$array file_get_contents($url);
     echo 
"CP1:".$url."<br>";
    
//$array = urldecode($array);
    
$array unserialize($array);
    
$gatito->tablero $array;
    
// Todo Bien hasta Aqui
    
generartabla(&$gatito->tablero);
    
    
// ¿ Es Posible que Gano ? Preguntamos
    
if ( $gatito->win(&$gano) )
        break;    
     
// Entregamos Tablero a la CPU2
     
$url $CPU2.'ob=1&tablero='.(serialize($gatito->tablero)).'';
     echo 
"CPU2:".$url."<br>";
     
$array file_get_contents($url);
    
//$array = urldecode($array);
    
$array unserialize($array);
    
$gatito->tablero $array;
    
generartabla(&$gatito->tablero);
    
// Todo Bien hasta Aqui     
     
    // !$gatito->win($gano)
    
    
} while ( !$gatito->win(&$gano) );

echo 
'<br><br>';
switch (
$gano): 

    case 
1:
        echo 
" Gano 1 $CPU1 V0.999";
        
// Gano CPU1
        
echo $html;
        
$r = new resultado;
        
$r->win1++;
        
$r->save();
    
    break;

    case 
2:
        echo 
" Gano 2 $CPU2 V0.5";
        
// Gano CPU2
        
echo $html;
        
$r = new resultado;
        
$r->win2++;
        
$r->save();
    break;

    case 
0:
        echo 
" Empate";
        
// Empate
        
$r = new resultado;
        
$r->emp++;
        
$r->save();
    break;

endswitch;

    
// Eliminamos el Gato
    
unset($gatito);
}




?>
Aunq con mi Script de Albitro, funcione bien mi gato contra mi gato, o tu gato contra tu gato, q sera??

mas q nada okram revisa el paso de pasos que puse al principio de este post, las URL paso a paso, pero al final tu script me responde un tablero vacio con su jugada.

Saludos

Última edición por DeeR; 18/07/2007 a las 13:51 Razón: miau
  #53 (permalink)  
Antiguo 20/07/2007, 10:44
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Bien, anduve revisando el problema que mencionas, pero no hallaba la solucion. Al llamar a mi script de esta manera:

http://www.myokram.info/fdw/index.ph...i:0;i:2;i:0;}}

Efectivamente devuelve un tablero vacio con su jugada. Asi que pense que el problema estaba en mi script, pero...

Me di cuenta de que tu script realiza sus jugadas y las marca usando valores de texto (strings), mientras que el mio marca usando valores numericos (int), fijate en esta parte de la respuesta que me envias:

a:3:{i:0;a:3:{i:0;i:0;i:1;i:0;i:2;i:2;}i:1;a:3:{i: 0;i:0;i:1;s:1:"1";i:2;i:0;}i:2;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}}

Realmente desconozco el significado exacto de eso, pero mi script esperaria una respuesta como:

a:3:{i:0;a:3:{i:0;i:0;i:1;i:0;i:2;i:2;}i:1;a:3:{i: 0;i:0;i:1;i:1;i:2;i:0;}i:2;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}}

El problema estaba en que yo recibia el tablero de esta forma:
Código PHP:
$board = (!empty($_GET['tablero'])) ? unserialize($_GET['tablero']) : null
Y como tus respuestas llevan comillas (\") porque sus valores son strings, el tablero que me pasabas no podia ser unserializado asi nomas, y por lo tanto mi script empezaba con un tablero nuevo.... El valor de $_GET['tablero'] era:

a:3:{i:0;a:3:{i:0;i:0;i:1;i:0;i:2;i:2;}i:1;a:3:{i: 0;i:0;i:1;s:1:\"1\";i:2;i:0;}i:2;a:3:{i:0;i:0;i:1;i:0;i:2;i:0;}} //Fijate en los slashes

Lo solucione cambiando la forma de recibir el tablero a:

Código PHP:
$board = (!empty($_GET['tablero'])) ? unserialize(stripslashes($_GET['tablero'])) : null
Asi ya no deberia haber mas problemas . Seria bueno que al marcar alguna casilla usaras la funcion intval(), para que asi no generes campos de tipo string

Un saludo,

Última edición por okram; 20/07/2007 a las 10:52
  #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,
  #55 (permalink)  
Antiguo 20/07/2007, 11:12
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Cita:
Iniciado por DeeR Ver Mensaje
[...]
tablero el tablero se le entrega en la URL serializado, es decir, si tienen Magic Quotes Activados, deben quitarle los Slash

Código PHP:
<?
 
$tablero 
unserialize(stripslashes($_REQUEST['tablero']));
// De Esta Manera la variable $tablero tiene el tablero que fue enviado por GET
?>
[...]
ahahahaha que wey q soy, por no leer bien... Pero de todas maneras, creo que lo mejor seria marcar el tablero con valores numericos (1,2,0) y no con cadenas de texto (strings) ("1","2","0")

Un saludo,
  #56 (permalink)  
Antiguo 21/07/2007, 18:52
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desafio : Tres en Raya

Cita:
Iniciado por okram Ver Mensaje
ahahahaha que wey q soy, por no leer bien... Pero de todas maneras, creo que lo mejor seria marcar el tablero con valores numericos (1,2,0) y no con cadenas de texto (strings) ("1","2","0")

Un saludo,
Que buena. estoy haciendo Dos Competencias , DeeR vs Okram , Okram vs DeeR , en cada una 100 duelos, el total ... todos llegaron a empates wooo

que bueno .. que nuestros scripts empaten, quiere decir q tienen buen nivel en el juego. Pronto los voy a tirar a una competencia de 1000 duelos ...

Saludos
  #57 (permalink)  
Antiguo 21/07/2007, 19:54
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Wow, anduve haciendo varios juegos entre nuestros scripts, y llegue al mismo resultado...

Buen trabajo

Un saludo,
  #58 (permalink)  
Antiguo 08/08/2007, 20:08
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Re: Desafio : Tres en Raya

Estuve mucho tiempo ausente del foro y ahora me encuentro con esto, lastima que lo encuentro ya muy avanzado (respecto a tiempo, ya que la mayoria ya lo hizo y hasta postearon codigos, a pesar de que no lei todo el thread).

Vere si participo.
  #59 (permalink)  
Antiguo 10/08/2007, 08:14
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 566
Antigüedad: 18 años, 5 meses
Puntos: 24
Re: Desafio : Tres en Raya

yo me uno, voy a probar aver como me va :P
  #60 (permalink)  
Antiguo 15/08/2007, 12:08
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Desafio : Tres en Raya

Estuve fuera por algun tiempo. Antes de que este tema muera por completo (me sorprendio ver que sigue como IMPORTANTE), propongo una semana mas de plazo por si alguien desea aun enviar algun tipo de aporte. Hasta el miercoles 22 de agosto. Ese dia, propongo liberar los codigos de los scripts que se haya elaborado, hasta ahora solo el mio y el de Deer.

Un saludo,
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:09.