Originalmente inviato da
svacant
Bravo, se ho l'alfiere in c 6, mi dai la formula che calcola i quadrati dove può muoversi?
Ma a cosa serve una formula? Tu sposti l'alfiere e il programma controlla se è possibile quella mossa. Non è difficile.
Codice PHP:
//alfiere
function move($x, $y) {
if(abs($this->x - $x) == abs($this->y - $y)) //ok (aggiorni le posizioni)
return true;
else
return false;
}
Questo perchè l'alfiere si muove in obbliquo, quindi qualsiasi sia la mossa che fa da lo stesso incremento (in valore assoluto) su x e y.
La torre può avere un incremento illimitato su x o y, a patto che una delle due coordinate sia ferma. Il cavallo può spostarsi ad L, di conseguenza la sua mossa, può avere un incremento due su x e uno su y oppure due su y e uno su x (sempre in valore assoluto, prendendo come riferimento la posizione di partenza).
Il re può spostarsi dappertutto, a patto che faccia una sola mossa. Quindi la differenza tra la posizione attuale e quella nella quale spostarsi deve dare 1 in valore assoluto (o la x o la y o entrambe).
La regina è l'unione della torre + l'alfiere. Può spostarsi dappertutto. Il pedone può andare solo in avanti o in obbliquo per mangiare. La prima mossa può essere di due posizioni in avanti, le altre solo di una (incremento 2 su y e 0 su x la prima volta, e 1 su y e 0 su x le altre. Per mangiare incremento 1 sia su x che y).
Se la mossa è possibile aggiorni le posizioni e ricarichi la scacchiera, altrimenti no.