コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
おちゃめ ◆jH1opV6FnGyx
2019/11/18 22:08
プチコン4用の1画面プログラムJH 第12弾「簡易関数電卓 JH」です。
プチコン4で計算可能なあらゆる関数に対応しているのが特徴で、コンソールのOSもどきとして活用することも可能です。

コメント

アバター
おちゃめ 2019/11/18 22:10 ◆jH1opV6FnGyx
公開キー【 4X2KX22NE 】

いつものように1画面プログラムJH規格(MAX336文字)ですが、この範囲内で拡張性を考慮して作っています。
このため、この小さなプログラムでもOSもどきとして使えるわけです。


まずは、基本的な使用方法について書いておきます。

使い方は簡単で計算したい式を入力するだけです。
例えば2+3を計算する場合は「2+3」と入力するだけで2+3=5というのを表示します。
2+3*4のような式も演算優先順位通りに計算して2+3*4=14と表示します。
(2+3)*4のようなカッコを使った計算も可能です。
プチコン4で計算可能な式はすべて計算が可能なのでSIN(RAD(30))のような計算も可能です。
絶対値が大きい値や小さい値は指数表記してくれるのでダイレクトモードで計算するよりも分かりやすいです。

入力した式はF1(ファンクションキー1)、計算結果はF2に入ります。
そのため前回入力した式や計算結果を使った計算も容易に行えます。
Lボタンを押しながら計算すると計算式はF4に入り、Rボタンを押しながら計算すると計算結果はF3に入ります。
数式記憶機能、メモリー機能として使うことが可能です。

また、変数Xを使った計算も可能です。
Xボタンを押しながら計算することで計算結果の値を変数Xに代入できます。
変数Xに10を代入したい場合は、10を入力してXボタンを押しながらAボタン(もしくはリターンキー)を押してください。

なお、Aボタンの空入力で改行、計算式で「C」と入力すれば画面クリアが可能です。
これらはすべて上記のプログラムのみで可能です。
アバター
おちゃめ 2019/11/18 22:12 ◆jH1opV6FnGyx
マニュアルに記述しているのですが、使用中はマニュアルは見れないため機能追加の方法について書いておきます。

機能の追加は基本的に簡易関数電卓JHのプログラムの末尾にCOMMON DEF自作関数で記述して行います。様々なアプリを自作関数で記述していけばこの簡易関数電卓はOSもどきになります。
以下にサンプルプログラムを用意しましたが、これは簡易関数電卓JHのマニュアル部分に記述しているため自分で入力しなくてもすぐに使うことが可能です。


(1)戻り値が数値のアプリを作る

まず、簡単なゲームとして「連打ゲーム」を作ってみました。

COMMON DEF RENDA()
 VAR A,I
 BEEP 7
 FOR I=1 TO 600
  WAIT
  A=A+BUTTON(0,#B_RRIGHIT,2)
 NEXT
 BEEP 3
RETURN A
END

これは10秒間に何回Aボタンを押せるかを競うゲームです。
システム画面(電卓画面)でRENDA()と入力すれば実行可能です。

ところが、このアプリには画面表示がありません。
これでは何回ボタンが押されたのか分からないという人もいるかもしれませんが心配は不要です。
実際に実行すれば RENDA()=123 などのようにきちんと表示されていることが分かります。
これは、簡易関数電卓QSPはアプリ終了時には自動的にシステム画面に戻り、システムの機能として自動的に表示が行われるためです。(ねっ、OSっぽいでしょ?)
システムに戻ったときに関数の戻り値は自動的に表示されるためユーザーは表示のことを考える必要はありません。

なお、戻り値が数値の場合はSIN関数などと同じく普通に計算が可能なのでRENDA()+RENDA()+RENDA()とすれば10秒3セットの合計スコアとなります。
アバター
おちゃめ 2019/11/18 22:14 ◆jH1opV6FnGyx
(2)戻り値が文字列のアプリを作る

次は別のタイプのアプリである「占いゲーム」です。

COMMON DEF URANAI()
 R$=MID$("大吉中吉小吉吉 凶 大凶",RND(6)*2,2)
RETURN 0
END

これは単にランダムで「大吉」とか「凶」とか表示するだけのゲームです。
戻り値が文字列になる自作関数は簡易関数電卓JHでは動作ができないのですが、グローバル変数R$に戻り値に相当する文字列を入れておけばシステムに戻った際にその文字列を表示ができます。
なお、戻り値を文字列にする(システムで文字列を表示する)場合はRETURNの後ろには何を記述すれば良いかというとこのようにRETURN 0と記述しておけば問題ありません。

あと、3桁区切りを行うCOMMA関数や分数計算を行うFRAC関数も用意しました。
FRAC関数はFRAC(2/3+4/5-0.7)などのようにすることで23/30のように計算結果を分数表記にする関数ですが、分母が大きい時には分数(文字列扱い)ではなく、小数値で結果を返します。
このように文字列と数値のどちらも返す可能性がある場合はその返す数値をRETURNの後に記述すればOKです。
アバター
おちゃめ 2019/11/18 22:18 ◆jH1opV6FnGyx
(3)戻り値がないアプリを作る

サンプルとして、「簡易お絵描きツール」を作ってみました。

COMMON DEF OEKAKI()
 VAR TT,TX,TY,PX,PY
 IF !X THEN X=#C_WHITE
 REPEAT
  WAIT:PX=TX:PY=TY
  TOUCH 0 OUT TT,TX,TY
  IF TT>1 THEN GLINE PX,PY,TX,TY,X
 UNTIL BUTTON(0,#B_RLEFT)
 L=0
RETURN 0
END

システムに戻った際には自動的に「=戻り値」が表示されてしまうわけですが、戻り値を用意しないアプリではその表示を無くす必要があります。
これはLボタンを押してシステムに戻る前にL=0と記述すれば良いです。(アプリを作る場合はシステム画面に戻る方法を確保しておくことが必要不可欠)

ちなみにこの簡易お絵描きツールは消しゴム機能もないシンプルなプログラムですが、描画する色は変数Xに入った色コードに変えられます。
一旦Yボタンを押してシステムに戻った後で、RGB(200,100,50)などの好きな色コードをXボタンを押しながら入力すればそれが描画色になるので再びお絵描きソフトを起動してください。
このように変数Xを介してシステムとアプリで値をやり取りが可能です。
ただのランチャーとは異なるのが分かると思います。

ちなみに変数Lはシステムに戻った際に表示X座標にもなっています。

この簡易関数電卓JHはそのままでも普通に関数電卓として活用できますが、自分で機能(アプリ)を追加していけば高性能関数電卓にすることが可能なのです。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -