Foros del Web » Programando para Internet » PHP »

Como validar esto ... ¿¿??

Estas en el tema de Como validar esto ... ¿¿?? en el foro de PHP en Foros del Web. Buenas, es un tema un poco "raro", estoy haciendo un juego de ajedrez y necesito una validacion que no veo claro como hacerlo. Primero como ...
  #1 (permalink)  
Antiguo 15/06/2009, 10:00
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 10 meses
Puntos: 4
Como validar esto ... ¿¿??

Buenas, es un tema un poco "raro", estoy haciendo un juego de ajedrez y necesito una validacion que no veo claro como hacerlo.

Primero como lo tengo montado, un array, asi seria el inicio de la partida :

Código PHP:

        $this
->celda["a"][1]="T";
        
$this->celda["b"][1]="C";
        
$this->celda["c"][1]="A";
        
$this->celda["d"][1]="Q";
        
$this->celda["e"][1]="R";
        
$this->celda["f"][1]="A";
        
$this->celda["g"][1]="C";
        
$this->celda["h"][1]="T";
        
        
$this->celda["a"][8]="t";
        
$this->celda["b"][8]="c";
        
$this->celda["c"][8]="a";
        
$this->celda["d"][8]="q";
        
$this->celda["e"][8]="r";
        
$this->celda["f"][8]="a";
        
$this->celda["g"][8]="c";
        
$this->celda["h"][8]="t";
        
        
// los peones
        
$this->celda["a"][2]="P";
        
$this->celda["b"][2]="P";
        
$this->celda["c"][2]="P";
        
$this->celda["d"][2]="P";
        
$this->celda["e"][2]="P";
        
$this->celda["f"][2]="P";
        
$this->celda["g"][2]="P";
        
$this->celda["h"][2]="P";
        
        
// los peones
        
$this->celda["a"][7]="p";
        
$this->celda["b"][7]="p";
        
$this->celda["c"][7]="p";
        
$this->celda["d"][7]="p";
        
$this->celda["e"][7]="p";
        
$this->celda["f"][7]="p";
        
$this->celda["g"][7]="p";
        
$this->celda["h"][7]="p"
Asi es como lo declaro en la clase, despues pues valido movimientos de peon y demas, a partir del color de quien mueve, el tipo de ficha y las posibilidades pues hace una cosa u otra, esto ya esta hecho, ya se mueven todas, se comen entre ellas y se mantiene el turno logico de la partida ( en teoria funciona pero hay qeu depurar todavia ).

Mi duda es ¿Como hago para controlar que no pueda yo mover una pieza cualquiera si me estan haciendo jaque al rey?.

Pongamos esta posicion :

http://www.7chess.com/visor/visor.ph...e69718c0b9763f

Aquí tengo que ser capaz de ver que la reina me esta haciendo jaque y que tengo que defenderme si o si, si no seria mate, se me ocurrió en plan que valide a lo burro :

- Todas las diagonales, si hay ficha mía o blanco no pasa nada, si hay una que me puede hacer jaque pues aviso de que hay que "protegerse".
- Todos los laterales, ídem que arriba
- El movimiento del caballo todas las posibilidades.


Esto yo creo que podría funcionar, pero seria unir todo el código de todos los movimientos para una validación, me parece muy exagerado, pero no se me ocurre otra cosa.

¿Se os ocurre otra cosa? ¿Hay una forma mejor?. ¿He sido capaz de explicarme?

Ahora mismo movimiento, matar y demas es rapido, validado y creo que correcto pero esto no se me ocurre como hacerlo :(


Podeis ver como va por ahora aqui :
http://www.davchess.com/nuevomotor/

Lo mismo así veis lo que quiero explicar ... que creo que no quedo nada claro.

Por ahora la misma persona lo mueve todo, es decir, tu mueves los dos colores.
__________________
Juega al ajedrez online :http://www.davchess.com
Tecnicas de Ajedrez:http://www.7chess.com
  #2 (permalink)  
Antiguo 15/06/2009, 11:58
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 17 años, 1 mes
Puntos: 48
Respuesta: Como validar esto ... ¿¿??

La solución mas sencilla que se me ocurre es la siguiente.

Si el jugador que le toca mover está en jaque....

... realiza moviemiento.....

...Si el nuevo movimiento no evita el jaque (Su rey continua en jaque)....

...el nuevo moviemiento es inválido y debe elegir otro.

Saludos!
  #3 (permalink)  
Antiguo 15/06/2009, 13:35
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Como validar esto ... ¿¿??

Q tal lo estas haciendo con ajax?
  #4 (permalink)  
Antiguo 15/06/2009, 14:30
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Como validar esto ... ¿¿??

php + xajax + jquery

Es con lo que lo hago.

Synkronice el tema es como hago para saber que esta en jaque ...
__________________
Juega al ajedrez online :http://www.davchess.com
Tecnicas de Ajedrez:http://www.7chess.com
  #5 (permalink)  
Antiguo 15/06/2009, 15:44
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 17 años, 1 mes
Puntos: 48
Respuesta: Como validar esto ... ¿¿??

Disculpa pero yo respondí a tu pregunta...

Cita:
Iniciado por davchess Ver Mensaje
Mi duda es ¿Como hago para controlar que no pueda yo mover una pieza cualquiera si me estan haciendo jaque al rey?.
Saludos!
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

SíEste tema le ha gustado a 1 personas




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