|
デフォルトのシステムを使わず、自作のシステムを使用します。 これにより、後々にセーブボタン等のオリジナルシステムを追加できるようになります。 |
まずは *define の説明から始めます。
rubyon 10,10 文字にルビを表示できるようになります。 後ろの数字はそれぞれ横サイズ、縦サイズです。 14〜17行目 usewheel ボタン入力時にマウスホイールの値も取得できるようにする命令です。 マウスホイールを使わないシステムなら必要ありません。 useescspc 上と同じく、こちらはEscキーの入力を取得する命令です。 今回はデバッグで使うのでゲームとして配布するときには消しておきましょう。 22〜24行目 humanz 10 windowback ウィンドウをスプライトより後ろに表示すさせるようにする命令です。 この場合はスプライト10よりも後ろと言う意味になります。 システムカスタマイズではカーソルをスプライトで表示するので、 この命令がないとカーソルがウィンドウに隠れてしまいます。
変数名の定義です。 numalias btn,0 上記を定義しておくと、 mov %0,1 mov %btn,1 この二つは同じ意味になります。 全部数字ではこんがらがって来るので書いておきましょう。 どうしても嫌なら書かなくて言い命令ですがその場合はひどく苦労します。 43〜45行目 defsub csps defsub vsps 関数を定義します。 プロトタイプ宣言のようなものと考えると分かりやすいです。 ですがプロトタイプ宣言と違って、これは書いておかなければ関数が使えません。 この場合はcspsとvspsという関数を作ります。 cspsはスプライトの一括削除、vspsはスプライトの一括 表示/非表示 です。 47〜48行目 システムカスタマイズの重要な定義です。 textgosub *system これは、クリック待ちになるたびに *system にジャンプする命令です。 なのでこの場合は *system の中にシステムを書いていきます。 ゲーム起動直後のサンプルです。
game *start NSCripterを起動すると、ここから始まります。 これは絶対に必要な部分です。 *start はラベルなので goto 等でここへ飛ぶこともできます。 53行目 gosub *setting ラベル *setting へ飛びreturnで戻ってくる命令です。 54行目 goto *test ラベル *test へ飛びます。 53行目のgosubと違い、こちらは戻ってきません。 システム部分の説明です。 ここからが今回のメインです。
ispage %btn 現在のクリック待ちが、クリック待ちなのか、改ページなのかを判断します。 クリック待ちなら変数 %btn に0が入ります。 改ページならなら変数 %btn に1が入ります。 75〜76行目 getcursorpos %text_x,%text_y 末端の文字の座標を取得します。 78〜79行目 add %text_y,10 12行目で 10px のルビを表示するようにしているので、 その分文字を 10px 下にずらします。 これがないとクリック待ちのアイコンが 10px 上に表示されてしまいます。 ルビ機能を使っていない場合は必要ありません。 81〜83行目 if %btn = 1 amsp 1,%text_x,%text_y:vsp 1,1:vsp 0,0 if %btn = 0 amsp 0,%text_x,%text_y:vsp 0,1:vsp 1,0 print 1 クリック待ちなら、クリック待ちのアイコンを表示し、改ページのアイコンを非表示に 改ページなら、改ページのアイコンを表示し、クリック待ちのアイコンを非表示にします。 83行目のprint 1は、スプライトの表示/非表示を変更したときに必要な命令です。 これを書いていないと変更が適応されない場合があります。 クリック待ちの処理です。
textbtnwait %btn 本来はボタン入力待ちの命令ですが、これを利用してクリックされるのを待ちます。 ボタンがある場合はクリックしたボタン番号を返します。 それ以外の場合は以下のように値を返します。 クリック 0 右クリック -1 マウスホイール↑ -2 マウスホイール↓ -3 Escキー -10 90〜100行目 if %btn = 0 goto *btn_end if %btn=-1 gosub *clear:systemcall windowerase:goto *system if %btn=-2 gosub *clear:systemcall lookback:goto *system if %btn=-3 goto *btn_end if %btn = -10 end goto *btn_loop クリックした場合は次へ 右クリックした場合はウィンドウ非表示 マウスホイール↑の場合はバックログ マウスホイール↓の場合は次へ Escキーを押した場合は強制終了 それ以外のボタンが押された場合は最初へ戻るという処理です。 102〜108行目 *btn_end vsps 0,1,0 print 1 texec saveon return 関数vspsでスプライト0〜1を一括で非表示にします。 107行目のsaveonはいわゆるセーブポイントです。 ゲーム中でセーブした場合、最後にsaveonがあった場所がセーブされます。 実はここへはgosubで来た事になっているのでreturnで本文へと戻ります。 最後は関数です。
*btn_end vsps 0,1,0 print 1 texec saveon return 関数vspsでスプライト0〜1を一括で非表示にします。 107行目のsaveonはいわゆるセーブポイントです。 ゲーム中でセーブした場合、最後にsaveonがあった場所がセーブされます。 実はここへはgosubで来た事になっているのでreturnで本文へと戻ります。
今回作ったプログラムのサンプルです。 | ||||||||||||
| BACK |