![]() |
Взрыв бомбочки
У меня в игре есть массив. В нем хранится вся инфа.
Массив 16 на 16 например пробиваемый кубик там значится как 2, бомба как 4. Проходимые места это 0. Непроходимые и непробиваемые это 1 Игра - бомбермен. Так вот 111111 - как бы тут получается, что есть поле, окруженное 100001 - непробиваемыми объектами. Есть на поле так же бомба. 100001 - рядом с бомбой 2 пробиваемых кубика. Радиус у бомбы - 3 104221 - то есть если она сработает, то порбиваемые кубики превратятся в 0 100001 111111 То ест станет 111111 - тут взорвалась и исчезла бомба. Изчезли и взорвались кубики 100001 100001 100001 100001 111111 А мне нужно: 111111 - что бы бомба, после того как взорвалась убила только ближайший 100001 - кубик, а тот,Ю который за ней остался жить 100001 100001 100021 100001 Сложность в том, что взрыв делается следующим образом: distX%=bomb\ArX-partitionable\Arx - По массиву вычисляется расстояние от объекта, который взорвется до бомбы If Abs(distz)<bomb\radius - если получившаяся дистанция меньше радиуса взрыва partitionable\life=0 - то грубо говоря убиваем кубик. А мне нужно как-то проверить, что на данной линии один кубик уже убили, а тот, который за ним, не должен взорваться. Мне предложили метод, но почему-то не сработало: For z=partitionable\Arz To bomb\ArX If Playfield(partitionable\Arx,z)<>0 Nevzrivatj=True Next Я честное слово точно не знаю как это работает) partitionable\Arx - массив кубика по х bomb\arX - массив бомбы по оси х Я думаю нет смысла показывать, так как для оси z то же самое Короче я долго мучался и не знаю как это организовать, поэтому прошу помощи |
Re: Взрыв бомбочки
как я понял у тя карта это двумерный массив так?
типо ЭРРЭЙ(16,16) а если взрыв происходит а позициии Х У то можно организовать взрыв так уничтожаем кубик в позиции х,у и все вокруг это (x-1[+1],y-1[+1]) т.е. спокойно можно взаврвать все соседние 9 клеток! а если клетка уже взорвана пропускай эту клетку |
Re: Взрыв бомбочки
Horror, дело в том что если умрёт один то дальше не будут умирать. Я ему предложил варриант: Перебирать Все кубики, далее вычислять попадают ли они на одну из осей, далее проверять на дистанцию взрыва, и только тогда проверять не загораживается ли кубик чем-либо от бомбы, если нет то удалять.
|
Re: Взрыв бомбочки
Цитата:
вот ! |
Re: Взрыв бомбочки
Fant, сделай рабочий. Есть теория а есть алгоритм, это разные вещи, и от алгоритма зависит рабочесть а не от теории :)
|
Цитата:
Если бы я смог тот алгоритм сам реализовать, я бы сюда не писал! Кто знает как реализовать что я хочу сделать, посмотрите данную тему пожалуйста! Цитата:
|
Re: Взрыв бомбочки
вот
Цитата:
|
Re: Взрыв бомбочки
Цитата:
А проще или понятнее этот код представить можно? Или напихать его комментами? А то я читаю и у меня только прееменные мигают перед глазами. Я конечно надеюсь, что за много времени яя может и пойму смысл вышенаписанного, но более иной стиль (оформление кода) или комментарии существенно облегчат мне задачу |
Re: Взрыв бомбочки
Цитата:
|
Re: Взрыв бомбочки
Цитата:
|
Re: Взрыв бомбочки
Вообщем не получается. Вот функция моя. Не знаю почему не получается. Пытался воспроизвести идею Imper'а
Код:
bomb.bombs = First bombs Const ArrayPlayfieldX=16 Const ArrayPlayfieldZ=16 Dim Playfield(ArrayPlayfieldX,ArrayPlayfieldZ) Сейчас почему-то вообще...ничего не работает, но и ошибки никакой нет. |
Re: Взрыв бомбочки
Ну да тут только в массиве отчищаються квады, а удалять кубики исходя отчищен ли массив это уже тебе проверять. Просто как я понял impersonalis предпологал что у тебя зависимость такая: Массив > Объекты, а у тебя наоборот, поэтому тебе нужно ещё и объекты отчищать.
|
Re: Взрыв бомбочки
Цитата:
Код:
Function fnUpdateRndCube() |
Часовой пояс GMT +4, время: 08:06. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot