ゲーム ~ マスターマインド (fx-CG20 / fx-CG50)

2017/10/09
追記1 2017/10/09
追記2 2017/10/09
校正 2017/10/10



グラフ関数電卓で遊べるゲーム:マスターマインド を fx-CG20 / fx-CG50 用に移植する。


ツル様が作成した fx-9860GII 用のマスターマインドを紹介した。

ゲーム ~ マスターマインド (fx-9860GII)


これを カラー化してカラーグラフ電卓 fx-CG20 / fx-CG50 に移植したので紹介する。特定のテキスト出力に色を付ける変更のみを行い、当初は基本的な部分には手を付けなかった。その後 追記したような改造を行っている。


プログラムのダウンロード

ダウンロード1
ツル様作成 マスターマインドの fx-CG20 / CG50 移植版 MASTMIN4
 
ダウンロードしたファイル MASTMIN4.g3m を fx-CG20 / CG50 の <PROGRAM> フォルダに転送後、Program List から実行する。これは、カラー表示化の変更だけを行ったもの。


ダウンロード2
マスターマインド - [EXIT] で正常終了 & アニメ中の [EXE] 反応の改善を行ったバージョン MASTMIN5

[2017/10/09 追記1]
このマスターマインドがとても面白いので、私個人の"お気に入りプログラムリスト"に入れることにした。
Casio Basic で作る "お気に入りプログラムリスト" 参照

さて、このお気に入りに入れるプログラムは、できるだけ [AC] キーによる強制終了をしたくない。強制終了するとプログラム編集画面になり、うっかりプログラムを触ってしまう危険性を避けたいからだ(私はウッカリ者なのだ)。そこで、ゲーム中いつでも [EXIT]キーで正常終了できるように2カ所にコードを追加して改変した。
⇒ 具体的には、(改変箇所1)(改変箇所2) 参照

[2017/10/09 追記2]
正解してアニメ表示している時、新しい問題が表示するための [EXE]キーの反応が悪い。これはアニメ処理を行う Do ループの中に、For 文によるウェイト処理が8カ所あり、さらに表示に時間のかかる Locate コマンドを多く使っているため、この Do ループが回るのが遅くなっている。この重いループの一カ所で [EXE] のキースキャンを行っている。これが [EXE] キーの反応が悪い原因。そこで [EXE] キー判定処理を複数箇所に増やして、この問題を改善する。
⇒ 具体的には、(改変箇所3) 参照 


(改変箇所1) 操作案内として <EXIT> の表示を追加
'======(input)======
Lbl 1:For 1→D To 4
Blue Locate 1,7,"?⇒input 1~9  Ans⇒(-)":0→E:0→I

を以下のように変更 (input を削除して <EXIT> を追加)

'======(input)======
Lbl 1:For 1→D To 4
Blue Locate 1,7,"?⇒1~9 <EXIT> Ans⇒(-)":0→E:0→I


(改変箇所2)
[EXIT]を押した時の処理を追加
キー入力のループ
Do:Getkey→I
 :
 (かなり長いコード)
 :
LpWhile I=0
While Getkey
WhileEnd

を以下のように変更
Do:Getkey→I
I=47⇒Break
 :
 (かなり長いコード)
 :
LpWhile I=0
If I=47:Then ClrText
Locate 9,4,"bye!"
Return:IfEnd
While Getkey
WhileEnd


(赤文字が追加部分)

以上で、[EXIT]キーで正常終了するようになった。

[2017/1-/09 追記]
次に、[EXE]のキースキャンの高速化を行う。

(改変箇所3) 重い Do ループ内で、[EXE]キー判定処理を複数箇所に設置
'======(ending)======
Lbl 2
 :
 :
Do:Getkey→I
Locate 1,6," "
Locate 2,6,"〇"
Locate F,G," "
For 1→S To U:Next
Locate F,G,""
Locate F+1,G," "
For 1→S To U:Next
 :
For 1→S To U:Next
 :
For 1→S To U:Next
 :
For 1→S To U:Next
 :
For 1→S To U:Next
 :
For 1→S To U:Next
 :
For 1→S To U:Next
Locate F+3.G,""
Locate 1,6," "
LpWhile I≠31
Goto 0

オレンジ色の For 1→S To U:Next とそれに続く 表示に時間がかかる Locate コマンドが繰り返しある。 そこで、For 文の直前に このループから脱出するコードを置く。

'======(ending)======
Lbl 2
 :
 :
Do:Getkey→I
Locate 1,6," "
Locate 2,6,"〇"
Locate F,G," "
Getkey=31⇒Break
For 1→S To U:Next
Locate F,G,""
Locate F+1,G," "
Getkey=31⇒Break
For 1→S To U:Next
 :
Getkey=31⇒Break
For 1→S To U:Next
 :
Getkey=31⇒Break
For 1→S To U:Next
 :
Getkey=31⇒Break
For 1→S To U:Next
 :
Getkey=31⇒Break
For 1→S To U:Next
 :
Getkey=31⇒Break
For 1→S To U:Next
 :
Getkey=31⇒Break
For 1→S To U:Next
Locate F+3.G,""
Locate 1,6," "
LpWhile I≠31
Goto 0

(赤文字が追加処理を示す)

これにより、[EXE] の反応が軽くなる。

以上の改変は、fx-9860GII 用 MASTMIND にもそのまま適用できる。



遊び方の概要

MASTMIND を起動すると、
MasterMind_1st image CG 
スプラッシュ画面が表示され、1~9を使って4桁の数を当てるゲームだと分かる。

ここで、[ー] キーを押して次へ進むと、
MasterMind_2nd image CG 
ゲームの説明画面が現れる。
プログラムが自動作成する4桁の数の答えを当てる。但し4桁とも全て異なる数字になる。
数と桁が一致すれば Hit で、数は一致しても桁が異なれば 〇Blow と教えてくれる。但し HitBlow の数だけを教えてくれ、どの桁が HitBlow かは分からない。

ここで、[EXE] キーを押せばゲームスタート。
MasterMind_Start CG 
右上からスタートして、左下までの最大10回のトライで4桁を当てる。

少し待つと4桁の入力待ち画面になる (改変前の画面)。
MasterMind_Input1 CD MasterMind_Input CG 

途中で正解を表示させたところ (改変前の画面);
MasterMind_Input3 CG 

正解を見ずに7トライで正解した時 (改変前の画面);
MasterMind_Done CG 
4Hitを示す4つのがアニメ表示されるので、写真を撮ったときたまたま1個欠けて写っている。
HB 表示の下の黒丸と白丸も交互にブリンクしている。


(改変前の動画)

こういう拘りのギミックは楽しいものだ。

なお、カラー化に際しては、ゲーム名と正解は Red、入力した数字と案内を Blue、途中で[(ー)] を押して表示させる正解は Green、正解した時の言葉は Magenta にした。
 
※ 実際はもっとキレイな画面なので、撮影画像を良くしたい。チョット検討しなければ...



対応機種

◆ fx-CG20 / fx-CG50

fx-9860GII 用の g1m ファイルを fx-CG20 や fx-CG50 に転送すると、自動的に g3m ファイルに変換され、そのまま遊べるので、fx-CG20 / fx-CG50 にも対応する。管理人はカラー化して fx-CG50 で遊んでいる。



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ



  


keywords: プログラム関数電卓、Casio Basic、ゲーム、マスターマインド、fx-9860GII、fx-CG20、fx-CG50

リンク集 | ブログ内マップ

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

fx-CG50 への移植 - もぐら叩き

2017/07/28
ソースリスト差し替え 2017/08/29
表現を一部変更 2017/10/05


fx-CG50 を入手したので、fx-5800P プログラム - もぐら叩きを 移植してみました。Casio Basic の機能は fx-CG50 と fx-CG20 とで完全互換なので、どちらでも遊べます。


目 次

1. ファイル構成

2. 主な変更点

3. プログラムのダウンロード

4. おわりに


ファイル構成

移植後も2つのファイルで構成されるのは同じ。
  • 最初に起動するメインルーチンのファイル名 WACK-A-MOLE は11文字。fx-5800P はファイル名最大12文字だが、fx-CG50 (fx-CG20 や fx-9860GII も) は最大8文字。そこでファイル名を短くして WACKAMO に変更。
  • WACKAMO から呼び出されるサブルーチン (ゲーム本体) WAM は同じファイル名でOK。

主な変更点

fx-5800P からの移植での主な変更ポイント;
  • キーコードの変更
  • Locate の位置を指定するパラメータを画面サイズに合わせて変更 (画面デザインの変更)
  • カラー表示
  • 配列変数を行列に変更
  • 処理速度が格段に速いので、もぐらの動作を遅くしないと、速すぎて遊べない。そこで、ゲーム進行の中心に使っているカウンタ C (カウントダウンループの実行回数) に係数 (重み係数) をかけて、Cと大小比較してチェックする各種イベントの発生を遅らせた。この係数 Wait を新たなパラメータとして新設した。
  • fx-5800P に対する fx-CG50 処理速度向上は、内部計算とテキスト表示で異なるので Wait 係数で一律に対処できないので、各処理のバランスをとるために各種パラメータのデフォルト値を見直して対応。
  • 設定画面は大幅に書き直し。fx-5800P の便利な旧来命令 ? が、fx-CG20 / CG50 には無く、設定値入力の際に現在の設定値が表示されない。ゲーム設定を変更する微妙なところは現在の設定値は必ず表示させたいので、それを実現するために e-Gadget 特製 入力ボックス 2.1G を使い、さらに全設定パラメータが1画面で表示・変更できるようにした。
ゲーム本体 (WAM) のロジックは fx-5800P 版と全く同じなので、詳しくは もぐら叩きの記事 を参照ください。
WAM について、追加や変更した部分を赤文字で示し、fx-5800P 版と fx-CG50 版のプログラムを並べると、同じプログラム構造で必要なところだけ追加や変更していることが分かると思います。


[2017/10/05 修正]
Comparison_WAM2  

メインルーチンの WACKAMO は、各種パラメータの変更の機能を入力ボックスを利用して書き換えるため、全体の構造を大幅に変更しました。詳細は実際にプログラムコードで確認してください。

fx-CG20 Whack-a-Mole ソースリスト


プログラムのダウンロード

fx-CG50 / 20 だけでなく、fx-9860GII シリーズ用にも移植しました。各機種ごとのプログラムは、以下からダウンロード;
おわりに

fx-CG50 の概要 に書いたように、この電卓はキーの構造に問題があって、テンキーまわりの大きなキーは右端を軽く叩く程度だと接点が導通しなくてキーの取りこぼしが発生します。全体的にとても良くまとめられているのに、こんな設計 or 製造不良は本当に勿体ないと思います。改善品との無償交換 (リコール) してもよいくらいの不具合だと思います (先ずあり得ないとは思いますが...)。

fx-CG50 の概要 で、キーを頻繁に叩くゲームでは致命的だろう...と書いたので、それを実際に試すために、もぐら叩き ゲームを fx-CG50 に移植しました。

実際にテンキー入力の取りこぼしのためにゲームに支障はでますが、このゲームに限っては思ったよりも影響が少なかったと正直に言っておきます。というのも、比較的強くキーを叩くことが多いためです。しなしながらこのキーの不具合に関して、慣れの問題と認めるつもりは、まだ有りません。

なお、fx-5800P と違って、プログラムファイルをダウンロードして転送するだけで、ポチポチ入力する必要が無いので、取り敢えず遊ぶには楽ですね。



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ



  


keywords: プログラム関数電卓、fx-CG50、クロックアップ、Ptune3

リンク集 | ブログ内マップ

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

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

やす (Krtyski)

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


プログラム電卓は、プログラムを使ってナンボ!

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

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR