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、Z=1 になるのが、それぞれ30%程度

となる。実際に遊びながら、この程度が面白いので、上記の設定とした。


本物モグラと偽物モグラの出現位置のパターンが固定される

本物モグラは、乱数で得られる 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)



応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ



keywords: fx-5800Pゲーム、プログラミングもぐら叩きプログラム関数電卓

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

コメントの投稿

非公開コメント

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム関数電卓は、プログラムを作り・使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。

人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR