Игры на Бейсике своими руками 1996 г.

Игры - текст игры "OVERLOAD".


Аналог логической настольной игры. Игровое поле представляет
собой прямоугольник 6 на 9 клеток. Играющие по очереди ставят фишки
на произвольные клетки поля, не занятые фишками противника На одну
клетку можно ставить до 4-х фишек. Когда число фишек на клетке ста-
новится равно 4, то клетка "взрывается" - 4 фишки рассыпаются на 4
клетки, прилегающие вплотную к "взорвавшейся" клетке. Если на при-
легающих клетках были фишки противника, то все они "обращаются в
другую веру" - переходят к другому игроку. Цель игры заключается в
получении преимущества над всей территорией поля. Игра очень дина-
мична и характерна крайней неустойчивостью временного преимущества.
Например, если на прилегающих к "взорвавшейся" клетке были уже по 3
фишки, то после "взрыва" на них окажется по 4 фишки, которые, в
свою очередь, тоже "взорвутся". Так один взрыв может вызвать цепную
реакцию и в один миг изменить всю ситуацию на игровом поле.

1 GO ТО 10

2 CLEAR 64599: LOAD "Chr"CODE
64600

3 GO SUB 7000: REM UDG

4 RUN

5 SAVE "OVERLOAD" LINE 2: SAV
E "chr"C0DE 64600,768: STOP

8 POKE 23606,88" POKE 23607,2
51: RETURN : REM RUS

9 POKE 23606,0: POKE 23607,60

: RETURN : REM LAT ,

10 REM ================== ИГРА

15 BORDER 0: PAPER 0: INK 7: С
LS : GO SUB 8: POKE 23658,0

20 DIM AS(2,7): DIM A(6,9): DI
M 8(6,9)

30 GO SUB 7500: REM ИНСТРУКЦИЯ
40 GO SUB 8000. REM ==== ЭКРАН

50 GO SUB 8500: REM ==========

=================== ХОДЫ ИГРОКОВ

60 GO SUB 9000: REM ==== ВЗРЫВ

70 GO TO 50
7000 REM ФОРМИРОВАНИЕ СИМВОЛОВ
UDG-ГРАФИКИ ====================

7005 POKE 23675,88: POKE 23676,2
55

7010 LET X=255: LET Y=128
7020 FOR F=144 TO 151. FOR N=0 T
О 7: READ A: POKE USR (CHR$ F)+N
, A

7030 NEXT N: NEXT F
7040 DATA X,Y,Y,Y,Y,Y,Y,Y
7050 DATA X,0,0,0,0,0,0,0,
7060 DATA X.1,1,If 1,1,1,1
7070 DATA Y,Y,Y,f,Y,Y,Y,Y
7080 DATA 1,1,1,1,1,1,1,1
7090 DATA Y,Y,Y,Y,Y,Y,Y,X
7100 DATA 0,0,0,0,0,0,0,X
7105 DATA 1,1,1,1,1,1,1,X
7110 RETURN

7500 REM ИНСТРУКЦИЯ ============

7501 CLS

7510 LET IS= "

OVERLOAD!

ЦЕЛЬ ЭТОЙ ИГРЫ СОСТОИТ В ПОЛУ-
ЧЕНИИ ПРЕИМУЩЕСТВА НАД ВСЕМ ПО-
ЛЕМ ДОСКИ ПРИ ЗАХВАТЕ ОПРЕДЕЛЕН-
НЫХ СЕКТОРОВ."
7520 GO SUB 7750
7530 LET I$=

ПОЛОЖЕНИЕ СТОРОН ОЧЕНЬ ИЗМЕН-

ЧИВО. ЕСЛИ 4 ИЛИ БОЛЕЕ ФИШЕК
ОКАЗЫВАЮТСЯ В ОДНОМ СЕКТОРЕ, ТО
ОН ""ВЗРЫВАЕТСЯ"", РАССЫПАЯ ФИШ
КИНА ПРИЛЕГАЮЩИЕ СЕКТОРА."
7540 GO SUB 7750
7550 LET I$=

ИГРОК МОЖЕТ СТАВИТЬ ФИШКИ НА
ПУСТОЙ СЕКТОР ИЛИ НА СЕКТОР, С
ФИШКАМИ СВОЕГО ЦВЕТА.": GO SUB 7
750

7560 PRINT . LET I$= "

ПЕРВЫЙ ИГРОК - КРАСНЫЕ,
ВТОРОЙ ИГРОК - ЗЕЛЕНЫЕ.": GO S
UB 7750

7570 FOR N=l-TO 2: PRINT
7580 LET 1$="ИГРОК ": LET I$=I$+
STRS N LET IS=IS+", ВВЕДИТЕ CBO
E ИМЯ."

7590 GO SUB 7750 .
7600 INPUT AS(N)
7610 NEXT N
77 40 RETURN

7750 FOR F=1 TO LEN 1$
7760 PRINT INK 6;IS(F);: BEEP
002,10
7770 NEXT F
7780 PRINT : RETURN
8000 REM ИГРОВОЙ ЭКРАН =========

8010 CLS : PRINT INK 5;" 1 2

3456789 "
8020 FOR F=1 TO 6: PRINT INK 7;
" ABCBBCBBCBBCBBCBBCBBCBBCBBC '
' INK 5;F; INK 7;" DOE OE OE OE
OE OE OE OE OE"

8030 PRINT INK 7;" D E E E
E E E E E E"
8040 NEXT F

8050 PRINT INK 7;" BBBBBBBBBBB

BBBBBBBBBBBBBBBB"

8060 INK 7: LET P=1

8070 PRINT BRIGHT 1;AT 2,3. PAP

ER 2;"1";AT 17,27; PAPER 4;"1"

8080 LET A(1,1)=1: LET A(6,9)=l.

LET B(l,l)=2: LET B(6,9)=4
8090 RETURN

8500 REM ХОДЫ ИГРОКОВ ==========

8510 PRINT INK 6;AT 21,0;A$(P);
" Х-КООРД.(ПО-ГОРИЗОНТАЛИ)"
8520 INPUT О

8530 IF 0<=0 OR 0>=10 OR OoINT
О THEN BEEP .1,0: GO TO 8520
8540 PRINT INK 6;AT 21.0;A$(P);
" Y-КООРД.(ПО-ВЕРТИКАЛИ) "
8550 INPUT D

8560 IF D<=0 OR D>=7 OR DOINT D

THEN BEEP .1,0: GO TO 8550
8570 IF B(D,0)<>P*2 AND B(D,0)<>

0 THEN PRINT #0;"НЕЛЬЗЯ !" BEE
P 1,0: GO TO 8510

8580 LET B(D,O)=P*2: LET A(D,0)=
A(D,0)+1

8590 PRINT BRIGHT 1;AT (D*3)-l,
(0*3); PAPER B(D,0):A(D,0)
8595 PRINT AT 21,0;"

II

8600 IF P=1 THEN LET P=2: RETUR
N

8610 LET P=1: RETURN

9000 REM ПРОВЕРКА НА "ВЗРЫВ" ===

9010 LET N=1: LET F=1

9020 IF A(N,F)<4 THEN GO TO 920

1

9030 PRINT AT (N*3)-l,F*3; FLASH
1;"*"

9040 IF N=1 THEN GO TO 9080
9050 LET A((N-l),F)=A((N-l), F) +1
: LET A(N,F)=A(N,F)-1 BEEP .05,
6

9060 LET B((N-l),F)=B(N,F)" PRIN
T AT ((N-l)*3)-1,F*3; PAPER B((N
-1),F);A((N-1),F)

9065 PRINT AT (N*3)-l,(F*3); PAP
ER B(N,F);A(N,F)

9070 IF A(N,F)=0 THEN LET B(NrP
)=0: PRINT AT (N*3)-1,F*3; PAPER
0, INK 7; " 0" : GO TO 9010

9080 IF N=6 THEN GO TO 9120
9090 LET A((N+l),F)=A((N+1),F)+1
: LET A(N,F)=A(N,F)-1 BEEP .05,

6

9100 LET B((N+l),F)=B(N,F): PRIN
T AT ((N+l)*3)-1,F*3; PAPER B((N
+1),F);A((N+l),F)

9105 PRINT AT (N*3)-1,(F*3); PAP
ER B(N,F);A(N,F) I

9110 IF A(N,F)=0 THEN LET B(N,F
)=0: PRINT AT (N*3)-1,F*3; PAPER

0, INK 7;"0": GO TO 9010
9120 IF F=1 THEN GO TO 9160
9130 LET A(N,(F-1))=A(N,(F-1))+1
: LET A(N,F)=A(N,F)-1: BEEP .05,
6

9140 LET B(N,(F-l))=B(N,F). PRIN
T AT (N*3)-1,(F-l)*3; PAPER B(N,
(F-1));A(N,(F-1))

9145 PRINT AT (N*3)-1,(F*3); PAP
ER B(N,F);A(N,F)

9150 IF A(N.F)=0 THEN LET B(N,F
)=0: PRINT AT (N*3)-1,F*3; PAPER

0; INK 7;"0": GO TO 9010
9160 IF F=9 THEN GO TO 9190
9170 LET A(N,(F+l))=A(N,(F+l))+1
: LET A(N,F)=A(N,F)-1: BEEP .05,
6

9180 LET В(N,(F+l))=B(N,F): PRIN
T AT (N*3)-l,(F+l)*3; PAPER B(N,
(F+l)):A(N,(F+l))

9185 PRINT AT (N*3)-1,(F*3); PAP
ER B(N,F);A(N,F)

9190 IF A(N,F)=0 THEN LET B(N.F
)=0: PRINT AT (N*3)-1,F*3; PAPER
0; INK 7 ; "0" GO TO 9010

9195 GO TO 9040

9200 PRINT AT (N*3)-1,(F*3); PAP
ER B(N,F);A(N,F)

9201 LET F=F+1

'9210 IF F>9 THEN LET N=N+1: LET
F=1

9220 IF N>6 THEN GO TO 9240
9230 GO TO 9020

9240 REM ПРОВЕРКА НА ПОБЕДУ ==--
9250 LET T=0: LET U=0
9260 FOR F=1 TO 6: FOR N-l TO 9
9270 IF B(F,N)=2 THEN LET T=T+1
9280 IF B(F,N)=4 THEN LET U=U+1
9290 NEXT N: NEXT F
9300 IF T=0 THEN PRINT AT 21.5,
INK 7; PAPER 2; FLASH 1; BRIGHT
1," ";AS(2);" ПОБЕДИЛ ! ":
FOR F=1 TO 10: BEEP .1,RND*20: N
EXT F: PAUSE 400: GO TO 9900
9310 IF U=0 THEN PRINT AT 21,5,

INK 7; PAPER 2; FLASH 1; BRIGHT
1;" ";AS(1);" ПОБЕДИЛ ! *":
FOR F=1 TO 10: BEEP .1,RND*20: N
EXT F: PAUSE 400: GO TO 9900
9320 RETURN

9900 REM ПОВТОРЕНИЕ ИГРЫ =======

9910 PRINT AT 21,0; INK 7;"ХОТИТ
E СЫГРАТЬ ЕЩЕ РАЗ? (У/N)"
9920 POKE 23658,8: INPUT Q$
9930 IF Q$«"N" AND QSo'Tl" THEN
RUN

9999 BORDER 7: PAPER 7: INK 0: В
RIGHT 0

Автостарт происходит со строки 2, где выполняется загрузка
русско-латинского символьного набора После его загрузки, при помо-
щи подпрограммы GO SUB 7 000, происходит формирование символов
UDG-графики. С их помощью происходит прорисовка игрового поля, сос-
тоящего из квадратных секторов.

После этого происходит переход на начало программы- При оста-
новке программы при отладке, запустить ее можно, подав команду RUN.

Игра рассчитана на двух игроков, а не на игру с компьютером.

Основной игровой цикл охватывает строки с 10 по 70. Сначала
происходит вывод инструкции при помощи подпрограммы GO SUB 7500,
затем прорисовка игрового поля (GO SUB 8000), затем - ходы игроков
(GO SUB 8500). После проверки на "взрыв" (GO SUB 9000) программа
зацикливается в строке 70 на ход следующего игрока (на строку 50).

Проверка на взрыв. Если на какой-то клетке оказывается 4 или
большее число фишек, то оиа "взрывается", и фишки, расположенные на
ней, разбрасываются на соседние сектора: вверху, внизу, слева и
справа от "взорвавшегося" сектора, а в самом этом секторе не оста-
ется ни одной фишки. Если в соседних секторах находились фишки про-
тивника, то они попадают под "удар" и погибают.

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




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
О людях... - О истории создания и планах Virt group.
Экзамен - Tри "простеньких" вопроса.
Olds - критика Alone Coder журнала Kpuk#2.
АПЛ КУРСК - Сегодня 23 августа 2000 г. 11 день, с момента затопления подводной лодки К-144 "КУРСК".
Послесловие - Как делался этот номер.

В этот день...   24 апреля