ВВЕДЕНИЕ
Обладатели домашнего компьютера ZX Spectrum, число которых стремительно растет, потратив массу времени на различные игры и накопив солидную библиотеку программ, начинают в конце концов задавать себе вопрос: «А нельзя ли самому научиться писать нечто подобное?» Если и вы всерьез заинтересовались этой проблемой, мы попробуем вам помочь.
Будем считать, что вы знакомы с клавиатурой ZX Spectrum, умеете записывать программы на магнитную ленту (или дискету) и загружать их в память компьютера, а самое главное - горите желанием создавать что-то свое, новое, крутое и неповторимое.
Прежде чем начать писать игровые программы, необходимо научиться хорошо представлять себе две вещи: как строятся такие программы, то есть из каких основных частей они состоят, и как они реализуются на языке программирования Бейсик.
О Бейсике написано огромное количество разнообразных книг и статей. Для первого знакомства с «идеологией» этого языка, его основными операторами и функциями, можно воспользоваться любой из них, но лучше сразу обратиться к книге «Диалекты Бейсика для ZX Spectrum» [2].
Приступая к написанию компьютерных программ на Бейсике, нужно всегда иметь в виду, что работать они будут медленно. Поэтому для первой пробы сил в программировании больше подойдут спокойные игры, похожие на шашки, нарды, морской бой и т. п. Позже, накопив опыт и знания, вы сможете ускорить движение объектов на экране, применяя различные программы-компиляторы типа Tobos, Softek или MCoder 2. Отличные результаты дает также один из диалектов Бейсика -Laser Basic, ориентированный на работу с графическими изображениями.
Ну, а тот, кто рвется писать игровые программы на профессиональном уровне, но еще не владеет языком ассемблера, узнает, как использовать при создании игр готовые процедуры в кодах из пакетов Supercode и New Supercode.
Для написания даже не очень сложных игровых программ нужны какие-то знания. Надеемся, что вы уже разобрались с такими понятиями, как «оператор», «функция», «программная строка» и т. п., научились пользоваться копировщиками и умеете переключать режимы курсора клавиатуры ZX Spectrum. Если нет -советуем внимательно ознакомиться с инструкцией по эксплуатации компьютера или попросить друзей ввести вас в курс дела.
Книга составлена таким образом, чтобы те, кто до этого не имел ни малейшего представления о Бейсике, смогли научиться программировать на нем. Но даже если вы что-то знаете об этом языке, не спешите сразу смотреть на последние страницы: ведь в первых главах описаны простенькие программы, которые используются в дальнейшем в качестве элементов более сложных программ.
Теперь несколько слов о структуре книги.
В первой главе рассматриваются блоки, из которых строятся игровые программы: заставка, игровое пространство, блок взаимодействия с играющим и блок оценки игровой ситуации. Дается краткая характеристика каждой части с примерами и рисунками.
Из второй главы вы узнаете, как сделать простенькую заставку к игре, пользуясь языком Бейсик, «зашитым» в памяти-ZX Spectrum (Spectrum-Бейсик). На примере нескольких программ вы начнете знакомиться с операторами и функциями Бейсика. Каждая строка приведенных программ подробно комментируется. В этой главе также описано, как воспользоваться графическим редактором Art Studio, чтобы нарисовать картинку вполне профессионального уровня.
В третьей главе мы расскажем, как построить игровое пространство, то есть создать те подвижные и неподвижные объекты, которые вы видите на экране во время игры. Особое внимание уделено подвижным объектам (в программировании они называются «спрайта»), показано, как можно нарисовать их различными способами.
В следующей, четвертой главе речь идет о приемах программирования, делающих игровую программу более совершенной. Даны рекомендации по составлению блок-схемы игры, без которой построить сложную программу почти невозможно. Показано, как сделать многоуровневую заставку, включающую в себя меню, и как ввести в программу разнообразное звуковое сопровождение.
Пятая глава посвящена взаимодействию игрока и программы. Она рассказывает о том, как можно управлять событиями, происходящими на экране -заставить самолет повернуть при соответствующем наклоне ручки джойстика, вызвать на экране взрыв при попадании снаряда в цель и т. п.
В шестой главе мы обсудим вопрос о том, как оценивать действия играющего во время игры: начислять ему очки, следить за количеством оставшегося топлива или снарядов, числом уничтоженных «врагов».
Седьмая глава касается самого сокровенного - операционной системы компьютера. Вы убедитесь в неисчерпаемости возможностей Speccy и ограниченности средств Бейсика. Возможно, эта глава побудит вас глубже разобраться в программировании и освоить для начала другие разновидности Бейсика, а затем и другие языки.
С одним из диалектов Бейсика - Laser Basic, дающим в руки программиста мощные средства для работы с графикой, - вы сможете познакомиться в следующей, восьмой главе. Этот язык дополняет стандартный Spectrum-Бейсик сотней новых операторов и функций, с помощью которых можно выполнять самые сложные действия со спрайтами: перемещать их по экрану с большой скоростью во всех направлениях, инвертировать, поворачивать и т. д. С помощью Laser Basic мы сделаем мультипликационную картинку и напишем игру БЕГА МЫШЕЙ.
Девятая глава перекидывает мостик от Бейсик-программ к программам в машинных кодах. В описанных примерах используются кодовые подпрограммы, взятые из специальных пакетов процедур Supercode и New Supercode. С помощью этих кодовых блоков генерируются всевозможные звуковые сигналы, мгновенно выводятся на экран изображения больших размеров, быстро перемещаются спрайты, в общем создается то, без чего нельзя представить хорошую игровую программу.
Впрочем, можно почувствовать себя настоящим программистом, даже не имея ни малейшего представления о бейсиках и ассемблерах. Генератор игр Games Designer, описанный в последней, десятой главе, позволяет собрать игру из составных частей, как из кубиков, - пусть всего лишь примитивную «стрелялку», но зато в ней можно заказать на свой вкус все: от цвета экрана до сценария игры. Вы можете задавать число, внешний вид и даже «степень агрессивности» противников, количество очков, получаемое за их уничтожение, менять звуковое оформление игры, траекторию и скорость движения объектов и т. д. и т. п.
В Приложении 1 приводятся листинги нескольких игровых программ. Здесь же описываются правила игры, а также даются краткие пояснения к листингам программ на тот случай, если вам захочется изучить их подробнее, а может быть,
внести ряд собственных дополнений и улучшений.
Приложения 2, 3 и 4 носят чисто справочный характер и содержат краткие сведения об операторах и функциях Бейсика (Приложение 2), графическом редакторе Art Studio (Приложение 3) и музыкальном редакторе Wham (Приложение 4).
Творите, осваивайте и ждите появления следующей книги серии «Как написать игру для ZX Spectrum», в которой мы расскажем о применении языка ассемблера для создания компьютерных игр.
Все программы этой книги написаны и отлажены И. Капульцевичем. Главы 7 и 10, посвященные системным переменным и программе Games Designer, написаны А. Евдокимовым.
ЛИТЕРАТУРА
1. Ларченко А. А., Родионов Н. Ю. ZX Spectrum для пользователей и программистов- 2-е изд. СПб.: Питер, 1993.
2. Диалекты Бейсика для ZX Spectrum (под редакцией Родионова Н. Ю., Ларченко А. А.)- СПб.: Питер, 1992.
3. Родионов Н. Ю. Адаптация программ к системе TR-DOS- СПб.: Питер, 1992.
4. 600 игр для ZX Spectrum.- СПб.: Питер, 1993.
5. Системные программы для ZX Spectrum. Выпуск 1. (под редакцией Родионова Н. Ю.)- СПб.: Питер, 1993.
6. Александров В. В. и др. ЭВМ: игра и творчество.- СПб.: Машиностроение, 1989.
7. Кершан Б. и др. Основы компьютерной грамотности.- Москва: Мир, 1989.