Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function neighbors(start)
- {
- var neighbors_ar = array_create(0, 0)
- // start - это порядковый номер графа
- // Следовательно, нам нужно найти и вернуть соседей при условии, что мы можем по ним пройти
- var cellx = global.grid_array[start][0] // Клетка по оси x
- var celly = global.grid_array[start][1] // Клетка по оси y
- // Следовательно, нам нужны: [[-1, -1], [0, -1], [1, -1], [-1, 0], [1, 0], [-1, 1], [0, 1], [1, 1]]. Диагонали можно убрать.
- var cells = [[cellx -1, celly-1], [cellx, celly-1], [cellx+1, celly-1], [cellx-1, celly], [cellx+1, celly], [cellx-1, celly+1], [cellx, celly+1], [cellx+1, celly+1]]
- for (var i = 0; i < array_length(cells); ++i)
- {
- // cells[i][0] - это x, cells[i][1] - это y. Проверяем, что мы не выходим за границы карты, чтобы не было ошибок.
- if cells[i][0] > -1 and cells[i][0] < room_width div CellWidth
- and cells[i][1] > -1 and cells[i][1] < room_height div CellHeight
- {
- var curx = cells[i][0] * 32
- var cury = cells[i][1] * 32
- var cell = curx div CellWidth + cury div CellHeight * (room_width div CellWidth)
- if ds_grid_get(global.grid, cells[i][0], cells[i][1]) != 0 // Стоимость нуль = непроходима. Следовательно, если клетка проходима - заносим её.
- {
- array_push(neighbors_ar, cell)
- }
- }
- }
- // Возвращаем список доступных соседей
- return neighbors_ar
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement