ファンクションキーライブラリ
最終更新日 2017年2月13日
初出公開日 2017年1月10日
【3号専用】【BIG動作不可】 プチコンBIGでは正常動作しません
ライブラリの概要、および公開キー
ファンクションキーを1行35文字のタッチ機能付きコンソール画面として活用できる「ファンクションキーライブラリです。デバッグに使用したり、自作ゲームやツールを実行時のサブ画面として活用してもいいし、「1行35文字のコンソール表示のみ」という制限付きプログラムを作るのに活用したり、自作プログラムのデバッグ用(変数の内容や様々な状態を表示)として活用したりとか使い方は自由自在です。
公開キー【 WS5XW3ZJ 】
冒頭の説明を見てもどんなことができるか分からないという人は、上記公開キーでダウンロードできるサンプルプログラムを実行してみてください。
RUNをするとメニューになるので画面タッチで選択してください。(B、Xで選択、Aで決定も可能)
サンプルは以下の4作品です。
◎ファンクションべーダー
一定時間内に画面上のインベーダーをタッチして倒してください。
人間をタッチすると強制ゲームオーバーです。
◎数当てゲーム
ヒントを元に3桁の数を当てるだけの超シンプルなゲームです。
初心者がこのライブラリの使い方を知るにはこれから解析すると良いかもしれません。
◎計算機
数式を入力すれば結果を表示します。(プチコンで使用可能なすべての演算子や関数に対応)
35文字を超えた部分は表示されないため長い数式を入力することはできません。(あくまで簡易的なものとして考えてください)
◎パットゴルフ
パワーゲージをAボタンで止めてカップにボール"・"を入れてください。
矢印が芝目の向きです。(芝目はプレイするたびにランダムで変わる)
カップを少しでも超えたらOBとなり最初の場所から打ち直しになるため注意が必要です。
全5ホールで終了です。
なお、このファンクションキーライブラリはどのプログラムスロットでも動作しますが、計算機を使用する場合に限り「スロット1以外」に置く必要があります。
これは計算機には自作関数RVALを使用しており、これがプログラムスロット1を使用しているためです。
ライブラリで使用できる、命令、関数の一覧
このファンクションキーライブラリで使用できる、命令、関数は以下の通りです。
FGAUGE 座標,最大値,現在値
コンソールを使って指定座標に1ドット単位(1/8キャラ単位)のゲージ表示を行います。
最大値、現在値はキャラ単位の数字(7キャラ分のゲージならば7)となります。
座標においてはオプション1でゲージが縦方向になります。
FINPUT$(座標)
キーボードから文字列を入力してそれを返します。A$=FINPUT$(7)みたいに使用します。
座標においてはオプション1で表示前にFCLSの実行、オプション2で「?」の非表示、オプション4で入力後に入力した文字の消去(入力前の画面のままにする)を行います。
FSELECT(時間,座標,文字列)
待ち時間(秒数)を指定して選択肢を選びその番号を返します。(一番左の項目から0、1、2・・・となる)
文字列はA/B/Cのように「/」で区切ることで複数の項目を記述します。(項目数は画面表示が可能な範囲ならば制限無し)
選択肢は画面タッチで選択可能ですが、左から順にA、B、X、Yボタンでも選択可能です。
時間に負数を入れると待ち時間は無限大(選択するまでずっと待つ)が可能です。
なお、座標においてはオプション1でFCLSを行います。オプション2、オプション4も用意されています。
FKEY 番号,文字列
指定したファンクションキー(1〜5)に文字列を入れます。(入れた瞬間に表示される)
文字列は最大で7文字まで入れることができますが、7文字に満たない場合は余白部にはスペースが入りセンタリング表示されます。(1文字の場合は左右3文字分スペースが入る)
FCHK()
押したファンクションキーの番号(1〜5)を返します。
FCHK2()
押した瞬間のファンクションキーの番号(1〜5)を返します。
FCLS
画面クリアをします。
FPRINT 座標,文字列
指定座標(0〜34)に文字列を表示します。
座標においてはオプション1で表示前にFCLSを行います。
FSCROLL キャラ数
画面を左右に指定キャラ分スクロールします。スクロールした部分にはスペースが自動的に挿入されます。
FCHKCHR(座標)
指定座標にある文字コードを返します。
指定外の座標は-1を返します。
FTOUCH OUT 時間,座標
タッチしている時間と座標を返します。
範囲外の座標をタッチしている時は時間は0を返します(一度ファンクションキーをタッチしたら画面から離すまでカウンタ自体は増えているため注意)
FBUFF$()
画面表示されている35文字の文字列を返します。
FWAIT 座標
画面の指定座標(0〜34)をタッチするまで待ちます。
FWAITB ボタン情報
指定のボタンを押す瞬間まで待ちます。
FKEYSAVE ファイル名
ファンクションキーの情報を1つのテキストファイルにまとめて保存します。
FKEYLOAD ファイル名
保存してあるFキーの情報を読み込んでFキーに入れます。
RVAL(式が入った文字列)
式の値を返します。
プチコン3号で動作可能なものであればどんな関数や演算子にも対応しています。(変数には非対応)
「オプション1」というのが何なのかが分からない人のために補足しておきます。
これは、引数に小数を使うことによって実現した「省略可能な引数」と考えると分かりやすいです。プチコン3号では自作命令においては基本的に引数は省略できませんが、小数部分を活用することで擬似的にこれが可能になるというわけです。
例えば、FPRINT 7,"ABC"だと座標7にABCと表示しますが、すでに画面に文字が表示されている場合はその文字の上から表示します。
これだとごちゃごちゃして見にくくなると思ったらFCLS:FPRINT 7,"ABC"とすれば良いだけですが、そんなことをしなくても座標のオプション1であるFCLSの機能を使えばFPRINT 7.1,"ABC"とするだけでFCLSを使用せずにFPRINTで表示の際に自動的にFCLSが行われるということです。
実は初期のポケコン(1行表示のポケコン)では表示時にCLSされるのが普通だったためそれを実現したわけです。
FINPUT$()にはさらに「オプション2」や「オプション4」があります。
複数のオプションを同時に使うことも可能で「オプション2」と「オプション4」の同時使用は合計が6となるため座標の小数部分に「.6」を加えることで「?」無し、入力文字消去の設定が可能というわけです。
プチコン3号でのプログラミングに慣れている人だと「オプション1」を「bit0」、「オプション2」を「bit1」、「オプション4」を「bit2」に置き換えた方が分かりやすいかもしれません。
この小数部分を使うことで最大で3bit分の設定が可能になるということです。(4bit分以上に対応させようとすると使用する側が面倒臭くなるため3bitまでの対応としている)
小数部分の取り出し方法についてはF_OPT()関数を見てください。(プチコン3号の内部では数値は2進数で扱われるため小数部分には誤差があり、FLOORではなくROUNDで丸めないと誤動作の原因となる)
これらの命令を活用すればどんなジャンルのプログラムでも作ることが可能だと思います。
初心者の人は「数当てゲーム」を参考にしてまずはFPRINTとFINPUT$()の使い方から覚えていくと良いでしょう。
プチコンBIGでなぜ正常動作しないかというとプチコンBIGはファンクションキーが縦に表示されているためです。複数のファンクションキーにまたがる表示を行わなければ特に問題はないのですが、それを無くすとこのライブラリの使用価値が半減してしまうので「正常動作しない」ということにしています。
なお、ライブラリやサンプルプログラムに不具合を見つけた場合や「こんな命令や関数が欲しい」というのがあればおちゃめくらぶ掲示板かtwitterのおちゃめまで知らせてください。
◎便利な自作関数PSTR$()
デバッグ用にこのファンクションキーライブラリを使用するならば私の自作関数PSTR$を併用すると便利です。公開キー 【 NKADEE93 】
PSTR$は数値を誤差ゼロで文字列化する関数です。
プチコンでは通常の表示では小数第9位が四捨五入されて丸めた状態で表示されるためそれよりも小さな値のずれ(例えば、内部では2進数で計算することによって発生する誤差など)があった場合でもそれを見つけることはできません。
しかし、PSTR$であればそんな小さな誤差でさえ視認可能な状態にしてくれるのです。
|
RETURN (プチコン3号/BIGプログラムのページにもどる) RETURN *MAIN (トップページにもどる)