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

Приложение 1 - игровая программа "ЦИФЕРТОН".


ЦИФЕРТОН

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

На игровом поле расположены несколько прямоугольников разного размера и цвета, причем четыре прямоугольника второго снизу ряда программа в случайном порядке зажигает и гасит подобно лампочкам новогодней гирлянды, сопровождая вспышку каждого из прямоугольников звуковыми сигналами (каждому прямоугольнику соответствует свой тон).

Задача играющего - пользуясь четырьмя управляющими клавишами, воспроизвести заданную компьютером последовательность зажигания

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

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

Тем, у кого есть музыкальный слух, советуем воспользоваться звуковыми сигналами: так как каждому прямоугольнику соответствует свой тон, можно даже закрыть глаза и нажимать клавиши ориентируясь только по звукам.

Напомним, что время игры ограничено, а для его контроля служит постепенно уменьшающийся синий прямоугольник в левой части игрового поля.

После загрузки программы на экране появляется мерцающее меню:

1 - НАЧАЛО ИГРЫ

2 - ВЫБОР УРОВНЯ "1"

3 - ВЫБОР КЛАВИШ

4 - ВЫХОД

Выберите раздел ( 1 - 4 )

Нажав несколько раз клавишу 2, можете установить желаемый уровень игры -ему соответствует число в кавычках. Буква «П» означает ПРАКТИКА - это обычная игра, только несколько медленнее и без уровней. Третий раздел меню позволяет назначить удобные для вас клавиши управления. Стандартный набор высвечивается на экране после загрузки программы и будет установлен, если нажать предложенные клавиши. Для начала игры достаточно нажать клавишу 1. Чтобы не забыть, какими клавишами пользоваться, под прямоугольниками нижнего ряда горят выбранные вами символы. Для перехода в меню в любой момент времени, нажмите клавишу Е.

Программа 38. ЦИФЕРТОН.

10 BORDER 0: PAPER 0: INK 7 20 CLS

30 PRINT AT 10,10;"PLEASE WAIT" 40 DIM k$(4): GO SUB 8300 50 GO SUB 9900 60 REM -- MENU --62 CLS 65 LET UR=1

70 PRINT AT 3,9; INK 2;"Ц И"; INK 1;" Ф E"; INK 6;" P T"; INK 4;" О Н"

75 PRINT AT 20,5; INK 6;"ВЫБЕРИТЕ РАЗДЕЛ (1 - 4)"

76 IF UR=0 THEN PRINT AT 10,25; INK 3;........; INK 4;"p"; INK 3;........: GO TO 80

77 PRINT AT 10,25; INK 3;........; INK 4;UR; INK 3;........

80 LET c=5: LET c1=7

90 PRINT AT 8,8; INK c;"1 - НАЧАЛО ИГРЫ"

95 PRINT AT 10,8; INK c1;"2 - ВЫБОР УРОВНЯ"

100 PRINT AT 12,8; INK c;"3 - ВЫБОР КЛАВИШ"

105 PRINT AT 14,8; INK c1;"4 - ВЫХОД"

120 IF INKEY$="1" THEN GO SUB 7000: GO TO 600

130 IF INKEY$="2" THEN GO SUB 7000: GO SUB 300

140 IF INKEY$="3" THEN GO SUB 7000: GO TO 400

150 IF INKEY$="4" THEN GO SUB 7000: STOP

160 IF c=5 THEN LET c=7: LET c1=5: GO TO 90

170 IF c=7 THEN LET c=5: LET c1=7: GO TO 90

300 REM ** ВЫБОР УРОВНЯ **

310 LET ur=u r+1

320 IF ur=4 THEN LET ur=0

330 IF ur=0 THEN PRINT AT 10,25; INK 3;........; INK 4;"P";INK 3;........: RETURN

340 PRINT AT 10,25; INK 3;........; INK 4;ur; INK 3;........

350 RETURN

400 REM ** ВЫБОР КЛАВИШ ** 410 CLS

420 PRINT AT 3,10; INK 6;"ВЫБОРППКЛАВИШ"

430 PRINT AT 7,10; PAPER 2; INK 5;"КРАСНЫЙПП"; PAPER 0; " - "

435 PRINT AT 9,10; PAPER 1; INK 5;"СИНИЙПППП"; PAPER 0; " - "

440 PRINT AT 11,10; PAPER 6; INK 0;"ЖЕЛТЫЙППП"; PAPER 0;INK 5;" - "

445 PRINT AT 13,10; PAPER 4; INK 0;"ЗЕЛЕНЫЙПП"; PAPER 0;INK 5;" - "

450 FOR n=1 TO 4

455 PRINT AT 5+n*2,22;k$(n)

460 NEXT n

470 FOR n=1 TO 4

475 LET i$=INKEY$

480 IF i$="" OR I$="E" THEN GO TO 475

485 IF (CODE i$>64 AND CODE i$<91) OR (CODE i$>47 AND CODE i$<58) THEN GO TO 490

487 BEEP .05,-23: GO TO 475

490 IF n>1 THEN IF i$=k$(n-1) THEN GO TO 475

495 LET k$(n)=i$

500 PRINT AT 5+n*2,22; INK 3;i$

510 BEEP .002,50: BEEP .001,40

520 NEXT n

530 FOR n=1 TO 100: NEXT n 540 GO TO 60

600 REM ** НАЧАЛО ИГРЫ ** 610 CLS

620 PRINT AT 1,9; INK 5;"Ц И Ф E Р Т О Н"

625 INK 7

630 FOR N=31 TO 191 STEP 40

640 PLOT N,137: DRAW 34,0: DRAW 0,-10: DRAW -34,0: DRAW 0,10 650 NEXT N

660 FOR N=23 TO 239 STEP 56

665 PLOT N,96: DRAW 50,0: DRAW 0,-26: DRAW -50,0: DRAW 0,26 667 PLOT N,56: DRAW 50,0: DRAW 0,-18: DRAW -50,0: DRAW 0,18 670 NEXT N

675 PRINT AT 15,3; PAPER 2; nnnnnn";AT 16,3; nnnnnn";AT 15,10; PAPER 1;"nnnnnn";AT 16,10;"ПППППП";AT 15,17; PAPER 6;"nn";AT 16,17;"nnnnnn"; AT 15,24; PAPER 4;"ПППППП";АТ 16,24;"ППП" 680 FOR N=1 TO 4

685 INK 3: LET X=N*7-2: PRINT AT 19,X;K$(N) 690 NEXT N 697 INK 7

700 FOR N=39 TO 207 STEP 56

705 PLOT N,25: DRAW 10,0: DRAW 0,-10: DRAW -10,0: DRAW 0,10 710 NEXT N

720 PLOT 23,113: DRAW 218,0: DRAW 0,-10: DRAW -218,0: DRAW 0,10

722 PLOT 7,7: DRAW 0,130: DRAW 10,0: DRAW 0,-130: DRAW -10,0

723 FOR N=5 TO 20: PRINT AT N,1; PAPER 1;" ": NEXT N

725 PLOT 0,0: DRAW 0,175: DRAW 255,0: DRAW 0,-175: DRAW -255,0

750 REM ------------------

755 DIM C(50)

760 LET KOL=0: LET PR=0

770 LET SP=0: LET PO=17

795 REM ---------------------

800 FOR N=4 TO 24 STEP 5: PRINT AT 5,N;"ПППП": NEXT N

805 IF UR=0 THEN FOR N=4 TO 24 STEP 5: PRINT AT 5, N;PAPER 4;"ПППП": NEXT N: GO TO 850

810 PRINT AT 5,UR*5-1; PAPER 2;"ПППП" 845 REM --------------------

850 LET SP=30-UR*4: IF UR=0 THEN LET KOL=0: GO TO 860

853 IF PO=1 THEN GO SUB 2100: GO TO 60

855 LET KOL=UR*5-5: IF UR>1 THEN GO TO 862

860 LET KOL=KOL+1

862 DIM C(50)

865 FOR W=1 TO 100: NEXT W

870 IF KOL=UR*5 THEN LET UR=UR+1: GO SUB 2000: GO TO 800

880 FOR N=1 TO KOL

890 LET NO=INT (RND*4+1)

895 IF N<>1 THEN IF NO=C(N-1) THEN GO TO 890

900 LET C(N)=NO

905 LET M=NO*7-4

907 IF NO=1 THEN LET IN=2

910 IF NO=2 THEN LET IN=1

915 IF NO=3 THEN LET IN=6

920 IF NO=4 THEN LET IN=4

930 PRINT AT 10,M; PAPER IN; nnnnnn";AT 11,M;"nnnnnn";AT 12,M;"ПППППП"

932 IF NO=1 THEN LET NOTA=0

933 IF NO=2 THEN LET NOTA=3.86

934 IF NO=3 THEN LET NOTA=7.02

935 IF NO=4 THEN LET NOTA=10.88 940 BEEP .1,NOTA

950 FOR W=1 TO SP: NEXT W

955 PRINT AT 10,M; PAPER 0; nnnnnn";AT 11,M;"nnnnnn";AT 12,M;"ПППППП"

960 NEXT N

970 FOR N=1 TO KOL

980 IF INKEY$=K$(1) THEN LET NO=1: LET M=3: LET IN=2: GO TO 1000 985 IF INKEY$=K$(2) THEN LET NO=2: LET M=10: LET IN=1: GO TO 1000

987 IF INKEY$=K$(3) THEN LET NO=3: LET M=17: LET IN=6: GO TO 1000 990 IF INKEY$=K$(4) THEN LET NO=4: LET M=24: LET IN=4: GO TO 1000 992 IF INKEY$="E" THEN GO TO 60 995 GO TO 980

1000 PRINT AT 15,M; BRIGHT 1; PAPER IN;"ПППППП";АТ 16,M;"ППП" 1010 IF NO<>C(N) THEN LET KOL=UR*5-5: PRINT AT 8,3; PAPER

3;"ППППППППППППППППППППППППППП": ВЕЕР .5,-5: LET PO=PO-1: PRINT AT 21-PO,1; PAPER 0; ": PAUSE 20: PRINT AT 8,3;"ППППП": PRINT AT 15,M; BRIGHT 0; PAPER IN;"ПППППП";АТ 16,M;"ППППП": GO TO 850

1020 PRINT AT 10,M; PAPER Ш;"ПППППП";АТ 11,M;"ПППППП";АТ 12,M;"ПППППП"

1022 IF NO=1 THEN LET NOTA=0

1023 IF NO=2 THEN LET NOTA=3.86

1024 IF NO=3 THEN LET NOTA=7.02

1025 IF NO=4 THEN LET NOTA=10.88 1030 BEEP .1,NOTA

1040 PRINT AT 10,M; PAPER 0;"ПППППП";АТ 11,М;"ПППППП";АТ 12, M; "ПППППП"

1050 PRINT AT 15,M; BRIGHT 0; PAPER IN; ПППППП";АТ 16,M;"ППП"

1055 FOR W=1 TO 10: NEXT W

1060 NEXT N

1070 GO TO 860

2000 REM ** ЗВУК 1 **

2005 REM

2010 FOR Z=1 TO 40

2020 BEEP .007,Z: BEEP .005,20

2025 NEXT Z

2030 RETURN

2100 REM ** ЗВУК 2 **

2105 REM

2110 BEEP .1,20: BEEP .1,17: BEEP .1,14 2120 FOR n=18 TO 8 STEP -2

2130 BEEP .1,n: BEEP .1,n-2: BEEP .1,n-4: BEEP .1,n-6 2140 NEXT n

2150 BEEP .1,6: BEEP 1,0 2160 PAUSE 20 2170 RETURN 7000 REM ** ЗВУК 3 ** 7005 REM

7010 BEEP .0008,40 7015 BEEP .0009,55 7020 BEEP .0008,40 7025 BEEP .0009,30 7030 RETURN 7999 STOP

8300 REM ** ЗНАЧЕНИЕ КЛАВИШ ** 8305 REM

8310 FOR n=1 TO 4 8320 READ k$(n) 8330 NEXT n 8335 LET ur=1 8340 POKE 23658,8 8380 RETURN

8390 DATA "V","B","N","M" 9900 REM ** РУССКИЙ АЛФАВИТ ** 9905 REM

9910 FOR N=1 TO 20 9920 READ A$ 9930 FOR M=0 TO 7 9940 READ s 9950 POKE USR A$+M,S 9960 NEXT M

9970 NEXT N

9975 DATA "B",0,124,64,124,66,66,124,0

9976 DATA "G",0,126,64,64,64,64,64,0

9977 DATA "D",0,28,36,36,36,36,126,66

9978 DATA "J",0,73,73,62,73,73,73,0

9979 DATA "I",0,66,70,74,82,98,66,0

9980 DATA "L",0,30,34,34,34,34,98,0

9981 DATA "P",0,126,66,66,66,66,66,0

9982 DATA "O",0,66,66,36,24,16,96,0

9983 DATA "C",0,68,68,68,68,68,126,2

9984 DATA "H",0,66,66,66,62,2,2,0

9985 DATA "N",0,65,73,73,73,73,127,0

9986 DATA "N",0,65,73,73,73,73,127,1

9987 DATA "E",0,60,66,30,2,66,60,0

9988 DATA "U",0,76,82,114,82,82,76,0

9989 DATA "A",0,62,66,66,62,34,66,0

9990 DATA "S",24,66,70,74,82,98,66,0

9991 DATA "R",0,64,64,124,66,66,124,0

9992 DATA "T",0,192,64,124,66,66,124,0

9993 DATA "F",0,62,73,73,73,62,8,0

9994 DATA "Q",0,66,66,114,74,74,114,0

9995 RETURN

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

Посмотрим, как это сделано. Часть букв латинского алфавита (и цифра 3) просто использована как русские символы:

А, В, Е, 3, К, М, О, Р, С, Т, X

Остальные сформированы как обычные графические символы в области UDG и соответствуют клавишам:

Q - Ы D - Д Е - Э F - Ф R - Ь G-Г Т-Ъ Н - Ч U - Ю J - Ж I-И L-Л О-У С-Ц Р-П В-Б А-Я N - Ш М - Щ S - Й

Таким образом, чтобы на экране появилась, например, буква «Ы», нужно перейти в графический режим (курсор G) и нажать клавишу Q.

Подпрограмма русского алфавита занимает строки 9900...9995, а обращение к ней происходит в строке 50, то есть непосредственно перед тем, как русские буквы будут использоваться в строках 70, 90, ...

Рекомендуем набирать программу ЦИФЕРТОН, начиная со строк 9900...9995, после чего запустить ее оператором RUN и далее вводить все остальные строки.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
CODING - Вращение спрайтов.
Обратная связь - контакты редакции.
Список BBS - свежий список BBS регулярно будет появляться в нашей газете.
Осторожно ГЛЮК ! - о глюках непростых, а очень опасных и вредных.
B.B.S. Новости - О работе B.B.S.'ок.

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