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


         

Многокадровая заставка



Рисунок 6.9. Многокадровая заставка



MENU CALL 3435 LD A,2 CALL 5633 LD DE,TEXT5 LD BC,ENDTXT-TEXT5 CALL 8252 ;«Select options 0 to 4» LD IX,WIN0 ;окно для названия игры CALL CLSW CALL SETW CALL BOX

В сформированном окне напечатаем название игры FOOTBALL, для чего используем расширенные подпрограммой буквы.

LD DE,COORD ;позиционирование курсора LD BC,TEXT-COORD CALL 8252 LD HL,TEXT ;вывод названия игры LD B,8 MET LD A,(HL) PUSH HL PUSH BC CALL DBLSYM POP BC POP HL INC HL DJNZ MET

Сделаем для меню окно с черной тенью и поместим в него текст, в соответствии с которым вы можете обратиться к одному из четырех кадров, нажав клавиши 1-4, или начать игру, выбрав клавишу 0 (для упрощения программы нажатие 0 или 4 возвращает вас в редактор GENS4 или в Бейсик).

LD IX,WIN1 ;окно основного меню CALL WINDOW LD DE,TEXT1 ;текст меню LD BC,TEXT2-TEXT1 CALL 8252

Теперь можно написать блок управления, который, как ни странно, выглядит довольно простым. Программка «крутится» в цикле, пока не нажата одна из указанных в кавычках клавиш. При нажатии же на клавишу, команда сравнения CP изменит биты флагового регистра (в частности флаг Z установится в ноль), после чего следующая команда JR Z,KADR? осуществит переход на выбранный вами кадр.

XOR A LD (23560),A CYCLE LD A,(23560) CP "1" JR Z,KADR1 CP "2" JR Z,KADR2 CP "3" JR Z,KADR3 CP "4" JR Z,EXIT CP "0" JR NZ,CYCLE ; При нажатии на клавиши 0 или 4 восстанавливаются атрибуты экрана и стандартный ; набор символов, после чего происходит выход в редактор GENS или в Бейсик. EXIT LD A,7 CALL 8859 ;белый бордюр LD A,%00111000 ;стандартные атрибуты LD (23693),A CALL 3435 LD A,2 CALL 5633 LD HL,15360 LD (23606),HL RET

Части программы, формирующие окна кадров и печатающие в них тексты, исключительно похожи друг на друга. Тем не менее, имеются и некоторые отличия, которые определяются конкретными данными для окон и текстов. Каждый из кадров начинается со звукового сигнала SND, о котором мы говорили в начале этой главы и заканчивается процедурой WAIT, которая фиксирует кадр на экране, позволяя увидеть его содержание и выбрать дальнейшие действия (в этой программе чисто умозрительно, за исключением клавиши Е, которая действительно возвращает вас в меню).




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