
@Mir3k, post #1
@Mir3k, post #1
czcionke zakosiłem z innej gry Last Minute Creations.:D
@tukinem, post #9
BOOL markAdjacentTiles(UWORD x, UWORD y, UWORD endX, UWORD endY, UWORD incomingDirection) {
if (x > 0 && incomingDirection!=DIRECTION_RIGHT) {
logWrite("Going left from %d %d to %d %d", x, y, x - 1, y);
if (analyzeTile(x - 1, y, endX, endY, DIRECTION_LEFT)) {
return TRUE;
}
}
if (x < BOARD_SIZE - 1 && incomingDirection!=DIRECTION_LEFT) {
logWrite("Going RIGHT from %d %d to %d %d", x, y, x + 1, y);
if (analyzeTile(x + 1, y, endX, endY, DIRECTION_RIGHT)) {
return TRUE;
}
}
if (y > 0 && incomingDirection!=DIRECTION_DOWN) {
logWrite("Going UP from %d,%d to %d,%d", x, y, x, y - 1);
if (analyzeTile(x, y - 1, endX, endY, DIRECTION_UP)) {
return TRUE;
}
}
if (y < BOARD_SIZE - 1 && incomingDirection!=DIRECTION_UP) {
logWrite("Going DOWN from %d %d to %d %d", x, y, x, y + 1);
if (analyzeTile(x, y + 1, endX, endY, DIRECTION_DOWN)) {
return TRUE;
}
}
return FALSE;
}
BOOL canBallBeMoved(UWORD startX, UWORD startY, UWORD endX, UWORD endY) {
for (int i = 0; i < BOARD_SIZE; ++i) {
for (int j = 0; j < BOARD_SIZE; ++j) {
board[i][j]->IsAlreadyAnalyzed = FALSE;
}
}
board[startX][startY]->IsAlreadyAnalyzed = TRUE;
return markAdjacentTiles(startX, startY, endX, endY, DIRECTION_START);
}
BOOL analyzeTile(UWORD x, UWORD y, UWORD endX, UWORD endY, UWORD direction) {
if (x == endX && y == endY) {
return TRUE;
}
if (!board[x][y]->IsAlreadyAnalyzed) {
board[x][y]->IsAlreadyAnalyzed = TRUE;
if (board[x][y]->BallColor == NO_BALL) {
return markAdjacentTiles(x, y, endX, endY, direction);
} else return FALSE;
}
return FALSE;
}@miau, post #3
Nie możesz jej ruszyć na lewą stronę, bo zrobiłeś mur. Dla kulki musi być przejście.
@tukinem, post #5
Brakowało tego na Ami.