Je crée un jeu d'échecs en Java et je vérifie qu'aucune pièce ne bloque le chemin de la pièce déplacée. La pièce se déplace de (srcX,srcY) à (dstX,dstY).
J'ai écrit ce code qui vérifie s'il y a des obstructions pour une tour :
if(dstY == srcY) {
// No change on Y axis, so moving east or west
if(dstX > srcX) {
// Moving east
// Test every cell the piece will pass over
for(int x = srcX+1; x < dstX; x++) {
// Is the cell set?
if(isPiece(x, srcY)) {
return true;
}
}
} else {
// Must be moving west
// Test every cell the piece will pass over
for(int x = srcX-1; x > dstX; x--) {
// Is the cell set?
if(isPiece(x, srcY)) {
return true;
}
}
}
} else if(dstX == srcX) {
// No change on X axis, so moving north or south
if(dstY > srcY) {
// Moving north
// Test every cell the piece will pass over
for(int y = srcY+1; y < dstY; y++) {
// Is the cell set?
if(isPiece(srcX, y)) {
return true;
}
}
} else {
// Must be moving south
// Test every cell the piece will pass over
for(int y = srcY-1; y > dstY; y--) {
// Is the cell set?
if(isPiece(srcX, y)) {
return true;
}
}
}
}
mais c'est un peu gros et je suis sûr que cela peut être simplifié des idées ?
ps, c'est UNIQUEMENT un test d'obstruction. J'ai déjà validé tout le reste.