fx-5800P【ゲーム】:もぐら叩き(7)
fx-5800Pでもぐら叩き
e-Gadget
fx-5800P【ゲーム】もぐら叩き(6) の続き
前回、機能追加して、少し遊んでみたところ、幾つかの問題が出てきた。
1) 間違ったモグラを叩いた時にペナルティーとしてLIFEを減らす
2) たまには、偽物のモグラが顔を出し、それを叩くとペナルティーとしてLIFEを減らす
3) 偽物のモグラだけでなく、同時に本物のモグラを出し、本物以外を叩くとペナルティーとしてLIFEを減らす
これら3つの機能追加を行ったのだが、以下のような問題がはっきりした。
問題1: 偽物モグラが連続して出続けるので、ゲームが退屈になる
問題2: 偽物モグラと本物モグラの出現位置のパターンがある程度固定されてしまっている。
※ モグラ叩きゲーム作成については、実際に行った内容を、順次紹介している。
そこで下記のように、上記問題を解消させた。
偽物モグラが連続して出続ける
原因は、以下のプログラムコードの中にあった。
If P≧200:Then
Z=2⇒2→Q
Z=1⇒1→Q
Else 0→Q:IfEnd
PRIZEが200以上になった時、上記の追加機能が発動する設定にしている。
一旦、偽物モグラ出現モードになると(Q=2)、Qが2のままになる。明らかなバグだ。
そこで、この部分を以下のように修正した。
If P≧200:Then
Z=0⇒2→Q
Z=1⇒1→Q
Z≥2⇒0→Q
Else 0→Q:IfEnd
なお、モグラの出現モードを決定する Z については、
RanInt#(0,3)→Z
と変更し、
・Z≥2 の時: 偽物モグラのみ出現のモード(Q=2)
・Z=1 の時: 偽物モグラと本物モグラ両方出現のモード(Q=1)
・Z=0 の時: 本物モグラのみ出現のモード(Q=0)
と変更した。これにより、
・Z≥2 になるのが 50%程度、Z=1 になるのが 25%程度、Z=0 になるのが 25% 程度
となる。実際に遊びながら、この程度が面白いので、上記の設定とした。
本物モグラと偽物モグラの出現位置のパターンが固定される
本物モグラは、乱数で得られる X と Y から、座標(3X-1, Y) の位置に出現させている。
これに対して、偽物モグラを、座標(3Y-1, Z) の位置に出現させているのが、この問題の原因だ。
そこで、新たに乱数 W を得るように変更し、偽物モグラの出現位置の座標を(3W-1, X) にした。これにより、偽物モグラはほぼ全てのパターンで出現するようになった。
以上の変更を反映させた、プログラムコードは以下のようになる。
今回追加・変更した部分を、赤文字で以下に示す。
fx-5800P用プログラム
もぐら叩きゲーム 改造版
==================
10→DimZ :変数の初期化
35→Z[1]:36→Z[2]
37→Z[3]:21→Z[4]
22→Z[5]:23→Z[6]
31→Z[7]:32→Z[8]
33→Z[9]
17→D:25→E
0→P:0→E
For 1→B To 3 :初期画面表示
Locate 1,B,"[ ][ ][ ]"
Next
Locate 11,2,"PRIZE"
Locate 12,3,P
Locate 1,4,"LIFE:"
Locate 6,4,L
Lbl 0 :ゲームメインループ(始まり)
RanInt#(1,9)→T :モグラ出現のタイミングと座標
RanInt#(1,3)→X
RanInt#(1,3)→Y
RanInt#(0,3)→Z
RanInt#(1,3)→W
9+X-3Y→N
If P≧200:Then
Z=0⇒2→Q
Z=1⇒1→Q
Z≧2⇒0→Q
Else 0→Q:IfEnd
Lbl 1 :モグラ出現のカウントタイマー
Dsz T
Goto 1
0→C :モグラを出現させ、叩くまでの処理
If Q=2:Then
Locate 3X-1,Y,"X"
Else
Q=1⇒Locate 3W-1,X,"X"
Locate 3X-1,Y,"O"
IdEnd
Do
Isz C
C>E⇒Break
Getkey→K
LpWhile K=0
Q=1⇒Locate 3W-1,X," "
Locate 3X-1,Y," "
If Q≦1:Then :モグラを叩いた後の判定
If C≦D And K=Z[N]
Then P+20-C→P
Else L-1→L
If C>D:Then
P-25→P:IfEnd
IfEnd
Else
If C≦D:Then
L-1→L:IfEnd
IfEnd
Locate 12,3," " :リアルタイム表示
Locate 12,3,P
Locate 6,4,L
L⇒Goto 0 :ゲームメインループ(終わり)
0→DimZ :ゲーム終了時の処理
For 1→A To 3
For 1→B To 3
Locate 3B-1,A,"Q"
Next:Next
Locate 1,2,"GAME OVER"
==================
つづく...
⇒ もぐら叩き(8)
応援クリックをお願いします。励みになるので...