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

Приложение 1 - игровая программа "КОРОЛЕВСТВО".


КОРОЛЕВСТВО

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

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

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

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

королю постоянно лавировать между желаемым и возможным, не забывая о том, что при любых обстоятельствах надо сохранить корону, а иначе...

Программа 43. КОРОЛЕВСТВО.

10 LET В$=" БУШЕЛЕЙ": PAPER 0: INK 7 20 POKE 23658,8 30 RANDOMIZE 50 BORDER 0

60 OVER 0: FLASH 0: BRIGHT 0 70 CLS

80 PRINT AT 10,10;"Please WAIT" 90 GO SUB 9900

100 CLS : FOR N=1 TO 100: NEXT N

102 LET H$="K О Р О Л Е В С Т В О"

103 FOR N=6 TO 26 STEP 2

104 LET A=INT (RND*7+1): PAPER A: FOR M=14 TO 16: PRINT AT M,N;" ": NEXT M

105 PRINT AT 18,N; INK A; PAPER 0;H$(N-5)

106 NEXT N

108 PRINT #0;"ПППППИНСТРУКЦИЯ НУЖНА? (Д/Н)"

109 LET C=1

110 BRIGHT 1: LET C=C+1: IF C=4 THEN LET C=6 112 IF C>7 THEN LET C=2

115 INK С

120 PLOT 110,110: DRAW 40,0: DRAW 30,60: DRAW -40,-30: DRAW -10,30: DRAW -10,-30: DRAW -40,30: DRAW 30,-60

122 IF INKEY$="D" THEN BRIGHT 0: PAPER 0: GO SUB 8000

123 IF INKEY$="N" THEN BRIGHT 0: GO TO 150 125 LET A=INT (RND*7+1)

127 LET X=INT (RND*11+1)

129 BRIGHT 0

130 FOR N=14 TO 16: PAPER A: PRINT AT N,X*2+4;" ": NEXT N 132 PRINT AT 18,X*2+4; PAPER 0; INK A;H$(X*2-1)

140 GO TO 110

150 DIM Z(4): DIM E(10): DIM L(8)

151 PAPER 0

152 LET Z(1)=1500

153 LET Z(4)=1500

155 LET L(1)=100

156 LET L(8)=100

158 LET EC1) =5000

159 LET E(10)=5000

160 LET GOD=0

161 LET TE=0

162 LET UR=0 164 LET SAR=0 165 LET SAR1=0

167 LET MOB=0

168 LET ARM=0

169 LET NA=0

200 REM ------------------

210 LET GOD=GOD+1 215 INK 4: CLS

220 PRINT BRIGHT 1; INK 2;"*********** "; INK 7;"GOD ";GOD;INK 2;" ***********"

230 PRINT INK 5;"НАСЕЛЕНИЕ:"; INK 4;L(8);" ЧЕЛОВЕК"

240 IF GOD=1 THEN GO TO 275

245 PRINT "РОДИЛОСЬ:"^(2)

250 PRINT "УМЕРЛО ЕСТЕСТВЕННОЙ СМЕРТЬЮ:"^(3)

255 PRINT "УМЕРЛО ОТ ГОЛОДА:"^(4)

260 PRINT "ЖЕРТВЫ ВОЙНЫ:"^(5) 265 PRINT "ЖЕРТВЫ ГРАБЕЖА:"^(7) 270 PRINT "УМЕРЛО ОТ БОЛЕЗНЕЙ:"^(6) 272 IF L(1)=0 THEN LET L(1)=1 275 PRINT "ИТОГО НАСЕЛЕНИЯ:"Л(1) 277 PRINT 280 IF GOD=1 THEN GO TO 300

282 GO SUB 7000

283 CLS

284 FOR N=2 TO 7

285 LET L(N)=0

286 NEXT N

290 LET L(8)=L(1)

300 PRINT INK 5;"ЗЕМЛЯ:"; INK 4;Z(4);" АКРОВ"

310 IF GOD=1 THEN GO TO 325

315 PRINT "КУПЛЕНО (ПРОДАНО):";2(2)

320 PRINT "B РЕЗУЛЬТАТЕ ВОЙНЫ:";Z(3)

325 PRINT "ИТОГО:";2(1);" АКРОВ"

327 PRINT

330 IF GOD=1 THEN GO TO 350

332 GO SUB 7000

333 CLS

334 LET Z(2)=0

335 LET Z(3)=0 340 LET Z(4)=Z(1)

350 PRINT INK 5;"3EPHO:"; INK 4;E(10);BS

355 IF GOD=1 THEN GO TO 405

360 PRINT "УРОЖАЙ^Е^Ш

365 PRINT "УРОЖАЙНОСТЬ:";^;" БУШЕЛЬ/АКР"

370 PRINT "УПОТРЕБЛЕНО В ПИЩУ:";Е(3)

375 PRINT "HA CEMEHA:";E(4)

380 PRINT "B УПЛАТУ ЗА ЗЕМЛЮ:";Е(5)

385 PRINT "НАЕМНИКАМ:";Е(6)

390 PRINT "СЪЕДЕНО КРЫСАМИ:";Е(7)

395 PRINT "B РЕЗУЛЬТАТЕ ВОЙНЫ:";Е(8)

400 PRINT "B РЕЗУЛЬТАТЕ ГРАБЕЖА:";Е(9)

405 PRINT "ИТОГО^^О)^

410 FOR N=2 TO 9

415 LET E(N)=0

420 NEXT N

425 LET E(10)=E(1)

430 IF TE<100 THEN GO TO 500

435 PAUSE 300: CLS : INK 2

440 PRINT "НАРОД УСТАЛ ОТ ВОЙНЫ И ГОЛОДА.""ПППППППВЫ НИЗЛОЖЕНЫ!!!" 445 INK 5

450 PRINT "ЖЕЛАЕТЕ ПОПРОБОВАТЬ ЕЩЕ? (Д/Н)" 460 IF INKEYS="D" THEN GO TO 100 470 IF INKEYS="N" THEN CLS : STOP 480 GO TO 460

500 IF L(1)>2 THEN GO TO 530

505 PAUSE 300: CLS : INK 2 510 PRINT "ВЫ И ОСТАТОК ВАШЕГО НАРОДА.....ЭМИГРИРУЕТЕ В

АРГЕНТИНУ" 520 GO TO 445

530 REM --ЗЕМЕЛЬНЫЕ МАХИНАЦИИ-540 GO SUB 7000 550 LET R=INT (RND*10+23) 555 CLS : INK 5

560 PRINT "СКОЛЬКО АКРОВ ЖЕЛАЕТЕ КУПИТЬ.....ПО "^;"БУШЕЛЬ /АКР"

570 INPUT "СКОЛЬКО АКРОВ? ";КО

575 IF K0<0 THEN BEEP .1,-25: PAUSE 200: GO TO 555

580 IF K0=0 THEN GO TO 600 582 IF KO*R<=E(1) THEN GO TO 590 585 GO SUB 7100

587 BEEP .1.-25: PAUSE 200: GO TO 555

590 LET E(5)=-R*KO

591 LET E(1)=E(1)+E(5)

592 LET Z(2)=KO

593 LET Z(1)=Z(1)+Z(2) 595 GO TO 850

600 LET R=R-1

610 PRINT "СКОЛЬКО АКРОВ ЖЕЛАЕТЕ ПРОДАТЬ.....ПО "^;"БУШЕЛЬ/АКР"

620 INPUT "СКОЛЬКО АКРОВ? ";КО

625 IF K0<0 THEN BEEP .1.-25: PAUSE 200: CLS : GO TO 610 630 IF K0=0 THEN GO TO 850 635 IF KO<=Z(1) THEN GO TO 670 640 GO SUB 7150

650 BEEP .1.-25: PAUSE 200: CLS : GO TO 610 670 IF KO<=Z(1)/10 THEN GO TO 800 675 LET R=R-1

680 INK 1: PRINT "ПРОДАТЬ ТАК МНОГО ВЫ МОЖЕТЕ .....ТОЛЬКО ПО ";R;" БУШЕЛЬ/АКР" 685 INK

5

690 PRINT "БУДЕТЕ ПРОДАВАТЬ:.....А-ПО ЭТОЙ ЦЕНЕ,.....В-ДРУГОЕ КОЛИЧЕСТВО,.....С-НЕ БУДЕТЕ

ПРОДАВАТЬ......НАЖМИТЕ А,В ИЛИ С"

700 IF INKEY$="A" THEN GO TO 800

710 IF INKEY$="B" THEN CLS : LET R=R+1: GO TO 610

720 IF INKEY$="C" THEN GO TO 850

730 GO TO 700

800 LET EC5)=KO*R

810 LET Z{2)=-KO

820 LET E(1)=E(1)+E(5)

830 LET Z(1)=Z(1)+Z(2)

850 INK 6 860 CLS

870 PRINT "СКОЛЬКО АКРОВ ВЫ ЖЕЛАЕТЕ ЗАСЕЯТЬ?"

880 INPUT "СКОЛЬКО АКРОВ? ";КО: LET KO=INT КО

890 IF K0<0 THEN GO TO 860

900 IF KO<=E(1) THEN GO TO 950

910 GO SUB 7100 915 GO SUB 7000

920 GO TO 860

950 IF KO<=Z(1) THEN GO TO 1000 960 GO SUB 7150 965 PAUSE 300 970 GO TO 860

10OO IF KO<L(1)*10 THEN GO TO 1050 1010 GO SUB 7200 1015 PAUSE 300 1020 GO TO 860 1050 LET E(4)=-KO 1060 LET E(1)=E(1)+E(4)

1070 CLS 1080 PRINT "СКОЛЬКО ЗЕРНА ВЫ ДУМАЕТЕ.....УПОТРЕБИТЬ В ПИЩУ?"

1090 INPUT "СКОЛЬКО БУШЕЛЕЙ? ";КО: LET KO=INT КО

1100 IF K0<0 THEN CLS : PRINT "HE ВАЛЯЙ ДУРАКА!!!": PAUSE 200: GO TO 1070

1110 IF KO<=E(1) THEN GO TO 1150

1120 GO SUB 7100

1130 PAUSE 300

1140 GO TO 1070

1150 LET L(4)=-(L(1)-INT (KO/40))

1151 IF L(4)>=0 THEN LET TE=TE-1: LET L(4)=0: GO TO 1153

1152 LET TE=TE+INT (L(4)/2)

1153 LET E(3)=-KO

1154 LET L(1)=L(1)+L(4)

1155 LET E(1)=E(1)+E(3)

1160 REM ------------------

1170 LET UR=INT (RND*3+5)

1200 REM --НАСЕЛЕНИЕ--

1210 LET L(2)=INT ((9.0E-02+5.0E-02*RND)*L(1))+1 1220 LET L(3)=-INT ((4.0E-02+3.0E-02*RND)*L(1 )) 1230 LET L(1)=L(1)+L(2)+L(3)

1300 REM ------------------

1305 CLS

1310 IF (RND>.05 AND SAR=0) OR GOD<5 THEN GO TO 1400 1320 PRINT "СЕМИЛЕТНЕЕ НАШЕСТВИЕ САРАНЧИ!" 1330 IF SAR=0 THEN LET SAR1=7: LET SAR=1

1340 IF SAR1>0 THEN PRINT "GOD ";8-SAR1: LET UR=INT (RND*3+ 2): GO SUB 7000: LET SAR1=SAR1-1: GO TO 1400 1350 LET SAR=0

1400 REM ------------------

1410 LET E(2)=INT (UR*ABS E(4)) 1420 LET E(1)=E(1)+E(2)

1500 REM -- КРЫСЫ ------------

1501 REM

1502 IF RND>.25 THEN GO TO 1532 1504 LET E(7)=-INT (E(1)/10)

1506 LET E(1)=E(1)+E(7)

1507 PRINT "КРЫСЫ НАВОДНИЛИ ВАШИ АМБАРЫ": GO SUB 7000

1530 REM -- ЧУМА ------------

1531 REM

1532 IF RND>.01 THEN GO TO 1550

1533 PRINT "ЧЕРНАЯ ЧУМА ПОРАЗИЛА КОРОЛЕВСТВО": GO SUB 7000

1534 LET L(6)=-INT (L(1)/2)

1540 REM -- ХОЛЕРА ----------

1541 REM

1550 IF RND>.2 THEN GO TO 1580

1560 PRINT "ЭПИДЕМИЯ ХОЛЕРЫ ПОРАЗИЛА.....КОРОЛЕВСТВО."^ SUB 7000

1570 LET L(6)=L(6)-INT (L(1)/20) 1580 LET L(1)=L(1)+L(6)

1590 REM -- ВОЙНА ----------

1591 REM

1600 IF RND>.15 OR GOD<3 THEN GO TO 3000 1620 CLS

1630 PRINT "СОСЕДНЕЕ КОРОЛЕВСТВО УГРОЖАЕТПППП.....ВОЙНОЙ."; INK 5;"ВЫ ОБЪЯВИТЕ

МОБИЛИЗАЦИЮ? (Д/Н)" 1640 IF INKEYS="D" THEN GO TO 1670 1650 IF INKEYS="N" THEN LET MOB=0: GO TO 1750 1660 GO TO 1640 1670 REM -- МОБИЛИЗАЦИЯ ---1680 CLS

1685 PRINT "СКОЛЬКО НАРОДУ ВЫ МОБИЛИЗУЕТЕ?"

1690 INPUT AT 20,0;AT 0,0;"СКОЛЬКО ЧЕЛОВЕК? ";КО: LET KO=INT КО

1695 IF KO>(L(1)-(L(1)/3)) THEN GO SUB 7250: PAUSE 200: GO TO 1680

1700 IF K0<=0 THEN LET MOB=0: GO TO 1750

1710 LET HOB=KO

1740 REM -- НАЕМНИКИ --------

1750 CLS

1760 PRINT "НАЕМНИКИ ТРЕБУЮТ ПО 80 БУШЕЛЕЙППП.....ЗЕРНА В ГОД. СКОЛЬКО

НАЕМНИКОВППП.....ВЫ ПРИВЛЕЧЕТЕ ?"

1770 INPUT AT 17,0;AT 0,0;"СКОЛЬКО НАЕМНИКОВ? ";КО: LET К0= INT КО

1780 IF K0<=0 THEN LET K0=0: GO TO 1800

1790 IF KO*80>E(1) THEN GO SUB 7100: PAUSE 200: GO TO 1750

1792 REM -- ИТОГИ ----------

1793 REM

1800 LET ARM=MOB+KO

1802 LET NA=KO*80

1810 PRINT "М0БИЛИЗ0ВАН0:";M0B

1820 PRINT "НАНЯТО:";КО

1830 PRINT "ИТОГО:"; INK 2;ARM; INK 4;" СОЛДАТ" 1910 IF ARM=0 THEN LET W=.2: GO TO 1920 1915 LET W=.1

1920 IF RND>W THEN GO TO 2000

1922 REM -- ПЕРЕГОВОРЫ ------

1923 REM

1930 GO SUB 7000: CLS

1940 PRINT "НАЧАЛИСЬ МИРНЫЕ ПЕРЕГОВОРЫ:"

1950 PRINT "ВОЙНЫ НЕ БУДЕТ, ЕСЛИ ВЫ ОТДАДИТЕППП" INT (Z(1)/3) ;" АКРОВ ЗЕМЛИ И "; INT (Е(1)/3);В$;" ЗЕРНА."

1955 PRINT "ВЫ СОГЛАСНЫ С ЭТИМИ УСЛОВИЯМИ?ППП.....(Д/Н)"

1960 IF INKEY$="D" THEN GO TO 1975 1962 IF INKEY$="N" THEN CLS : GO TO 2020 1970 GO TO 1960 1975 LET Z(3)=-INT (Z(1)/3) 1980 LET E<8)=-INT (E(1)/3) 1985 LET E(1)=E(1)+E(8) 1990 LET Z(1)=Z(1)+Z(3) 1995 GO TO 2300 2000 REM -- СРАВНЕНИЕ СИЛ -2001 REM

2010 GO SUB 7000: CLS 2020 PRINT "ВАШИ ВОЙСКА:"^;" ЧЕЛОВЕК" 2030 LET ARM1=INT (RND*L(1)+E(1)/120) 2035 PRINT "ВОЙСКА ПРОТИВНИКА:"^^" ЧЕЛОВЕК" 2040 IF ARM<ARM1 THEN GO TO 2200 2045 REM -- ВОЙНА ВЫИГРАНА -2046 REM

2050 PRINT "ВОЙНА ВЫИГРАНА"

2060 LET L(5)=-INT (MOB/4.5): LET TE=TE-2

2070 LET Z(3)=INT (Z(1)/1.5)

2080 LET E(8)=INT (E(10)/2+NA/2)

2090 LET L(1)=L(1)+L(5)

2100 LET Z(1)=Z(1)+Z(3)

2110 LET E(1)=E(1)+E(8)

2120 GO TO 2300

2200 REM -- ВОЙНА ПРОИГРАНА

2210 PRINT "ВОЙНА ПРОИГРАНА!"

2220 LET L(5)=-INT (L(1)/2): LET TE=TE+!NT (L(8)/2)

2230 LET Z(3)=-INT (Z(1)/2)

2240 LET E(8)=-INT (E(1)/2)

2250 LET L(1)=L(1)+L(5)

2260 LET Z(1)=Z(1)+Z(3)

2270 LET E(1)=E(1)+E(8)

2300 REM -- НАЕМНИКИ --------

2310 IF NA<=E(1) THEN GO SUB 7000: GO TO 2400 2320 GO SUB 7000: CLS

2330 PRINT "У ВАС НЕ ХВАТИТ ЗЕРНА ЗАПЛАТИТЬПП.....НАЕМНИКАМ!!!"

2340 LET L(7)=-INT (.75*L(1)) 2350 LET E(9)=-INI (.5*E(1)) 2360 LET L(1)=L(1)+L(7) 2370 LET E(1)=E(1)+E(9) 2380 GO SUB 7000: GO TO 2420

2390 REM -------------------

2400 LET E(6)=-NA 2410 LET E(1)=E(1)+E(6) 2420 GO TO 200

3000 REM ----------------------

5000 GO TO 200

6999 REM ----------------------

7000 PRINT #0;AT 1,0; INK 3;"ППППППНАЖМИТЕ ЛЮБУЮ КЛАВИШУ" 7005 IF INKEY$="" THEN GO TO 7005

7007 PRINT #0;AT 1,0;"ПППППППППППППППППППППППППППППППП"

7010 RETURN

7100 PRINT "У ВАС НЕТ СТОЛЬКО ЗЕРНА": RETURN 7150 PRINT "У ВАС НЕТ СТОЛЬКО ЗЕМЛИ": RETURN 7200 PRINT "У ВАС НЕ ХВАТИТ ДЛЯ ЭТОГО НАРОДА": RETURN

7250 PRINT "У ВАС НЕТ СТОЛЬКО БОЕСПОСОБНЫХППП.....ЛЮДЕЙ!":RETURN

7260 REM --------------------

8000 REM -- ИНСТРУКЦИЯ --8010 CLS 8015 PRINT TAB 11; INK 5;"ИНСТРУКЦИЯ" 8020 PAPER 7: INK 0

8030 PRINT "ВЫ ЯВЛЯЕТЕСЬ МОНАРХОМ МАЛЕНЬКОЙ .....АГРАРНОЙ СТРАНЫ В

ЦЕНТРАЛЬНОЙППП""ЕВРОПЕ. ВАША ЗЕМЛЯ ПЛОДОРОДНА,ПП" "КРЕСТЬЯНЕ СЧАСТЛИВЫ, НО ВАШИ СО.....СЕДИ ЗАВИСТЛИВЫ."

8040 PRINT "ВАША ЦЕЛЬ - СОХРАНИТЬ ВАШ ТИТУЛ,.....УВЕЛИЧИТЬ ВЛАДЕНИЯ, ПОЗАБОТИТЬСЯ.....ОБ

УВЕЛИЧЕНИИ НАРОДОНАСЕЛЕНИЯ, О.....ПОВЫШЕНИИ БЛАГОСОСТОЯНИЯ ЛЮДЕЙ. "

8050 GO SUB 7000 8060 PAPER 0: INK 7: CLS 8070 GO TO 150

9899 STOP

9900 REM ----------------------

9902 REM Rus. Alfawit

9903 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 "M",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




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Вступление - C-Net Week #19 мы все увидели! Софтография FOX'a.
RestInPain - Пpоект Ellipse'ов "Михалыч" тоpмозится, по словам Midnight'а, отсутствием гpафики, котоpую обещал наpисовать Wrecker^smk.
AMIGA NEWS - Амига GFX-чип Permedia2.
Мнение - новый супер Спектрум: Sprinter, для чего он нужен?
Part 15 - Adventures.

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