Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/06/2009, 10:00
davchess
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 4 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