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

LASER BASIC в игровых программах - игровая программа "БЕГА МЫШЕЙ".


Игровая программа

Попробуем использовать операторы и графические переменные Laser Basic в простенькой игре, которую назовем БЕГА МЫШЕЙ. Как и ранее, спрайты возьмем из спрайт-файла SPRITES2B. Если же вам захочется создать собственный набор картинок для новой игры, следует сначала воспользоваться одним из генераторов спрайтов: SPTGEN или SPRITER. Обе программы предназначены для создания наборов собственных спрайтов которые можно будет использовать в Laser Basic. При этом, если SPTGEN ориентирован на создание изображений по точкам, то SPRITER позволяет использовать готовые картинки, нарисованные в любом графическом редакторе для ZX Spectrum (Art Studio, The Artist II и др.), или даже позаимствовать объекты из фирменных заставок. Последнее обстоятельство открывает богатейшие возможности для творчества. О том, как работать со спрайт-генераторами, подробно рассказано в книге [2].

А мы вернемся к нашей игре и для начала скажем несколько слов о ее сюжете.

Игровое пространство представляет собой горизонтальные цветные полосы, по которым слева направо двигаются 6 мышек (рис. 8.3). Скорость их движения задается генератором случайных чисел, поэтому предсказать заранее, какая из мышей первой придет к финишу, очень трудно. Но все же придется на какую-то из них сделать ставку, причем в полновесной валюте - таковы правила игры.

Программа 31. БЕГА МЫШЕЙ.

10 RANDOMIZE USR 58841: GO TO 20 20 RANDOMIZE: LET D=300

30 REM ------------------

40 DIM X(6)

50 PAPER 0: INK 0: BORDER 0: CLS 60 PAPER 3:.HGT=3:.LEN=13 70 FOR N=0 TO 5

80 PAPER 7-N:.ROW=N:.COL=N*2:.CLSV:.SETV

90 PLOT N*16+1,174-(N*8): DRAW 101,0: DRAW 0,-21:DRAW -101,0: DRAW 0,21

100 PAUSE 5: NEXT N

110 PRINT AT 6,11;"BEGA MYSHEJ"

120 PAPER 0: INK 3

130 PRINT AT 19,0; INK 6;"U WAS ";D;"$"

140 PRINT AT 21,0; INK 6;"SKOLKO $ POSTAVITE?"

150 INPUT "-->";ST

160 IF ST<1 OR ST>D THEN GO TO 150

170 LET D=D-ST 180 BEEP .1,0

190 REM ------------------

200.ROW=15:.COL=0:.HGT=8:.LEN=32:.CLSV

210 PRINT AT 21,0; INK 6;"NA KAKUIU MYSH POSTAVITE?"

220 INPUT "No:";MY

230 IF MY<1 OR MY>6 THEN GO TO 220

240 BEEP .1,0

250 REM ------------------

260 CLS

270 PRINT AT 0,11;"BEGA MYSHEJ" 280 INK 0:.COL=0:.HGT=2:.LEN=32 290 FOR N=1 TO 6 300 PRINT AT 2+(N*2),31;N 310 PAPER N:. ROW=2+N*2:. SETV 320 NEXT N

330 PLOT 240,45: DRAW 0,100

340.SPN=2:.COL=0

350.ATOF

360 FOR N=1 TO 6 370.ROW=2+N*2:.PTBL 380 NEXT N 390.ATON

400 REM --------

410.ROW=0:.COL=10:.HGT=2:.LEN=13:.NPX=1:.WCRV

420.COL=0:.HGT=2:.LEN=30

430 LET R=INT (RND*6+1)

440 LET X(R)=X(R)+4

450.ROW=R*2+2:.SR4V

460 IF X(R)>205 THEN GO TO 500

470 GO TO 400

500 REM --------

510 INK 5: PAPER 0

520 PRINT AT 18,7;"POBEDILA MYSH No ";R

530 IF MY<>N THEN GO TO 590

540 FOR N=D TO D+ST*4

550 PRINT AT 20,0;"U WAS STALO: ";N;"$"

560 BEEP .002,50

570 NEXT N

580 LET D=D+ST*4

590 PAUSE 300

600 GO TO 40

10 - инициализация интерпретатора Laser Basic;

20 - восстановление генератора случайных чисел и задание начального капитала играющего;

40 - задание массива, определяющего горизонтальные координаты мышей; 50 - установка атрибутов экрана;

60 - задание размеров окна для вывода названия игры;

70... 100 - на экране появляются 6 разноцветных окошек заданного размера, расположенные по диагонали как бы одно поверх другого;

110 - вывод в последнее появившееся окошко названия игры; 120...150 - информация о том, сколько у вас осталось денег и ввод суммы ставки; 160 - проверка размера ставки: она должна быть больше I, но не превышать размеров наличного капитала;

170 - после того, как ставка сделана, она вычитается из ваших денег; 180 - звуковой сигнал;

200...240 - ввод в программу новых данных;

200 - очистка нижней части экрана;

210 - вывод вопроса: «На какую мышь поставите?»

220 - ход игрока: ввод номера дорожки, по которой побежит «ваша» мышка;

230 - проверка условия, находится ли номер выбранной дорожки в пределах от 1 до 6;

240 - звуковой сигнал;

250- - начало формирования игрового пространства;

260 - очистка экрана;

270 - вывод названия игры;

280 - задание окна, охватывающего одну дорожку;

290...320 - вывод на экран шести дорожек разного цвета, в конце которых ставятся их номера;

330 - вычерчивание линии финиша;

340 - задается спрайт мыши (номер 2) и начальная позиция по горизонтали;

350 - запрет переноса атрибутов;

360...380 - вывод спрайтов мышек в начале каждой из шести дорожек;

390 - разрешение переноса атрибутов;

400 - начало «бегов»;

410 - задается окно, вмещающее название игры и осуществляется его вертикальный циклический скроллинг оператором .WCRV. Циклический -означает, что уходящее за пределы окна изображение появляется с другой его стороны. Величина скроллинга (в пикселях) задается графической переменной .NPX. При положительном значении этой переменной окно движется вверх, а при отрицательном - вниз;

420 - задание окна, охватывающего одну дорожку;

430 - генерация случайного числа в пределах от 1 до 6 и присваивание его значения переменной R. Предполагается, что мышь с номером, выбранным в этой строке, будет в данный момент времени двигаться вперед;

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

450 - задание переменной .ROW в соответствии с положением на экране дорожки, по которой побежит выбранная мышь, и сдвиг окна с мышью на 4 пикселя вправо;

460 - проверяется, не дошла ли мышь до финишной линии. Если нет, то происходит переход на начало цикла «бегов». Если же мышь достигла финиша, то программа переходит на строку 510, начиная с которой выводятся на экран результаты игры: «Победила мышь N...», и в случае, если этот номер совпал с заданным вами, то ваш капиталу увеличивается на 4 ставки (строки 540...580) и игра начинается заново.

То, о чем мы рассказали в этой главе, иллюстрирует лишь малую часть возможностей Laser Basic. Добавим, что перемещать спрайты можно пятью способами. Интересные результаты при разработке игр дает наложение спрайтов, различные виды их преобразований, а также операции с пейзажем. С помощью Laser Basic легко решается одна из непростых задач при создании динамических игр - определение факта «столкновения» спрайтов. Для этого достаточно вставить в вашу программу одну из функций ?SCV или ?SCM.

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




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Insanity JokeZ#2 - Второй сборник сценовой лирики.
Как конвертировать графику под цвет на точку - как конвертировать графику в "EGA"-режим ATM Turbo.
Юмор - Смеемся после слова "лопата".
Ликбез - CHEATS&POKES. Две последние части из цикла.
От авторов - сценовое вступление.

В этот день...   21 ноября