SimPB

on PB-100+OR-1/PB-SIM/Pokecom GO 

Programmed by NUAO,  2022/11/3

平地に農地や町を興し、災害に負けず発展させて税収を上げよう! 

PB-100の中に展開する街育成ゲームです。

<ゲームの概要>

 ・フィールドの構成要素は、建物、農作物、樹木で、それぞれ成長/発展していきます。農作物や樹木は、成長すると食料、建築資材として収穫され、街を発展させます。

フィールド画面

・ゲームのパラメータは、住民数、町の資産、住民の資産、食料、建築資材、経過日数です。

 ・プレイヤーが、町長の立場で「種」「苗木」「新築建物」をフィール ドに配置すると、それぞれ一定の条件の下に勝手に成長・発展していきます。 

・農作物は、成熟したら食料として住民に収穫され、住民は収入を得ます。収穫後は「種」 に戻ります

 ・樹木は、成熟したら建築資材として住民収穫され、住民は収入を得ます。収穫後は「苗 木」に戻ります。 

・住民は、建物の中で経済活動をして収入を得ます。 

・町長は、指定された税率で毎日住民の資産から税を徴収します。 

・時々嵐が襲来して農作物、森林、さらに備蓄した食料及び建築資材に被害が出ることがあります。

 ・まれに地震があり、建物、住民数、町の資産に深刻な被害が出ることがあります。 

・建物が発展すると住民数の上限が増えます。

 ・住民数が1未満になるとゲームオーバーとなります。

 ・ゲームは何時でも終了でき、その時点での町の資産/経過日数×100 が得点となります。 

<発展と衰退の条件> 

0)ゲーム開始時 

・フィールドに建物×1、農作物の種×1、樹木の苗木×1 が配置されてスタートします

 ・パラメータ初期値は、住民数 2、町の資産 10、住民の資産 5、食料 5、建築資材 0 です。

 1)種まき・新築

 ・農作物の種撒きには、町の資産×1 を消費します

 ・樹木の苗木植えには、町の資産×2 を消費します

 ・建物の新築は、町の資産×5、建築資材×10 を消費し、かつ住民数は 5 人以上が必要です。 

2)成長

 ・農作物の成長は、川が流れる平原中央部が最も早いです。 

・森林の成長は、山側が早いです。 

・建物の発展は、住民の資産×2、建築資材×2 を消費し、住民数×2 以上必要で、アクセスが良い海側が早いです。

 ・住民数は、十分に食料があり、十分な住居(建物)があれば、自然に増えていきます

 3)収穫 

・農作物が成熟すると住民が収穫し、食料+5、住民の資産+1 となります

 ・樹木が成熟すると住民が収穫し、建築資材+5、住民の資産+2 となります

 ・建物の発展の度合いと住民数に応じて、住民が収入を得ます

 ・町長は、一日ごとに住民から税率に応じた税を徴収し、町の資産となります。 

4)負担 

・建物は、発展の度合いに応じて維持費が掛かり、住民の資産から差し引かれます。 

・住民の資産が 0 の場合は、建物の発展度合いが縮小(老朽化)し、最後は更地になります。 

・食料が 0 になると、住民数が徐々に減少します。(飢餓)

 ・建物(住居)が小さくなると、住民数が徐々に減少します。(過疎) 

<操作方法> 

1)プログラム入力後、[P0]を RUN します。 

2)タイトル表示後、フィールドが表示され、ゲームが開始します。 

3)何かキーを押す(少し長めに押す)と、パラメータを表示した後、メニュー画面になります。 

パラメータ表示画面

メニュー画面

4)何かキーを押してカーソル">"を移動させ、"."で決定します。 

5) ♠(樹木)、w(農作物)、H(建物)を選択した場合は、場所を選びます。 何かキーを押してカーソル"→"を移動させ、"."で決定します。 条件が成立していれば"+"が表示され各要素が配置され、ゲームに戻ります。 条件が成立していなければ何も表示されず、ゲームに戻ります。 

6)$(税率)を選択した場合は、税率を変更します。 "+" "-"キーで税率を±0.01 単位で変更し、"."キーを押すと決定してゲームに戻ります。 

7)q(終了)を選択した場合は、確認を経てゲームを終了し、その時点での得点を表示します。 

8)ゲームを中断又は終了したあと再開する場合は、[P0]において"RUN 50 [EXE]"で続行できます

<ゲームのコツ> 

・これは「育成ゲーム」であり、時々操作するほかは基本放置するプレイスタイルを想定しています。 

・初期はとにかく苗木を植え、建築資材を調達することに努めましょう。建物が大きくなれば住民数が増えて きますので、建物の新築ができるようになります。 

・住民数が増えてきたら、食料消費が増えますので調達を切らさないようにしましょう。

 ・建物が無いと住民は生きていけません。建物(嵐に耐える)を早めに増やしましょう。 

プログラムの解説

SimPB 説明書.pdf

[P0]

10 VAC

20 PRINT "SimPB";

30 F=5:H=2:M=5:N=10:G=.01:E=10

40 S=7:U=4:X=1:$="_,r\SP.vwnhH"

50 $=MID(1,10)+" "

60 FOR J=1 TO 10:$=$+MID(INT(P(J))+1,1):NEXT J

70 $=$+"/":PRINT:PRINT MID(11,12);

80 L=0

90 FOR I=1 TO 10:K=P(I)

100 IF K=6.9;IF RAN#<.5;F=F+5:M=M+1:K=4:GOTO 280

110 IF K=3.9;IF RAN#<.2;O=O+5:M=M+2:K=1:GOTO 280

120 IF K<7 THEN 210

130 M=M-(K-7)*.02:IF M<0;M=0:K=K-.1:IF K<7;K=0:GOTO 280

140 L=L+K-6

150 M=M+(K-7)*.2*H/10*RAN#:IF RAN#>.1 THEN 280

160 IF M<2 THEN 280

170 IF O<2 THEN 280

180 IF H<2 THEN 280

190 IF K<9.8;K=K+.1/SQR I:M=M-2:O=O-2

200 GOTO 280

210 IF K<4 THEN 250

220 IF RAN#>.1 THEN 280

230 K=K+1/SQR ABS(I-5.5:IF K>6.9;K=6.9

240 GOTO 280

250 IF K<1 THEN 280

260 IF RAN#>.1 THEN 280

270 K=K+.05*I:IF K>3.9;K=3.9

280 P(I)=K

285 IF KEY<>"";GOSUB #2

290 NEXT I

300 F=F-H*RAN#*.05:IF F<0;F=0:H=H*(1-RAN#/10)

310 IF H<1;PRINT:PRINT "GAME OVER.":END

320 IF F>H*2;IF RAN#<.1;IF L*2>H;H=H+1

330 IF L*3<H;H=H-.1

340 N=N+M*G:M=M-M*G

350 IF RAN#<.002;GOSUB #3

360 E=E+1:GOTO 50


[P2]

10 PRINT:PRINT E;"D";INT(H);"i",INT(F);":";INT(O);"#"

20 PRINT:PRINT INT(M);"\\";INT(N);"$"

30 C=0

40 PRINT:PRINT " r \SP w H $ q";CSR C*2;">";

50 A$=KEY:IF A$="" THEN 50

60 IF A$="." THEN 100+C*100

70 C=C+1:IF C>5;C=0

80 GOTO 40

100 PRINT:RETURN

200 GOSUB 700

210 IF N>=2;P(B)=1:N=N-2:PRINT CSR B;"+";

220 RETURN

300 GOSUB 700

310 IF N>=1;P(B)=4:N=N-1:PRINT CSR B;"+";

320 RETURN

400 GOSUB 700

410 IF N>=5;IF H>=5;IF O>=10;P(B)=7:N=N-5:O=O-10:PRINT CSR B;"+";

420 RETURN

500 PRINT:PRINT "Tx";G;"+-.";

510 A$=KEY:IF A$="" THEN 510

520 IF A$="+";G=G+.01:IF G>.99;G=1

530 IF A$="-";G=G-.01:IF G<.01;G=0

540 IF A$<>"." THEN 500

550 PRINT:RETURN

600 PRINT:PRINT "Quit? y/n";

610 A$=KEY:IF A$="" THEN 610

620 IF A$<>"Y";PRINT:RETURN

630 PRINT:PRINT "Score=";INT(N/E*100:END

700 B=1:IF KEY<>"" THEN 700

710 PRINT:PRINT MID(11,12);CSR B-1;"\RA";

720 A$=KEY:IF A$="" THEN 720

730 IF A$=".";RETURN

740 B=B+1:IF B>10;B=1

750 GOTO 710


[P3]

10 IF RAN#>.8 THEN 60

20 PRINT CSR 2;" Storm! ";:IF KEY="" THEN 20

30 FOR D=1 TO 10:PRINT CSR D-1;"=@";:K=TAN 2

40 IF P(D)>=1;IF P(D)<7;IF RAN#<.5;P(D)=0

50 NEXT D:F=F/2:O=O/2:RETURN

60 PRINT CSR 2;" Quake!! ";:IF KEY="" THEN 60

70 FOR D=1 TO 10:PRINT CSR 2*FRAC(D/2;MID(11,11);:K=TAN 2

80 IF P(D)>=7;IF RAN#<.5;P(D)=0

90 NEXT D:H=H*RAN#:N=N*RAN#:RETURN 


実機形式