Как написать игру для ZX Spectrum на ассемблере



         

Фазы движения человечка



Рисунок 5.6. Фазы движения человечка



Прежде всего закодируем отдельные элементы двух изображений человечка, воспользовавшись, как и в предыдущей главе, определяемыми пользователем символами UDG. В результате кодирования получится блок данных, первому байту которого присвоим метку UDG:

UDG DEFB 0,0,3,4,102,68,35,62 ;A (144) DEFB 0,0,192,32,166,34,204,56 ;B (145) DEFB 31,15,7,7,3,7,6,6 ;C (146) DEFB 112,96,192,96,192,224,224,224 ;D (147) DEFB 6,6,6,4,8,0,0,0 ;E (148) DEFB 96,96,96,32,16,0,0,0 ;F (149) DEFB 3,4,6,4,195,236,127,55 ;G (150) DEFB 192,32,160,32,195,55,126,108 ;H (151) DEFB 7,7,7,14,28,12,6,14 ;I (152) DEFB 224,96,224,112,56,48,96,112 ;J (153) DEFB 8,16,108,254,190,158,78,60 ;Яблоко (154) DEFB 17,85,255,0,0,0,0,0 ;Трава (155)

Справа от каждой строки указаны коды, которые понадобятся нам для составления трех других блоков данных. Первый из них с меткой PEJZ мы используем для создания примитивного пейзажа, состоящего, как мы уже говорили, из зеленой травы и яблока (маленькую ветку проще получить программным путем).

PEJZ DEFB 22,13,13,16,4 DEFB 155,155,155,155,155,155 DEFB 22,8,15,16,2,17,0 DEFB 154

Можно заметить, что кроме кодов UDG в блок включены также и управляющие символы, устанавливающие позицию печати и изменяющие цвета спрайтов.

Второй и третий блоки - это как раз те два спрайта, которые должны попеременно появляться на вашем экране, создавая иллюзию движения:

SPR1 DEFB 6 DEFB 0,0,7,144,0,1,7,145 DEFB 1,0,7,146,1,1,7,147 DEFB 2,0,7,148,2,1,7,149 SPR2 DEFB 6 DEFB 0,0,0,32,0,1,0,32 DEFB 1,0,7,150,1,1,7,151 DEFB 2,0,7,152,2,1,7,153

Для вывода этих спрайтов на экран можно было бы, как и раньше, воспользоваться подпрограммой 8252, однако основная идея применения спрайтов заключается в том, чтобы их можно было легко перемещать по экрану. Но поскольку спрайт обычно состоит из нескольких знакомест, которые имеют строго фиксированное положение внутри него, то при использовании процедуры 8252 пришлось бы перекодировать координаты всех составляющих его фрагментов. Сами понимаете, что это не слишком удобно, особенно если спрайт состоит из десятка-другого знакомест. Это означает, что для вывода спрайтов на экран необходимо создать самостоятельную процедуру, которую мы назовем PUT.




Содержание  Назад  Вперед