PDA

Просмотр полной версии : движение спрайтов



женя999
10.06.2009, 10:10
Подскажите какие способы бывают перемещения спрайтов по экрану,как процесс происходит?
Как делается чтобы экран не стирался?

Eltaron
10.06.2009, 10:27
почитай инфоркомовскую "Динамическую графику"
и в ZX-Ревю кажется №4 за 95й год была статья хорошая

проще всего (но и медленней) - вывели фон, вывели спрайт
надо переместить - вывели фон, вывели спрайт в другой позиции

newart
10.06.2009, 20:32
Подскажите какие способы бывают перемещения спрайтов по экрану,как процесс происходит?
Как делается чтобы экран не стирался?

http://zxpress.ru/article.php?id=451
http://zxpress.ru/article.php?id=1001
http://zxpress.ru/article.php?id=2572

http://zxpress.ru/article.php?id=2603 - то что тебе надо

и т.д.

TomCaT
15.06.2009, 21:45
"Как написать игру на ассемблере"
там простейшие способы описаны, не чересчур быстрые, конечно, но подробно объясненные.
Основная идея - либо перед рисованием спрайта сохранить куда-то то, что он затирает (для бейсика малоприменимо, т.к. работа не с PRINT, а прямо с памятью. SCREEN$ может помочь для сохранения только, когда графика - это полностью замененный шрифт, а не символы пользователя. Да и то-будет жутко медленно); либо хранить в памяти только координаты всего, что нужно нарисовать на экране, и каждое изменение - это перерисовка всего экрана, причем дальние объекты рисуются раньше и закрываются потом ближними (это для бейсика тоже очень долго, все всегда перерисовывать). Такие экраны, чтоб не рябило в глазах, строятся обычно в памяти, а в область графической памяти перебрасываются одним махом, когда все готово (тут бейсик пасс, т.к. PRINT стандартно работает прямо на экран, а не в другую память. Это можно перенастроить, но перенастройка снова делается ассемблерым кодом).

Лучший выход, чтоб это реализовать в БЕЙСИКЕ - пользоваться LASER BASIC - это и знакомые команды и способ ввода программы, и плюс к ним много новых команд, большая часть как раз спрайтами и др. графикой заведует.
На нем тов. Медноноговым сделаны такие замечательные вещи, как "Буратино", "Чипполино" и "Дурак".
LASER BASIC хорошо описан в первой части той же книги "Как написать игру для ZX-Spectrum"

Конечно, для очень сложных экранов, вроде тех, что почти 3D у Ultimate или просто перенасыщенных игровыми объектами + курсор мышки, как "Вера" axor'а, конечно, нужны хитрости, чтоб все это не тормозило.