プチコン1画面プログラムノススメ 補足
コミックマーケット85で頒布したプチコン本「プチコン1画面プログラムノススメ」で書き忘れていたものが見つかったので補足しておきます。
《 p.8のリスト6行目の M=28912%(J+13)+!J*14 の解説 》
Jの値が | 0の時 | M=14 | なので | O |
| 1の時 | M=2 | なので | C |
| 2の時 | M=7 | なので | H |
| 3の時 | M=0 | なので | A |
| 4の時 | M=12 | なので | M |
| 5の時 | M=4 | なので | E |
※Mの値はキャラコードから65を引いたものになっている
この20文字の式によってGPUTCHRで OCHAME が表示可能です。別の行で +65 が必要なのでトータルで23文字分です。
同じ処理を普通にMID$を使えば次のようにできます。
M=ASC(MID$("OCHAME",J,1))
普通に書いても25文字なのでトータルで2文字分短縮できているだけですが1画面プログラムでは1行29文字の制限があるためMID$を使った場合にはその行には他に何も書けなくなり、同じ処理のプログラムを1画面に収めるのは不可能になります。
《 p.8のリスト20行目 FOR I=T TO 0 の解説 》
スタート前にコースを先に表示する必要があります。
コース表示をサブルーチン化してしまうと1画面には収まらないためメインルーチンのループ1回目(T=0になる)でまずはコース表示を行いそこでスタート処理を行っています。
つまり、この FOR I=T TO 0 〜 NEXT というのは、IF T<=0 THEN 〜 ENDIF というブロックIF(ブロックIFはプチコンにはありませんが)と同等になっています。これは FOR I=1TO T<=0 と同等ですが、これよりも2文字短縮できています。
《 p.15でまとめの書き忘れ 》
1画面プログラムの完成度を高めるためのポイント
(0) まずは1画面ではなく普通に動作するものを作る
(1) ラベルは使わない(GOTO、GOSUBは使わない)
(2) 様々なリスト短縮の方法を駆使する
(3) 1行(29文字)に収まらない長い処理は分割処理する
(4) 依存性のない処理は並べ替えて行末に空きを作らない
(5) リストに空きができたらさらに完成度が高くなる要素を追加する
まとめてないだけで本文にバラバラに書かれているだけなのですべて読んでいれば問題ないですが。
急いで作ったため細かい部分では不備な点が多いですが、目立ったものは以上です。
RETURN/RETURN *MAIN