人生ゲーム
LIFE GAME PB
誰もが遊んだあの懐かしいボードゲームが、PBに…
アナタの想像力があれば、記号と数字からでも十人十色の人生を描くことは可能だ!
でもなんでPBで人生ゲーム?
対応機種
PB-100+OR-1 / PB-SIM / Pokecom GO(slow)
実機を推奨します。
遊び方
プログラム・リストを入力します。プログラムサイズは1,561ステップです。
Shift+[0] 又は P0を選択してRUN[EXE] でスタートします。変数拡張(DEFM)は不要です。
中断後の再開は、P0を選択して RUN 4[EXE] です。
プレイヤーは3人固定で、あなたは「プレイヤー0」、他の2人(CPU)は 「プレイヤー1」と「プレイヤー2」です。
プレイヤー0 → プレイヤー1 → プレイヤー2 → プレイヤー0・・・の順でターンが廻ります。
ゲームを開始すると、まずプレイヤー0(あなた)のステータスを表示します。
ステータス表示
[EXE]キーを押すと、ルーレットを回すよう指示が表示されます。
<ルーレットの回し方>
・ルーレットの目は1~5の5個だけです。
・何かキーを押すとルーレットが回りだし、押している間は回り続けます。
・押したキーを離すと、ルーレットが徐々に減速し、やがて止まります。
・止まったときの左端の数値がルーレットの出目で、右端に「R+出目」と表示されます。
・(注)減速するスピードは毎回少し異なりますので、あまり出目を狙うことはできません。
ルーレットの出目が確定したら、続いてフィールドとコマの移動表示になります。左端がスタートで、右側に進んでいきます。画面は適宜スクロールします。
プレイヤーのコマの表示は縦に3つ並んでおり、以下の通り:
プレイヤー0 「’」(上段)
プレイヤー1 「・」(中段)
プレイヤー2 「,」(下段)
プレイヤーが二つ重なると、「○」(=0+1)、「o」(=1+2)、「:」(=0+3)と表現されます。
3つ重なると「3」です。
7マスごとに給料日「$」があり、通過するたびに$2,000の収入となります。
フィールド及びコマの表示
続いて、コマが進んだ先のマスに書かれている情報が表示されます。
マスの情報表示
上記の例では、「ルーレットを回して4以上の場合は、株券1枚当たり$1,000もらえる」との意味になります。
[EXE]キーを押すと記述されたアクションが実行され、各プレイヤーのステータスに反映されます。反映後のステータスは、次のターンが来るまでは確認できません。(クレジットカードの請求は後から来る)
アクションには条件が付いている場合があります。
条件:Y/Nで選択する場合
・・・[Y]または[N]を押して、アクションを実行するかどうか選択します。
条件:ルーレットを回して当たり外れがある場合
・・・当たりのしきい値を表示します。ルーレットの出目に応じた当たり外れの判定が出目の横に「〇」「×」で表示されます。
当たりが4以上の場合
当たりの場合(アクション実行)
はずれの場合(スキップ)
以上を各プレイヤーで繰り返し回してゲームを進めていきます。
他のプレイヤー(CPU)のターンのときはHOLDせず自動的に進みます。(表示の切り替えが早すぎると感じる場合は[P3]のループ数を増やして下さい)
マス29はゴール(億万長者の土地)で、そこに最初のプレイヤーが到達(通過)した時点でゲーム終了となり、[EXE]を押すと、全プレイヤーの財産を清算して表示します。なお、フィールド上のゴール位置に、特に記号はありません。
計算式
財産$=所持金$+株券枚数×$5,000+保険×$2,000
勝敗・順位は財産$の大小で判断してください。
注意
・マスのデータは全18種類の中からゲームごとに乱数で選ばれます。従って、株券や保険を買うことができない場合もありますが、それも人生のうちとお考え下さい。
・例えば、「ルーレットで当たれば株券1枚ごとに収入がある」とき、株券を1枚も持っていなければルーレットは無意味ですが、スキップしません。メモリ容量の制約につき、我慢してください。
・家族が1人増えるとき、他のプレイヤーから強制的に$1,000ずつお祝いとして徴収されます。
・家族は1人が最低人数です。(プレイヤー自身は残る)
・株券を購入するときは一枚につき$2,000を支払います。売却するときは$1,000で売れます。
・保険に加入するときは保険料$1,000を支払います。
マスデータの書式について
マスの情報は4文字のコードで定義されており、書式は以下の通りです。
プログラム[P0]の50~52行目のデータを入れ替えれば、アレンジ可能です。この書式に従い、いろいろな人生ストーリーを想像することができます。アナタも自由に想像して楽しもう!
「様々な人生の例」として、データサンプルを示します。入れ替えていろんな人生を体験してみましょう。
注意
・行番号は50,51,52固定です。
・マスデータは一つ当たり4文字で、6種×3行=18種の固定です。文字数は正確にしてください。
・無意味な組み合わせもあり得ますが、無視します(たぶん)。
人生ストーリー例
![](https://www.google.com/images/icons/product/drive-32.png)
様々な人生の例
![](https://www.google.com/images/icons/product/drive-32.png)
LIFE GAMEプログラム説明書
![](https://www.google.com/images/icons/product/drive-32.png)
LIFE GAME フローチャート
![](https://www.google.com/images/icons/product/drive-32.png)
PB-100実機形式
PB-SIM形式
[P0]
2 VAC:S=1:T=1:U=1:Z=RAN#:PRINT "LIFE GAME"
4 PRINT:IF L(J)>=0 THEN 8
6 PRINT J;":Pass";:GOSUB #3:L(J)=ABS L(J):GOTO 38
8 PRINT J;A(J);"$";V(J);"s";S(J);"f";
10 IF SGN D(J)>0;PRINT CSR0;"I";
12 IF J=0;STOP:GOTO 16
14 GOSUB #3
16 GOSUB #2:Q=L(J):FOR G=1 TO R:L(J)=G+Q
18 $="_'\DT\DG,:o3$":H=L(J)-3:IF H<0;H=0
20 FOR H=H TO H+6:I=0
22 FOR P=0 TO 2:IF L(P)=H;I=I+2^P
24 NEXT P:IF 0=I+FRAC(H/7);I=8
26 $=$+MID(I+1,1):NEXT H:PRINT CSR0;MID(10,7);J;
28 IF 0=FRAC(L(J)/7);A(J)=A(J)+2
30 NEXT G:IF L(J)>=29 THEN 42
32 P=Z:FOR H=0 TO L(J):P=24*FRAC((P*13+5)/24):NEXT H
34 P=INT(P/24*18):GOSUB 50+P/6:$=MID(1.1+24*FRAC(P/6),4)
36 GOSUB #1
38 J=J+1:IF J>2;J=0
40 GOTO 4
42 PRINT:PRINT "Goal!":FOR H=0 TO 2
44 PRINT H;"=";A(H)+5*V(H)+2*D(H);"$";:NEXT H:END
50 $="+1__-1__+F__-I__+S_?-S_?":RETURN
51 $="+I_?+5_I+9_5-R_2S__3-F_5":RETURN
52 $="+1a_-2f_+Rs_+9s4-5s4+1fI":RETURN
[P1]
2 PRINT:PRINT J;":";MID(1,2);"/";MID(3,1);"\LA";MID(4,1);
4 IF J=0;STOP:GOTO 8
6 GOSUB #3
8 K$=MID(4,1):IF K$<>"I" THEN 14
10 IF D(J)=1 THEN 38
12 RETURN
14 IF K$<>"?" THEN 30
16 IF J<>0 THEN 26
18 PRINT "Y/N? ";
20 K$=KEY:IF K$="" THEN 20
22 PRINT K$;:IF K$="Y" THEN 38
24 RETURN
26 IF A(J)>5;IF RAN#<.5;PRINT " Y";:GOSUB #3:GOTO 38
28 PRINT " N";:GOSUB #3:RETURN
30 IF K$="_" THEN 38
32 P=VAL(K$):PRINT:PRINT "R \GE";P;"?";:GOSUB #3:GOSUB #2
34 PRINT CSR9;:IF R>=P;PRINT "\CI";:GOSUB #3:GOTO 38
36 PRINT "\CR";:GOSUB #3:RETURN
38 IF MID(1,1)="S";L(J)=-ABS L(J):RETURN
40 K$=MID(2,1):IF K$="F" THEN 68
42 IF K$="S" THEN 72
44 IF K$="I" THEN 78
46 IF K$="R";GOSUB #2:GOSUB #3:GOTO 50
48 R=VAL(K$)
50 IF MID(1,1)="-";R=-R
52 K$=MID(3,1):IF K$<>"a" THEN 62
54 FOR H=0 TO 2
56 IF H=J;A(H)=A(H)+R*2:GOTO 60
58 A(H)=A(H)-R
60 NEXT H:RETURN
62 P=1:IF K$="f";P=S(J)
64 IF K$="s";P=V(J)
66 A(J)=A(J)+R*P:RETURN
68 IF MID(1,1)="-";S(J)=S(J)-SGN(S(J)-1):RETURN
70 S(J)=S(J)+1:$="+1a_":GOTO 8
72 IF MID(1,1)="+";V(J)=V(J)+1:A(J)=A(J)-2:RETURN
74 IF V(J)>0;V(J)=V(J)-1:A(J)=A(J)+1
76 RETURN
78 IF MID(1,1)="-";D(J)=D(J)-SGN D(J):RETURN
80 IF D(J)=0;D(J)=1:A(J)=A(J)-1
82 RETURN
[P2]
1 K$=$:$="123451234":I=1:Q=1+RAN#:R=ABS R:IF J<>0 THEN 4
2 PRINT:PRINT "Tap!";
3 IF KEY="" THEN 3
4 PRINT:PRINT J;"\RA";
5 R=R+1:IF R>5;R=1
6 PRINT CSR3;MID(R,5);:FOR H=3 TO I:NEXT H
7 IF I>30;PRINT CSR10;R;CSR10;"R";:$=K$:RETURN
8 IF KEY="";I=I+Q
9 GOTO 5
[P3]
1 FOR Q=0 TO 99:NEXT Q:RETURN