С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Кстате стрельбу(и свою и врагов) можно сделать пусканием одиночного луча, того же, что и для сканирования
По ходу самым оптимальным будет
запилить развернутую процедуру переброски всех столбцов
хотя уже и не актуально...Код: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 байт на процедуру переброски
Последний раз редактировалось NEO SPECTRUMAN; 09.07.2016 в 20:00.
Чертёж не верен твой, ведь обсчёт идет по клеткам (ну типа как у тебя, синии - есть, пустые = нету препятствия).
А у тебя нарисовано пограничный счёт.
В общем линия (луч) кидается исходя из соображений (математическая абстракция) что координаты внутри клетки ТЕ-ЖЕ САМЫЕ ЧТО И В ИСХОДНОЙ.
В общем поразмысли, если не догоняешь сам я тебе нарисую чертёжик (или гуру опередят и подскажут где ты ошибся).
В общем принимай работу алгоритма брезенхема так, что твоя зелёная точка на каждой итерации очутится в ТОЙ-ЖЕ клеточной (внутренней) координате что была в исходной.
И так до достижения успеха (исчерпана длина луча, либо приехали в оконечную координату линии)
До.
твой снапшот еще не дебагал...
закинь сюда посмотреть41/2
чертеж не мой
проблема актуальна для многих вариантов реализации
да и такая реализация как на рисунки проще некуда
одна 16 битная таблица синуса и все
никаких линий и 20 процедур для каждой стороны света
медленно исердитонебольшие расходы на память
и полученное растояние(количество шагов) готово к использованию
нужно только коррекцию искажению камеры и все.
а если двигаться по каждой клеточке (как стена) то расстояние уже будет получено левое
Последний раз редактировалось NEO SPECTRUMAN; 10.07.2016 в 23:40.
А кто-нибудь в курсе как на этой LUA сделать SELECT-CASE ?
вот тут штук 10 вариантов
http://lua-users.org/wiki/SwitchStatement
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)