Мне нужно проверить, являются ли соседние позиции на доске "дорожками" - PullRequest
0 голосов
/ 07 апреля 2011

Функция, в которой я работаю, зависит от функции mazesol.getBlock(board, x, y).Мне нужно проверить все соседние позиции (вверх, вниз, влево, вправо) на доске.Буду ли я писать это так?

if mazesol.getBlock(board, ((x+1),(x-1)),((y+1),(y-1))) == 'path':

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011

Из определения вашей функции я думаю, что вам нужно сделать:

# Check left
if mazesol.getBlock(board, x+1,y) == 'path':
# do the same for (x-1, y), (x, y+1), (x, y-1)

Вы должны быть осторожны с крайними случаями, хотя, если ваш метод getBlock не проверяет, что вы находитесь в границах доски, вам придется проверять каждый случай.

т.

if x > 0 and mazesol.getBlock(board, x-1,y) == 'path':
0 голосов
/ 07 апреля 2011

Похоже, что вы хотите проверить каждую соседнюю плитку с вашей текущей позиции x, y. Почему бы вам сначала не перечислить все эти возможности, чтобы они были более читабельными для вас:

//pseudo code...
up =mazesol.getBlock(board, x, y + 1);
down = mazesol.getBlock(x, y - 1);
left = mazesol.getBlock(x - 1, y);
right = mazesol.getBlock(x + 1, y);

и делай:

if (left == 'path')
   //do whatever for left
else if (left == 'path)
   //do whatever for right
.
.
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...