Так кинь сорцы, если не нужны уже, хоть поглядеть что и как делал, надо ведь и нам учится у кого-то...
Вид для печати
Кстате стрельбу(и свою и врагов) можно сделать пусканием одиночного луча, того же, что и для сканирования :v2_dizzy_turn:
По ходу самым оптимальным будет
запилить развернутую процедуру переброски всех столбцов
хотя уже и не актуально...Код:ld a,(nnnn) ;13
ld (nnnn),a ;13
...
;26\1b 6b
;итого 19968t на переброску
;4608 байт на процедуру переброски
или
pop de ;10
add hl,bc ;11
ld (hl),d ;7
add hl,bc ;11
ld (hl),e ;7
...
;46\2b 5b
;итого >17664t на переброску
;>1920 байт на процедуру переброски
или
pop hl ;10
ld a,l ;4
ld (nnnn),a ;13
ld a,h ;4
ld (nnnn),a ;13
...
;44\2b 9b
;итого >16896t на переброску
;>3456 байт на процедуру переброски
на практике как оказалось промах луча не редкость
луч пробивает и 2 стенки(с тольщиной 1 пиксель) под разными углами
иногда даже 3
так что никакие щели не допускаются
http://zx-pk.ru/attachment.php?attac...0&d=1467317226
Чертёж не верен твой, ведь обсчёт идет по клеткам (ну типа как у тебя, синии - есть, пустые = нету препятствия).
А у тебя нарисовано пограничный счёт.
В общем линия (луч) кидается исходя из соображений (математическая абстракция) что координаты внутри клетки ТЕ-ЖЕ САМЫЕ ЧТО И В ИСХОДНОЙ.
В общем поразмысли, если не догоняешь сам я тебе нарисую чертёжик (или гуру опередят и подскажут где ты ошибся).
В общем принимай работу алгоритма брезенхема так, что твоя зелёная точка на каждой итерации очутится в ТОЙ-ЖЕ клеточной (внутренней) координате что была в исходной.
И так до достижения успеха (исчерпана длина луча, либо приехали в оконечную координату линии)
До.
твой снапшот еще не дебагал...
закинь сюда посмотретьЦитата:
41/2
чертеж не мой
проблема актуальна для многих вариантов реализации
да и такая реализация как на рисунки проще некуда
одна 16 битная таблица синуса и все
никаких линий и 20 процедур для каждой стороны света
медленно исердитонебольшие расходы на память
и полученное растояние(количество шагов) готово к использованию
нужно только коррекцию искажению камеры и все.
а если двигаться по каждой клеточке (как стена) то расстояние уже будет получено левое
А кто-нибудь в курсе как на этой LUA сделать SELECT-CASE ?
вот тут штук 10 вариантов
http://lua-users.org/wiki/SwitchStatement