Как написать игру для ZX Spectrum 1994 г.

Приемы программирования игр - составление блок-схемы программы.


4. ПРИЕМЫ ПРОГРАММИРОВАНИЯ ИГР

Прием программирования - это четкий и эффективный способ выполнения некоторой задачи в программе. Минуты, израсходованные на планирование программы, помогут вам позднее сэкономить часы, которые были бы потеряны на ее отладку. При профессиональной разработке программных средств вначале составляется подробный план программы с учетом самых мелких деталей, а затем, при помощи языка программирования, этот план реализуется в программе. Примерно так же должны будете действовать и вы, когда начнете писать свою собственную игровую программу: перво-наперво придется составить «план действий компьютера» - краткий перечень тех основных задач, которые должен выполнить компьютер. Подобный план мы приводили во второй главе, описывая словами последовательность выполняемых компьютером операций.

Но существует еще и другой способ, который, возможно, покажется вам более удобным. Метод, о котором мы хотим рассказать, заключается в составлении так называемой блок-схемы. Она строится по очень простым правилам и представляет собой графическое изображение последовательности основных шагов выполнения программы. После составления такой схемы значительно проще писать и саму программу.

Составление блок-схемы программы

При разработке программы очень важно, чтобы ее отдельные части следовали в правильном порядке. Например, еще до использования переменной необходимо присвоить ей какое-нибудь значение, а прежде чем напечатать какие-либо данные, их нужно каким-либо образом получить, например, ввести с клавиатуры. Для построения блок-схемы используют несколько видов геометрических фигур, причем каждой фигуре соответствуют вполне определенные типы действий. Чаще всего встречаются следующие элементы (рис. 4.1):

Овалы с надписями НАЧАЛО и КОНЕЦ показывают, где начинается и где заканчивается программа.

Параллелограммом обозначаются действия, связанные с вводом или выводом информации. Данные, поступающие в программу с клавиатуры, от джойстика или от магнитофона, называются входными. Выходными являются данные, идущие от компьютера. Они могут выводиться на экран с помощью оператора PRINT, записываться на магнитную ленту или распечатываться на бумаге.

Прямоугольник ПРОЦЕСС используется для обозначения операций внутренней обработки, производимой компьютером. Это может быть, например, присвоение переменной значения оператором LET или любая достаточно сложная задача, для решения которой необходимо использовать несколько операторов.

Мы уже говорили об операторе IF...THEN, который дает компьютеру задание проанализировать некоторое условие, например, является ли истинным выражение S = 5. Дальнейшие действия компьютера зависят от того, выполняется или не выполняется конкретное условие. Возможные различные последовательности действий называются ветвями программы. Для обозначения оператора IF...THEN на блок-схемах используются ромбы, называемые блоками проверки условий. Вершины ромба соответствуют различным решениям, которые может принимать машина в зависимости от заданного условия.

Рассмотрим простой пример. Пусть компьютер генерирует 20 случайных чисел, каждое в пределах от 1 до 10. Задача программы - сосчитать количество чисел, превышающих пятерку. На рис. 4.2 показано, как выглядит блок-схема программы.

Как видим, схема содержит блоки НАЧАЛО и КОНЕЦ, ряд прямоугольников, в которых выполняются операции, связанные с решением поставленной задачи, блоки проверки условий и печать результата, то есть все основные элементы, которые мы перечисляли. Заметим, что здесь необходимы два блока проверки условий: в одном из них проверяется, не превышает ли общее количество чисел 20, а в другом выносится суждение: «Полученное случайное число больше пяти?». Если ответ на вопрос, записанный в блоке, положительный (Да), то выполнение программы идет одним путем, а если отрицательный (Нет), то другим. Стрелки показывают последовательность решения задачи.

Далее приведена соответствующая этой блок-схеме программа.

Программа 15. RND.

10 BORDER 1: PAPER 1: INK 6 20 CLS

30 LET n=0: LET s=0 40 LET a=RND*10 50 LET n=n+1

60 IF n<=20 THEN GO TO 100 70 PRINT s 80 STOP

100 IF a>5 THEN LET s=s+1 110 GO TO 40

После того, как мы составили блок-схему, особых пояснений к программе уже не требуется.

Попробуем теперь составить блок-схему, а затем и саму программу для игры ЧИСЛА. Суть игры проста и состоит в следующем. Компьютер генерирует целое число в пределах от 1000 до 9999, которое вам неизвестно. Задача состоит в том, чтобы за минимальное количество шагов угадать это число. При этом программа на каждом шаге должна сравнивать ваше число с числом, «задуманным» компьютером и сообщать: меньше, больше или равно введенное вами число тому, что находится в памяти компьютера. На основании сюжета игры можно предложить такой вариант блок-схемы (рис. 4.3):

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

Программа 16. ЧИСЛА.

10 BORDER 1: PAPER 1: INK 5 20 CLS

30 PRINT AT 1,10; INK 4;"** "; INK 3;"CHISLA"; INK 4;" **" 40 PLOT 60,173: DRAW 136,0: DRAW 0,-20: DRAW -136,0: DRAW 0,20 45 PRINT AT 4,18; INK 7;"1000<X<9999" 50 LET X=INT (RND*8999+1000) 60 LET N=0: LET C=0: LET P=0

70 REM ------------------

100 INK 7

110 LET P=P+1

120 INPUT "INPUT C:";C

130 LET N=N+4: IF N>=20 THEN LET N=4: GO SUB 600

140 PRINT AT N,0; INK 6;"CHISLO:";C

150 IF C=X THEN GO TO 400

160 IF C<X THEN GO TO 200

170 GO TO 300

200 REM -- NEDOLET ------

210 PRINT AT N+2,0; INK 5;"N";P; INK 4;" - NEDOLET : ";C;" < X" 220 GO TO 110 300 REM -- PERELET ------

310 PRINT AT N+2,0; INK 5;"N";P; INK 2;" - PERELET : ";C;" > X" 320 GO TO 110 400 REM -- UGADALI ------

410 PRINT AT N+2,0; INK 4;"ППППП-- "; INK 3;"U G A D A L I"; INK 4;" --" 430 PRINT #0; INK 7;"ПППППППППППППX = ";X 435 PAUSE 300 440 GO SUB 600

450 PRINT AT 10,0; INK 5; "NEW GAME ?ПП^)" 460 IF INKEY$="Y" OR INKEY$="y" THEN GO TO 10 470 IF INKEY$="N" OR INKEY$="n" THEN GO TO 700 480 GO TO 460

600 REM -- C L S --------

610 FOR I=3 TO 21

620 PRINT AT 1,0;"ППППППППППППППППППППППППППППППППП":REM 32 Space 630 NEXT I 640 RETURN 700 CLS

B этой Программе в строке 120 встречается новый оператор INPUT. Он служит для ввода в программу числовых или символьных данных с клавиатуры и работает подобно оператору LET, присваивая указанной после него переменной введенное значение. В оператор INPUT можно включать тексты для вывода на экран (правда, только в служебное окно); при этом, как и в операторе PRINT, можно указывать атрибуты, позицию печати текста и т. д. Ввод данных всегда заканчивается нажатием клавиши Enter. Например, выполните строчку: INPUT a: PRINT a

В служебном окне появится мерцающий курсор, как при вводе строк программы. Наберите какое-нибудь число, используя при необходимости знаки +, - или . (точка). Можете использовать курсорные клавиши, а также клавишу Delete. Допускается ввод не только чисел, но и целых выражений, например, 11.2 + 8*2.5/1.7 + SIN (15*180/PI). Затем попробуйте поэкспериментировать с вводом символьных переменных. Наберите и выполните, к примеру, такую строку: INPUT INK 2;"PIease enter your name: ";n$: PRINT n$

B служебном окне появится надпись красного цвета, предлагающая сообщить, как вас зовут. Следом за текстом вы увидите мерцающий курсор в кавычках, говорящих о том, что требуется вводить символы, а не числа. Наберите свое имя и нажмите Enter, после чего вы сможете прочитать его на основном экране. Если

кавычки вам мешают, их можно

убрать, включив в оператор INPUT непосредственно перед переменной ключевое слово LINE:

INPUT TAB 5; LINE a$

B этом случае курсор появится уже без кавычек, как и при вводе чисел.

Теперь прокомментируем остальные строки программы.

10...45 - вывод на экран названия игры и информации о диапазоне «задуманного» компьютером числа;

50 - переменной X присваивается случайное значение, которое нужно будет угадать;

60 - установка промежуточных переменных;

110 - счетчик числа шагов;

120 - с помощью оператора INPUT переменной С присваивается значение, введенное с клавиатуры;

130 - после полного заполнения экрана ответами, он очищается подпрограммой, расположенной со строки 600, освобождая место для последующих ответов;

140 - отображение на экране введенного вами числа;

150...170 - эти строки соответствуют двум блокам проверки условий;

200...220 - блок выдачи результата, если ваше число меньше «задуманного»;

300...320 - блок выдачи результата, если ваше число превышает «задуманное»;

400...440 - блок выдачи результата, если вы угадали число;

450...480 - проверка условия: желаете вы начать игру снова или хотите се закончить;

600...640 - подпрограмма очистки части экрана, занятой ответами.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
СС'99 - интервью: XL-Design (создатели журнала ZX-Format).
Байки - 8 марта: Всё началось вечером седьмого марта...
Oт редакции - Близится юбилей сети SPbZXNet - пол года.
Рабочий стол - Как работать с программами: Melon Terminal.
Автора ! - Об авторах этого журнала и адвентюрной игры "LENIN".

В этот день...   3 декабря