Если речь идет о стандартных GetImage и PutImage, то если в GetImage при каждом вызове указывать одну и ту же переменную, в которую мы сохраняем картинку, то, конечно же, хранится будет только одна, последняя из сохраненных картинок. Под каждый спрайт, который мы хотим хранить, нужно выделить отдельную переменную. По поводу перемещения картинок по фону: юзая Graph.TPU, лично я не нашел ничего лучшего, чем проделывать следующую последовательность шагов: 1. Сохранять участок экрана в месте вывода спрайта (GetImage) 2. Выводить подложку под спрайт - маску спрайта, где прозрачный цвет заменен черным, а любой непрозрачный цвет - белым. При этом выводить ее нужно в режиме ORPUT. В итоге, там где должен будет выводится спрайт, появится его белый контур, а фон не изменится. 3. Выводить сам спрайт поверх подложки; при этом прозрачный цвет нужно заменить белым, и выводить спрайт в режиме ANDPUT. В итоге сквозь белый цвет спрайта пробьется фон, а на белом фоне подложки отобразится сам спрайт. 4. После временной задержки восстанавливаем сохраненный участок экрана. Для реализации сей схемы я делал так: 1. Рисовал спрайт в своем пиксельном редакторе. При этом какой-то один цвет объявлялся прозрачным. 2. Этот спрайт обрабатывался программкой, которой генерила два новых спрайта: один - спрайт подложки, заменяя прозрачный цвет черным, а все остальные - белым, и "верхний" спрайт, заменяя прозрачный цвет белым. Работать это работает, но, вообще-то, BGI - жутко тормозная вещь. Стоило бы написать что-то свое, нормальное, быстрое... но я этого не потяну. Да и зачем, если есть ОпенГЛ?
|