WOLF RPGエディター(ウディタ)/自作メニュー【サイトトップへ戻る】
■自作メニューの基礎講座(4×3の自作メニュー作り)
(更新:2023/02/25)


自作メニューに関する基礎講座です。
今回は「横4×縦3」の自作メニューの作り方を紹介します。



ショートカット
■自作メニューとは?
■自作メニューの表示について
■自作メニューの起動方法について
■キーボードの操作で自作メニューを操作する
■マウスの操作で自作メニューを操作する
■キーボードとマウスの両方の操作に対応させる
■制作アドバイス


  
■自作メニューとは?

自作メニューとは「自作するメニュー画面」の事を言います。

基本システムに用意されている既存のメニュー画面ではなく、
自分が理想とするオリジナルのメニュー画面を作りたい時に自作メニューを作ります。

▼自作メニューの一例(YADO作品「病原体」のステージを選択する画面)




自作メニューは自分が考えている理想のメニュー画面ができる反面、
メニュー画面の作り方やバグの直し方などを自力で解決する必要があります。



当ページの自作メニューは、イベントを少しずつ追加して、
何度も動作テストを繰り返しながら徐々に仕上げています。

こまめに動作テストを行うと非効率的に見えるかもしれませんが、
しかし大量にイベントコマンドを設定してから動作テストを行ってバグが発生した場合、
どこにバグの原因があるのかが分かりにくくなり、バグの修復に時間がかかってしまう事があります。

自作メニューの制作に慣れていない場合は、こまめに動作テストを行う事をお勧めします。



今回の自作メニューは、ゲーム画面のサイズ「320×240[x2]」に合わせて、
ゲーム画面の中央に自作メニューが表示されるように設定します。


▲トップへ戻る▲


  
■自作メニューの表示について

自作メニューの表示は、基本的に「下地」「カーソル」「選択項目」の3種類のピクチャで表示します。

下地 カーソル 選択項目
3種類のピクチャを重ねて表示

当ページの選択項目の表示では、選択項目1個につき1枚のピクチャを使います。

上図のように選択項目が3個ある場合は、3枚のピクチャを使います。

選択項目の表示は必ずしも「選択項目1個につき1枚のピクチャ」とは決まっておらず、
制作者によっては、複数の選択項目を1枚のピクチャで表示したり、
逆に「薬草 10G」などの1つの選択項目を「薬草」「10G」と2枚のピクチャに分けて表示する場合があります。



ピクチャはピクチャ番号の大きい方が上に表示される仕様なので、ピクチャ番号の割り振り方は…
画像種類 ピクチャ番号
下地 1
カーソル 2
選択項目 3以降
と言った感じになります。

ピクチャ番号はどの番号をどのように使うのかは、制作者が自由に決める事ができます。



なお、基本システムのメニュー画面や戦闘画面の表示では、ピクチャ番号「10000〜19999」を使用しています。

そのため、基本システムのメニュー画面や戦闘画面と一緒に自作メニューを表示する場合は、
9999以下」または「20000以上」のピクチャ番号にする必要があります。


▲トップへ戻る▲


  
■自作メニューの起動方法について

自作メニューの処理はコモンイベントに設定しますが、
自作メニューを表示するためには、そのコモンイベントを呼び出す処理が必要になります。

コモンイベントを呼び出す方法は複数あり、
どのタイミング(どの操作)で自作メニューを表示したいのかによって設定方法が異なります。

起動方法のショートカット
▼マップイベントから起動
▼特定のキーを押したら起動
▼メニュー画面の選択肢から起動
▼アイテムや特殊技能の使用で起動


  
▼マップイベントから起動

マップイベントからコモンイベントを呼び出して自作メニューを表示します。
動作イメージとしては、基本システムのお店の処理のような感じです。

■マップイベント

起動条件:決定キーで実行

■イベントの挿入[名]: ["自作メニュー"] <コモンEv 215>

自作メニューのコモンイベントの起動条件は「呼び出しのみ」にしてください。


  
▼特定のキーを押したら起動

自作メニューのコモンイベントを「並列実行」で設定し、
特定のキーが押された時にイベントコマンド【次イベントの予約】を使って、
このコモンEV(同じコモンイベントを予約で呼び出し)」を実行して自作メニューを起動します。



キー入力からすぐに自作メニューの実行ではなく、
【次イベントの予約】で同じコモンイベントを呼び出して自作メニューを表示している理由は、
自作メニューの実行中に「並列実行」ではない処理にするためです。

「並列実行」で自作メニューを実行すると、
自作メニューの表示中に主人公の行動ができたり、基本システムのメニュー画面の表示ができたり、
マップイベントの起動条件「イベント接触」が実行されたりする可能性があります。

しかし「並列実行」以外でイベントを実行すれば、上記のような問題が発生しないので、
【次イベントの予約】で同じコモンイベントを呼び出して自作メニューを表示します。

今回の設定例では[A]キー(キーコード[130])が押された時に、自作メニューが表示するように設定します。

【イベントコード表示】

セルフ変数[4]=処理モード
セルフ変数[10]=キー入力


■条件分岐(変数): 【1】 CSelf4[処理モード] が 0 と同じ
-◇分岐: 【1】 [ CSelf4[処理モード] が 0 と同じ ]の場合↓
|■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 1 と同じ
|-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 1 と同じ ]の場合↓
| |■イベント処理中断
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 Sys35:主人公移動中?(1=YES) マスの間にいるかどう が 1 と同じ
|-◇分岐: 【1】 [ Sys35:主人公移動中?(1=YES) マスの間にいるかどう が 1 と同じ ]の場合↓
| |■イベント処理中断
| |■
|◇分岐終了◇
|■キー入力:CSelf10[キー入力]キーボード(100〜) [キーコード[130]のみ判定] ( Aキー )
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 130 以外
|-◇分岐: 【1】 [ CSelf10[キー入力] が 130 以外 ]の場合↓
| |■イベント処理中断
| |■
|◇分岐終了◇
|■変数操作: CSelf4[処理モード] = 1 + 0
|■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ]
|■次イベントの予約: [このコモンから+0] コモン215:[ 自作メニュー ]
|■ウェイト:1 フレーム
|■変数操作: CSelf4[処理モード] = 0 + 0
|■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時○ キー入力○ ]
|■イベント処理中断
|■
◇分岐終了◇
▼ 自作メニュー処理
〜ここに自作メニューの処理を設定〜

上記の処理の流れは以下のとおりです。

【1】 主人公が移動中の場合や他のイベントが実行中の場合は【イベント処理中断】を実行。
【2】 【キー入力】を使ってAキーが押されているかどうかを調べる。
Aキーが押された→【3】へ移行。
Aキーが押されていない(キーコード=0)→【イベント処理中断】を実行。
毎フレームごとに【1〜2】を実行するため、
【キー入力】には「キーが押されるまで待つ」を設定しない。
【3】 次のマスへ行かないように主人公の移動を一時的に止め、
セルフ[4]を「1」にした上で【次イベントの予約】でこのコモンイベントを呼び出す。
【4】 一旦イベント処理を終了し、予約で同じコモンイベントを起動。
予約で実行した時には、セルフ[4]が「1」になっているので、
最初の条件分岐はスルーして下にある自作メニューの処理が実行される。
なお【1〜2】の処理は自作メニューの表示中も動き続けますが、
他のイベントが起動中」と言う事で【1】で処理が中断し、
【2】の処理(自作メニューを表示する処理)は実行されません。
【5】 自作メニューの処理が終了し、【次イベントの予約】のイベントが終了すると、
再び【1〜2】の処理が実行されます。


  
▼メニュー画面の選択肢から起動

メニュー画面の選択肢を選択すると自作メニューが表示されるように設定します。

動作イメージとしては、初期設定にある「相談」を選択すると自作メニューが表示される感じです。





メニュー画面の選択肢の設定は、ユーザーDB[17:システム設定]にて行います。



初期設定にある「相談」を利用する場合は、
項目[11:■特殊メニューA名称]の「相談」の文字列を変更してください。

自作メニューの設定はコモンイベント[212:相談コマンド]に設定します。
違うコモンイベントに設定する場合は、
項目[12:┗特殊メニューA呼出コモン]で自作メニューを設定したコモンIDを設定してください。
なお、コモンイベントの起動条件は「呼び出しのみ」にしてください。



当ページに記載しているピクチャ番号で自作メニューを表示すると、
メニュー画面の下に自作メニューが表示されます。



もしもメニュー画面の上に自作メニューを表示する場合は、
当ページに記載されているピクチャ番号を「+20000」などにしてください。



なお、メニュー画面の「相談」を選択した後にメニュー画面を閉じてから自作メニューを表示する方法もあります。

以下の設定を自作メニューを表示するコモンイベントの最初に設定すると、
メニュー画面が閉じてから自作メニューが表示されます。

【イベントコード表示】

■DB読込(可変): CSelf0 = 可変DB[ 基本システム用変数 : 1 : 0 ] (18 : メニュー消去フラグ : 数値)
■条件分岐(変数): 【1】 CSelf0 が 0 と同じ
-◇分岐: 【1】 [ CSelf0 が 0 と同じ ]の場合↓
|■可変DB書込:DB[ 基本システム用変数 : 1 : 0 ] (18 : メニュー消去フラグ : 数値) = 1
|■次イベントの予約: [このコモンから+0] コモン212:[ 相談コマンド ]
|■イベント処理中断
|■
◇分岐終了◇
▼ 自作メニュー処理
〜ここに自作メニューの処理を設定〜


  
▼アイテムや特殊技能の使用で起動

メニュー画面からアイテムや特殊技能を使用する事で自作メニューを起動します。

▼技能の設定例(コモンイベント[215]に自作メニューの処理がある場合)


▼アイテムの設定例(コモンイベント[215]に自作メニューの処理がある場合)


自作メニューのコモンイベントの起動条件は「呼び出しのみ」にしてください。


▲トップへ戻る▲


  
■キーボードの操作で自作メニューを操作する

キーボードの操作で自作メニューを操作する時の設定例を紹介します。



キーボードの操作が無く、マウスの操作のみで設定する場合は、
■マウスの操作で自作メニューを動かす」をご覧ください。
▼「マウスの操作で自作メニューを動かす」の所までジャンプする



「キーボード+マウス」で設定する場合は、
■キーボードとマウスの両方の操作に対応させる」をご覧ください。
▼「キーボードとマウスの両方の操作に対応させる」の所までジャンプする

なお「■キーボードとマウスの両方の操作に対応させる」には詳しい処理構造の説明がないため、
処理構造の説明はこのまま下記の説明をご覧ください。



▼【キーボードの操作】ピクチャの表示設定

初めにピクチャで自作メニューの画像を表示します。

項目を表示するピクチャ番号は、
解りやすさを考慮して「項目番号+100=ピクチャ番号(項目[5]→ピクチャ番号[105])」で設定します。

項目を表示する時のピクチャ番号はセルフ変数[21:ピクチャ番号]を使って設定します。
またピクチャの表示位置はセルフ変数[22:カーソルX表示位置][23:カーソルY表示位置]を使って設定します。
変数で設定する事で、あとでピクチャの番号や表示位置を変える改造が容易になります。

変数を使って設定する時には「変数呼び出し値(セルフ変数[20]=1600020)」で設定します。
【変数呼び出し値の説明を見る】



▼ピクチャ[1](下地画像)




▼ピクチャ[2](カーソル画像)


※表示形式は「加算」を設定。
【表示形式[加算]の説明を見る】



▼ピクチャ[100〜111](項目名)




カーソルの画像はイベントコマンド【エフェクト】を使って点滅させます。





各項目の表示位置は以下のとおりです。



項目の表示は…
セルフ変数[22:カーソルX表示位置]85
セルフ変数[23:カーソルY表示位置]100
などと設定して、左上の項目[00]を表示します。

そしてセルフ変数[22:カーソルX表示位置]に「加算50」を設定して、次の項目[01]を表示します。

そのあとは「項目[01]を表示 → 加算50 → 項目[02]を表示 → 加算50 → 項目[03]を表示」と処理して、
右端まで表示したら、セルフ変数[22:カーソルX表示位置]に「減算150」を設定して左端に戻し、
セルフ変数[23:カーソルY表示位置]に「加算20」を設定して1行下へ下げます。

これを繰り返して右下の項目[11]まで表示します。



【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:カーソル
ピクチャ[100〜111]:項目名


セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

★動作テスト

テストプレイを実行し、自作メニューが正しく表示されているかどうかを確認してください。



▼【キーボードの操作】キー入力の設定

上記の設定にキー入力の設定を追加します。



キー入力はイベントコマンド【キー入力】を使って処理します。


キーが押されるまで待つ」にはチェックを付けないでください。



キー入力の処理は、ループ処理の中に設定します。



このループ処理は、何らかの項目を決定するまではループし続けます。



キャンセルキーを押した時には、●ラベル「終了」の所までジャンプさせます。
終了に関するイベントはあとで設定するので、先にラベルだけを設定してください。

またイベントコマンド【コメント】で「カーソル移動処理」や「何らかの項目を決定」を設定していますが、
この部分もあとでイベントを設定するので、先にコメントだけを設定してください。



決定キーを押しながら自作メニューを表示した時に、
自作メニューの表示と同時に項目を決定しないようにするために、
セルフ変数[12:起動時キー押し禁止]を使って「0=項目決定可能」「1=項目決定不可」を設定し、
自作メニューを表示する時にセルフ変数[12:起動時キー押し禁止]を「1」にして、
一度決定キーを離さないと項目が選択できないようにします。



カーソルの移動処理では、方向キーを押し続けると12フレームごとにカーソルが移動します。

方向キーを連打した時には、方向キーを押し続けた時よりも早くカーソルが移動します。



【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:カーソル
ピクチャ[100〜111]:項目名


セルフ変数[10]=キー入力
セルフ変数[11]=キー待ち時間
セルフ変数[12]=起動時キー押し禁止
セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

■変数操作: CSelf12[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf11[キー待ち時間] -= 1 + 0
|■キー入力:CSelf10[キー入力] 4方向 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 0 と同じ
          【2】 CSelf12[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 0 と同じ ]の場合↓
| |■変数操作: CSelf11[キー待ち時間]〜CSelf12[起動時キー押し禁止] = 0 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf12[起動時キー押し禁止] が 1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 10 と同じ
          【2】 CSelf10[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 10 と同じ ]の場合↓
| |▼ 決定
| |■ループ中断
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 11 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf11[キー待ち時間] が 1 以上 ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作: CSelf11[キー待ち時間] = 12 + 0
|▼ カーソル移動処理
|■
◇ループここまで◇◇
▼ 決定した項目を処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★


★動作テスト

この段階で動作テストする場合は、
コメントで設定した「カーソル移動処理」を一時的にデバッグ文に変更して動作テストを行ってください。

動作テストで方向キーを押すとデバッグウィンドウに「カーソル移動処理」の文字が表示されます。
この「カーソル移動処理」が表示される度にカーソルが移動した事になります。

方向キーを連打した時には、カーソルが早く移動するので、
方向キーを押し続けた時よりも「カーソル移動処理」が表示される速度が早くなります。

なお、決定キーやキャンセルキーを押すと、自作メニューの処理が終了しますが、
まだピクチャの表示を消去する設定が無いため、ピクチャの表示はそのままになります。



▼【キーボードの操作】カーソルの移動処理

上記の設定に、カーソルを移動させる処理を追加します。



カーソルの現在位置は、セルフ変数[20:カーソル位置]で管理します。

横4×縦3の場合は以下のようにセルフ変数[20:カーソル位置]の値を設定します。

0 1 2 3
4 5 6 7
8 9 10 11

上記の場合、カーソルが右に移動すると変数の値が「加算1」、左に移動すると「減算1」、
下に移動すると「加算4」、上に移動すると「減算4」になります。


カーソルが一番上の行(0〜3)にある時に上キーを押した場合は「加算8」を実行します。
これにより例えばカーソル位置が「2」の時に上キーを押すと「2+8」で「10」の位置にカーソルが移動します。

同様にカーソルが一番下の行(8〜11)にある時に下キーを押した場合は「減算8」を実行し、
一番上の行(0〜3)にカーソルが移動します。


左端(0、4、8)で左を押す、または右端(3、7、11)で右を押した場合は、反対側へ移動するように設定します。

カーソルが左端、または右端にあるかどうかを判定する処理では、
セルフ変数[20:カーソル位置]の値を「余剰4」にした物をセルフ変数[24:位置余剰4]に設定し、
そのセルフ変数[24:位置余剰4]の値からカーソルが左端、または右端にいるかどうかを判定します。

セルフ変数[24:位置余剰4]の値は以下のようになります。

0 1 2 3
0 1 2 3
0 1 2 3

セルフ変数[24:位置余剰4]の値が「0」の時に左キーを押した時には、
「加算3」を実行してカーソルを右端に移動させます。

セルフ変数[24:位置余剰4]の値が「3」の時に右キーを押した時には、
「減算3」を実行してカーソルを左端に移動させます。



カーソル用のピクチャのXY表示位置は、
現在選択している項目名を表示しているピクチャのXY表示位置を取得し、
項目名のピクチャと同じ位置にカーソルを表示します。

項目名のピクチャ番号は「カーソル位置+100」になっているため、
セルフ変数[20:カーソル位置]に「加算100」を設定したものをセルフ変数[25:位置+100]に設定し、
セルフ変数[25:位置+100]でピクチャ番号を設定します。





【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:カーソル
ピクチャ[100〜111]:項目名


セルフ変数[10]=キー入力
セルフ変数[11]=キー待ち時間
セルフ変数[12]=起動時キー押し禁止
セルフ変数[20]=カーソル位置
セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置
セルフ変数[24]=位置余剰4
セルフ変数[25]=位置+100


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

■変数操作: CSelf20[カーソル位置] = 0 + 0
■変数操作: CSelf12[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf11[キー待ち時間] -= 1 + 0
|■キー入力:CSelf10[キー入力] 4方向 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 0 と同じ
          【2】 CSelf12[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 0 と同じ ]の場合↓
| |■変数操作: CSelf11[キー待ち時間]〜CSelf12[起動時キー押し禁止] = 0 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf12[起動時キー押し禁止] が 1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 10 と同じ
          【2】 CSelf10[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 10 と同じ ]の場合↓
| |▼ 決定
| |■ループ中断
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 11 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf11[キー待ち時間] が 1 以上 ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作: CSelf11[キー待ち時間] = 12 + 0
|▼ カーソル移動処理
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 8 と同じ
          【2】 CSelf10[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 8 と同じ ]の場合↓
| |▼ 上キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 3 以下
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 3 以下 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 8 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] -= 4 + 0
| | |■
| |◇分岐終了◇
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 2 と同じ ]の場合↓
| |▼ 下キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 8 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 8 以上 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 8 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] += 4 + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf24[位置余剰4] = CSelf20[カーソル位置] % 4
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 6 と同じ
          【2】 CSelf10[キー入力] が 4 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 6 と同じ ]の場合↓
| |▼ 右キーを押した
| |■条件分岐(変数): 【1】 CSelf24[位置余剰4] が 3 と同じ
| |-◇分岐: 【1】 [ CSelf24[位置余剰4] が 3 と同じ ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 3 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] += 1 + 0
| | |■
| |◇分岐終了◇
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 4 と同じ ]の場合↓
| |▼ 左キーを押した
| |■条件分岐(変数): 【1】 CSelf24[位置余剰4] が 0 と同じ
| |-◇分岐: 【1】 [ CSelf24[位置余剰4] が 0 と同じ ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 3 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] -= 1 + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf25[位置+100] = CSelf20[カーソル位置] + 100
|■変数操作+: CSelf22[カーソルX表示位置] = ピクチャ:CSelf25[位置+100] の X座標
|■変数操作+: CSelf23[カーソルY表示位置] = ピクチャ:CSelf25[位置+100] の Y座標
|■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] /
       0(0)フレーム / パターン 1 / 透 同値 / 表示形式:同値 / 角 0 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
▼ 決定した項目を処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★

★動作テスト

カーソルが正常に動くかどうかを確認してください。



▼【キーボードの操作】決定した項目の処理とメニューの終了処理

最後に決定した項目の処理とメニューの終了処理を追加します。



今回は項目を決定した時に、その決定した項目の番号が文章で表示されるように設定します。



項目の番号は、特殊文字「\cself[変数番号]」で表示します。
【特殊文字の説明を見る】





【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:カーソル
ピクチャ[100〜111]:項目名


セルフ変数[10]=キー入力
セルフ変数[11]=キー待ち時間
セルフ変数[12]=起動時キー押し禁止
セルフ変数[20]=カーソル位置
セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置
セルフ変数[24]=位置余剰4
セルフ変数[25]=位置+100


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf20[カーソル位置] = 0 + 0
■変数操作: CSelf12[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf11[キー待ち時間] -= 1 + 0
|■キー入力:CSelf10[キー入力] 4方向 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 0 と同じ
          【2】 CSelf12[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 0 と同じ ]の場合↓
| |■変数操作: CSelf11[キー待ち時間]〜CSelf12[起動時キー押し禁止] = 0 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf12[起動時キー押し禁止] が 1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 10 と同じ
          【2】 CSelf10[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 10 と同じ ]の場合↓
| |▼ 決定
| |■ループ中断
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 11 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf11[キー待ち時間] が 1 以上 ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作: CSelf11[キー待ち時間] = 12 + 0
|▼ カーソル移動処理
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 8 と同じ
          【2】 CSelf10[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 8 と同じ ]の場合↓
| |▼ 上キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 3 以下
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 3 以下 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 8 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] -= 4 + 0
| | |■
| |◇分岐終了◇
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 2 と同じ ]の場合↓
| |▼ 下キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 8 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 8 以上 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 8 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] += 4 + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf24[位置余剰4] = CSelf20[カーソル位置] % 4
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 6 と同じ
          【2】 CSelf10[キー入力] が 4 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 6 と同じ ]の場合↓
| |▼ 右キーを押した
| |■条件分岐(変数): 【1】 CSelf24[位置余剰4] が 3 と同じ
| |-◇分岐: 【1】 [ CSelf24[位置余剰4] が 3 と同じ ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 3 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] += 1 + 0
| | |■
| |◇分岐終了◇
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 4 と同じ ]の場合↓
| |▼ 左キーを押した
| |■条件分岐(変数): 【1】 CSelf24[位置余剰4] が 0 と同じ
| |-◇分岐: 【1】 [ CSelf24[位置余剰4] が 0 と同じ ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 3 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] -= 1 + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf25[位置+100] = CSelf20[カーソル位置] + 100
|■変数操作+: CSelf22[カーソルX表示位置] = ピクチャ:CSelf25[位置+100] の X座標
|■変数操作+: CSelf23[カーソルY表示位置] = ピクチャ:CSelf25[位置+100] の Y座標
|■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] /
       0(0)フレーム / パターン 1 / 透 同値 / 表示形式:同値 / 角 0 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
▼ 決定した項目を処理
■文章:項目「\cself[20]」を決定。
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 2 / 5(0)フレーム
■ピクチャ消去:100 〜 111 / 5(0)フレーム


決定した項目別に独自の処理を行う場合は、イベントコマンド【条件(変数)】で分岐して処理してください。

▼分岐例
▼ 決定した項目を処理
■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 0 と同じ
         【2】 CSelf20[カーソル位置] が 1 と同じ
         【3】 CSelf20[カーソル位置] が 2 と同じ
-◇分岐: 【1】 [ CSelf20[カーソル位置] が 0 と同じ ]の場合↓
|■
-◇分岐: 【2】 [ CSelf20[カーソル位置] が 1 と同じ ]の場合↓
|■
-◇分岐: 【3】 [ CSelf20[カーソル位置] が 2 と同じ ]の場合↓
|■
◇分岐終了◇


以上で設定完了です。

動作テストを行って正常に動けば完成です。


▲トップへ戻る▲  ▼制作アドバイスの所までジャンプ▼


  
■マウスの操作で自作メニューを操作する

マウスの操作で自作メニューを操作する時の設定例を紹介します。



▼【マウスの操作】ピクチャの表示設定

初めにピクチャで自作メニューの画像を表示します。



項目を表示するピクチャ番号は、
解りやすさを考慮して「項目番号+100=ピクチャ番号(項目[5]→ピクチャ番号[105])」で設定します。

項目を表示する時のピクチャ番号はセルフ変数[21:ピクチャ番号]を使って設定します。
またピクチャの表示位置はセルフ変数[22:カーソルX表示位置][23:カーソルY表示位置]を使って設定します。
変数で設定する事で、あとでピクチャの番号や表示位置を変える改造が容易になります。

変数を使って設定する時には「変数呼び出し値(セルフ変数[20]=1600020)」で設定します。
【変数呼び出し値の説明を見る】



▼ピクチャ[1](下地画像)




▼ピクチャ[2](カーソル画像)


※不透明度を「0」にしてください。

※表示形式は「加算」にしてください。
【表示形式[加算]の説明を見る】



▼ピクチャ[100〜111](項目名)




カーソルの画像はイベントコマンド【エフェクト】を使って点滅させます。





各項目の表示位置は以下のとおりです。



項目の表示は…
セルフ変数[22:カーソルX表示位置]85
セルフ変数[23:カーソルY表示位置]100
などと設定して、左上の項目[00]を表示します。

そしてセルフ変数[22:カーソルX表示位置]に「加算50」を設定して、次の項目[01]を表示します。

そのあとは「項目[01]を表示 → 加算50 → 項目[02]を表示 → 加算50 → 項目[03]を表示」と処理して、
右端まで表示したら、セルフ変数[22:カーソルX表示位置]に「減算150」を設定して左端に戻し、
セルフ変数[23:カーソルY表示位置]に「加算20」を設定して1行下へ下げます。

これを繰り返して右下の項目[11]まで表示します。



【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:カーソル
ピクチャ[100〜111]:項目名


セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

★動作テスト

テストプレイを実行し、自作メニューが正しく表示されているかどうかを確認してください。

なお、カーソル画像は「不透明度:0」にしているので、現段階では画面には表示されません。



▼【マウスの操作】カーソルの表示設定

上記の設定にカーソルの表示設定を追加します。



設定例にはループ処理が二重に設定されています。

最初のループ「■ループ開始」は、何らかの項目をクリックするまでループし続けます。

2番目のループ「■回数付きループ [ 12 ]回」は、
項目の上にマウスポインタが乗っているかどうかを項目1つずつチェックしています。

▼ループのイベントコマンド


▼マウスポインタが上に乗っているかどうかを調べる時の設定


もしもマウスポインタが乗っている項目があった場合は、その項目の所にカーソルを表示します。
マウスポインタが乗っている項目が無い場合は、「不透明度:0」にしてカーソルの表示を消します。



【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:カーソル
ピクチャ[100〜111]:項目名


セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置
セルフ変数[26]=乗っているか判断


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ループ開始
|■ウェイト:1 フレーム
|■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
        パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf21[ピクチャ番号] = 100 + 0
|■回数付きループ [ 12 ]回
| |■変数操作+: CSelf26[乗っているか判断] = ピクチャ:CSelf21[ピクチャ番号] の マウス重なってる?(1=YES)
| |■条件分岐(変数): 【1】 CSelf26[乗っているか判断] が 1 と同じ
| |-◇分岐: 【1】 [ CSelf26[乗っているか判断] が 1 と同じ ]の場合↓
| | |■変数操作+: CSelf22[カーソルX表示位置] = ピクチャ:CSelf21[ピクチャ番号] の X座標
| | |■変数操作+: CSelf23[カーソルY表示位置] = ピクチャ:CSelf21[ピクチャ番号] の Y座標
| | |■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
         パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
| | |■ループ中断
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf21[ピクチャ番号] += 1 + 0
| |■
|◇ループここまで◇◇
|■
◇ループここまで◇◇


★動作テスト

項目の上にマウスポインタを置いて、カーソルが表示されるかどうかを確認してください。



▼【マウスの操作】クリック処理を設定

上記の設定に項目の上でクリックすると、その項目を決定する処理を追加します。



現在選択している項目の番号は、セルフ変数[20:カーソル位置]に設定します。

このセルフ変数[20:カーソル位置]の値は、
マウスポインタが乗っているピクチャ番号(セルフ変数[21:ピクチャ番号])を「減算100」にして設定します。
ピクチャ番号
100 101 102 103
104 105 106 107
108 109 110 111
→減算100→
項目番号
0 1 2 3
4 5 6 7
8 9 10 11

ピクチャ番号[105]の上にマウスポインタが乗っている場合は、項目[5]を選択している事になります。

なお、マウスポインタが乗っている項目が無い場合は、セルフ変数[20:カーソル位置]には「-1」を設定します。



右クリックを押した時には、一番下に設定した●ラベル「終了」の所までジャンプさせます。
終了に関するイベントはあとで設定するので、先にラベルだけを設定してください。

またイベントコマンド【コメント】で「何らかの項目を決定」を設定していますが、
これもあとでイベントを設定するので、先にコメントだけを設定してください。



【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:カーソル
ピクチャ[100〜111]:項目名


セルフ変数[13]=クリック
セルフ変数[20]=カーソル位置
セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置
セルフ変数[26]=乗っているか判断


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ループ開始
|■ウェイト:1 フレーム
|■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf20[カーソル位置] = -1 + 0
|■変数操作: CSelf21[ピクチャ番号] = 100 + 0
|■回数付きループ [ 12 ]回
| |■変数操作+: CSelf26[乗っているか判断] = ピクチャ:CSelf21[ピクチャ番号] の マウス重なってる?(1=YES)
| |■条件分岐(変数): 【1】 CSelf26[乗っているか判断] が 1 と同じ
| |-◇分岐: 【1】 [ CSelf26[乗っているか判断] が 1 と同じ ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] = CSelf21[ピクチャ番号] - 100
| | |■変数操作+: CSelf22[カーソルX表示位置] = ピクチャ:CSelf21[ピクチャ番号] の X座標
| | |■変数操作+: CSelf23[カーソルY表示位置] = ピクチャ:CSelf21[ピクチャ番号] の Y座標
| | |■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
          パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
| | |■ループ中断
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf21[ピクチャ番号] += 1 + 0
| |■
|◇ループここまで◇◇
|▼ クリック処理
|■変数操作+: CSelf13[クリック] = マウス左クリック状態
|■条件分岐(変数): 【1】 CSelf13[クリック] が 2 と同じ
|-◇分岐: 【1】 [ CSelf13[クリック] が 2 と同じ ]の場合↓
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 0 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 0 以上 ]の場合↓
| | |▼ 決定
| | |■ループ中断
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作+: CSelf13[クリック] = マウス右クリック状態
|■条件分岐(変数): 【1】 CSelf13[クリック] が 2 と同じ
|-◇分岐: 【1】 [ CSelf13[クリック] が 2 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇

|■
◇ループここまで◇◇
▼ 決定した項目を処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★

★動作テスト

この段階で動作テストする場合は、
コメントで設定した「決定」や「キャンセル」を一時的にデバッグ文に変更して動作テストを行ってください。

そして何らかの項目をクリックで決定すると、デバッグウィンドウに「決定」が表示され、
右クリックを押すと「キャンセル」が表示されます。

なお、まだピクチャの消去を設定していないので、項目をクリックしたり、
右クリックでキャンセルを実行したりしても、自作メニューの処理は終了しますが、
ピクチャの表示はそのままになります。



▼【マウスの操作】決定した項目の処理とメニューの終了処理

最後に決定した項目の処理とメニューの終了処理を追加します。



今回は項目を決定した時に、その決定した項目の番号が文章で表示されるように設定します。



項目の番号は、特殊文字「\cself[変数番号]」で表示します。
【特殊文字の説明を見る】





【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:カーソル
ピクチャ[100〜111]:項目名


セルフ変数[13]=クリック
セルフ変数[20]=カーソル位置
セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置
セルフ変数[26]=乗っているか判断


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ループ開始
|■ウェイト:1 フレーム
|■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf20[カーソル位置] = -1 + 0
|■変数操作: CSelf21[ピクチャ番号] = 100 + 0
|■回数付きループ [ 12 ]回
| |■変数操作+: CSelf26[乗っているか判断] = ピクチャ:CSelf21[ピクチャ番号] の マウス重なってる?(1=YES)
| |■条件分岐(変数): 【1】 CSelf26[乗っているか判断] が 1 と同じ
| |-◇分岐: 【1】 [ CSelf26[乗っているか判断] が 1 と同じ ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] = CSelf21[ピクチャ番号] - 100
| | |■変数操作+: CSelf22[カーソルX表示位置] = ピクチャ:CSelf21[ピクチャ番号] の X座標
| | |■変数操作+: CSelf23[カーソルY表示位置] = ピクチャ:CSelf21[ピクチャ番号] の Y座標
| | |■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
         パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
| | |■ループ中断
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf21[ピクチャ番号] += 1 + 0
| |■
|◇ループここまで◇◇
|▼ クリック処理
|■変数操作+: CSelf13[クリック] = マウス左クリック状態
|■条件分岐(変数): 【1】 CSelf13[クリック] が 2 と同じ
|-◇分岐: 【1】 [ CSelf13[クリック] が 2 と同じ ]の場合↓
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 0 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 0 以上 ]の場合↓
| | |▼ 決定
| | |■ループ中断
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作+: CSelf13[クリック] = マウス右クリック状態
|■条件分岐(変数): 【1】 CSelf13[クリック] が 2 と同じ
|-◇分岐: 【1】 [ CSelf13[クリック] が 2 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇
▼ 決定した項目を処理
■文章:項目「\cself[20]」を決定。
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 2 / 5(0)フレーム
■ピクチャ消去:100 〜 111 / 5(0)フレーム


決定した項目別に独自の処理を行う場合は、イベントコマンド【条件(変数)】で分岐して処理してください。

▼分岐例
▼ 決定した項目を処理
■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 0 と同じ
         【2】 CSelf20[カーソル位置] が 1 と同じ
         【3】 CSelf20[カーソル位置] が 2 と同じ
-◇分岐: 【1】 [ CSelf20[カーソル位置] が 0 と同じ ]の場合↓
|■
-◇分岐: 【2】 [ CSelf20[カーソル位置] が 1 と同じ ]の場合↓
|■
-◇分岐: 【3】 [ CSelf20[カーソル位置] が 2 と同じ ]の場合↓
|■
◇分岐終了◇


以上で設定完了です。

動作テストを行って正常に動けば完成です。


▲トップへ戻る▲


  
■キーボードとマウスの両方の操作に対応させる

キーボードとマウスの両方の操作に対応する設定を行います。



この設定は、上記の「■キーボードの操作で自作メニューを動かす」と、
■マウスの操作で自作メニューを動かす」の処理を合体させて設定しています。

それぞれの処理構造は「■キーボードの操作で自作メニューを動かす」と、
■マウスの操作で自作メニューを動かす」の説明をご覧ください。



カーソルの位置を設定する変数は、キーボード用とマウス用に分けて設定します。
セルフ変数[20]=キーボード用カーソル
セルフ変数[27]=マウス用カーソル


またカーソルの画像もキーボード用とマウス用に分けて設定します。
ピクチャ[2]=キーボード用カーソル
ピクチャ[3]=マウス用カーソル


なお、マウス用のカーソルは、カラー設定を「R0、G100、B100(水色)」にします。


またループ内にある【ピクチャ移動】のカラー設定は「同値」にしてください。




この色の設定は、キーボードの操作にあった設定です。
この色の設定は、マウスの操作にあった設定です。
この色の設定は、両方の操作にあった設定です。
この色の設定は、新規で設定、または変更している箇所です。

【イベントコード表示】

ピクチャ[1]:下地
ピクチャ[2]:キーボード用のカーソル
ピクチャ[3]:マウス用のカーソル
ピクチャ[100〜111]:項目名


セルフ変数[10]=キー入力
セルフ変数[11]=キー待ち時間
セルフ変数[12]=起動時キー押し禁止
セルフ変数[13]=クリック
セルフ変数[20]=カーソル位置
セルフ変数[21]=ピクチャ番号
セルフ変数[22]=カーソルX表示位置
セルフ変数[23]=カーソルY表示位置
セルフ変数[24]=位置余剰4
セルフ変数[25]=位置+100
セルフ変数[26]=乗っているか判断
セルフ変数[27]=マウスカーソル位置


■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[220,70] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

■ピクチャ表示:3 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16] X:0 Y:0 /
       0(0)フレーム / パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー R[0] G[100] B[100]

■変数操作: CSelf21[ピクチャ番号] = 100 + 0
■変数操作: CSelf22[カーソルX表示位置] = 85 + 0
■変数操作: CSelf23[カーソルY表示位置] = 100 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」サイズ[50,16]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

■ピクチャエフェクト:2 〜 3 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目00]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目01]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目02]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目03]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目04]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目05]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目06]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目07]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] -= 150 + 0
■変数操作: CSelf23[カーソルY表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目08]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目09]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目10]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号] += 1 + 0
■変数操作: CSelf22[カーソルX表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号] [中心]文字列[項目11]
       X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf20[カーソル位置] = 0 + 0
■ループ開始
|■ウェイト:1 フレーム
|■ピクチャ移動:3 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 0 / 加算 / 角 0 / 拡 100% / カラー 同値
|■変数操作: CSelf27[マウスカーソル位置] = -1 + 0
|■変数操作: CSelf21[ピクチャ番号] = 100 + 0
|■回数付きループ [ 12 ]回
| |■変数操作+: CSelf26[乗っているか判断] = ピクチャ:CSelf21[ピクチャ番号] の マウス重なってる?(1=YES)
| |■条件分岐(変数): 【1】 CSelf26[乗っているか判断] が 1 と同じ
| |-◇分岐: 【1】 [ CSelf26[乗っているか判断] が 1 と同じ ]の場合↓
| | |■変数操作: CSelf27[マウスカーソル位置] = CSelf21[ピクチャ番号] - 100
| | |■変数操作+: CSelf22[カーソルX表示位置] = ピクチャ:CSelf21[ピクチャ番号] の X座標
| | |■変数操作+: CSelf23[カーソルY表示位置] = ピクチャ:CSelf21[ピクチャ番号] の Y座標
| | |■ピクチャ移動:3 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
         パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー 同値
| | |■ループ中断
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf21[ピクチャ番号] += 1 + 0
| |■
|◇ループここまで◇◇
|▼ クリック処理
|■変数操作+: CSelf13[クリック] = マウス左クリック状態
|■条件分岐(変数): 【1】 CSelf13[クリック] が 2 と同じ
|-◇分岐: 【1】 [ CSelf13[クリック] が 2 と同じ ]の場合↓
| |■条件分岐(変数): 【1】 CSelf27[マウスカーソル位置] が 0 以上
| |-◇分岐: 【1】 [ CSelf27[マウスカーソル位置] が 0 以上 ]の場合↓
| | |▼ 決定
| | |■変数操作: CSelf20[カーソル位置] = CSelf27[マウスカーソル位置] + 0
| | |■ループ中断
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作+: CSelf13[クリック] = マウス右クリック状態
|■条件分岐(変数): 【1】 CSelf13[クリック] が 2 と同じ
|-◇分岐: 【1】 [ CSelf13[クリック] が 2 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇

|▼ キーボード処理
|■変数操作: CSelf11[キー待ち時間] -= 1 + 0
|■キー入力:CSelf10[キー入力] 4方向 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 0 と同じ
          【2】 CSelf12[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 0 と同じ ]の場合↓
| |■変数操作: CSelf11[キー待ち時間]〜CSelf12[起動時キー押し禁止] = 0 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf12[起動時キー押し禁止] が 1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 10 と同じ
          【2】 CSelf10[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 10 と同じ ]の場合↓
| |▼ 決定
| |■ループ中断
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 11 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf11[キー待ち時間] が 1 以上 ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作: CSelf11[キー待ちウェイト] = 12 + 0
|▼ カーソル移動処理
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 8 と同じ
          【2】 CSelf10[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 8 と同じ ]の場合↓
| |▼ 上キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 3 以下
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 3 以下 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 8 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] -= 4 + 0
| | |■
| |◇分岐終了◇
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 2 と同じ ]の場合↓
| |▼ 下キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 8 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 8 以上 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 8 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] += 4 + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf24[位置余剰4] = CSelf20[カーソル位置] % 4
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 6 と同じ
          【2】 CSelf10[キー入力] が 4 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 6 と同じ ]の場合↓
| |▼ 右キーを押した
| |■条件分岐(変数): 【1】 CSelf24[位置余剰4] が 3 と同じ
| |-◇分岐: 【1】 [ CSelf24[位置余剰4] が 3 と同じ ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 3 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] += 1 + 0
| | |■
| |◇分岐終了◇
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 4 と同じ ]の場合↓
| |▼ 左キーを押した
| |■条件分岐(変数): 【1】 CSelf24[位置余剰4] が 0 と同じ
| |-◇分岐: 【1】 [ CSelf24[位置余剰4] が 0 と同じ ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 3 + 0
| | |■
| |-◇上記以外
| | |■変数操作: CSelf20[カーソル位置] -= 1 + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf25[位置+100] = CSelf20[カーソル位置] + 100
|■変数操作+: CSelf22[カーソルX表示位置] = ピクチャ:CSelf25[位置+100] の X座標
|■変数操作+: CSelf23[カーソルY表示位置] = ピクチャ:CSelf25[位置+100] の Y座標
|■ピクチャ移動:2 X:CSelf22[カーソルX表示位置] Y:CSelf23[カーソルY表示位置] / 0(0)フレーム /
       パターン 1 / 透 同値 / 表示形式:同値 / 角 0 / 拡 同値 / カラー 同値

|■
◇ループここまで◇◇
▼ 決定した項目を処理
■文章:項目「\cself[20]」を決定。
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 3 / 5(0)フレーム
■ピクチャ消去:100 〜 111 / 5(0)フレーム


以上で設定完了です。


▲トップへ戻る▲


  
■制作アドバイス

自作メニューの制作を含めたオリジナルのイベント処理を作る場合の制作アドバイスです。



▼まずは1枚のピクチャを表示してみよう!

自作メニューなどの複雑なイベント処理の作り方が分からない時には、
まずは簡単に設定できるものから作り始めると良いでしょう。

例えば…
ピクチャを1枚だけ表示してみる
決定キーを押したらSEを鳴らしてみる
サブキーを押す度にピクチャの表示と消去を交互に実行する
と言った感じです。

こんな簡単な設定を行っても意味が無い」と思うかもしれませんが、
しかしどんなに複雑なイベント処理も、最初は1個のイベントコマンドの設定から始まります。

当ページの自作メニューの制作でも、まずはピクチャを表示するだけの設定から始めています。

まあ自作メニューなので、メニュー画面の画像が表示されないと、何も始まらないですからね。

そして「キャンセルキーで自作メニューを終了するだけを設定」「カーソル移動を設定」「決定キーを設定」などと
「必要だ」と思う処理を1つずつ追加していき、最終的に1つの自作メニューの処理を完成させています。

作り方が分からない場合は「まずはカーソルを動かす方法だけを考えてみる」などと、
制作する範囲を絞って考えた方が良いでしょう。



▼試作品を作ろう!

複雑なイベント処理を作る時には、試作品を作った方が良いでしょう。

以下はYADO作品「ニナと会話」の試作品と完成品の比較画像です。

試作品 完成品

試作品の段階では、取りあえず表示してみましたと言ったレベルであり、
画面のレイアウトが分かる最低限の画像しか表示していません。

試作品では…
●画面のレイアウトは見やすく、操作しやすいか。
●マウスポインタの移動に無駄な動きは無いか。
●文字の大きさは見やすいか。
●情報の表示やボタンなどの機能面で不足部分は無いか。
の部分を確認し、このまま制作を進めて良いのかを確認します。

ニナと会話」のようなオリジナルルールのゲームを作る場合は、
ステージの方でも試作品を作り、試作品を何度もプレイして、
ゲームルールの問題点やステージ選択画面で何の情報を表示する必要があるのかなどを洗い出します。

試作品を作ってから完成品を作るとなると、二度手間になって制作効率が悪いように思えますが、
しかしいきなり完成品から作り始めた場合…
●かなり制作を進めた所でゲームのルールに欠陥が見つかり、制作続行が困難になる。
●ゲームのルールや画面のレイアウトが何度も変わり、
 その都度イベント設定や画像などを何度も作り直す必要性が出てくる。

●イベントの修正や変数の使い方の変更が多くなる事でイベント設定が複雑化し、
 作業効率が悪くなる事(制作に時間がかかる事)があり、
 また原因不明なバグ(修復に時間がかかるバグ)も発生しやすくなる。
のような問題が発生する確率が高くなります。

「試作品を作る」と言っても、試作品で特に問題が無ければそのまま完成品の制作へ移行する事ができるので、
必ずしも試作品を作った後に完成品を一から作り直す必要はありません。

自作システムの制作に慣れてくると、
試作品の段階で完成品を意識したイベント設定(変数の使い方)を行うようになるでしょう。

例えば試作品では主人公が1人だけの状態でも、完成品では最大4人のパーティになる場合は、
試作品の段階で変数の番号を4人分確保しておくなど、完成品を意識した試作品を作るようになるでしょう。



▼動作テストはこまめにやりましょう!

当ページの自作メニューの制作でも、少し設定したら動作テスト、少し設定したら動作テストを繰り返しています。

「この設定は完璧だ!」と思っていても、一応動作テストは行った方が良いでしょう。

様々な条件で何度も動作テストを行う事で、意外な所で不具合が見つかる事があります。

◆不具合の発見例1

当ページを制作している時の自作メニューの起動は、Aキーを押して起動していました。

ほぼ当ページが完成した所で、Aキーによる自作メニューの起動ではなく、
マップイベントを決定キーで調べて自作メニューを起動する方法を試しました。

するとマップイベントに向かって決定キーを押した事で、
自作メニューの項目[0]も決定してしまう不具合が発生しました。

この不具合が発生したため、セルフ変数[12:起動時キー押し禁止]を設定する事になりました。

◆不具合の発見例2

オプション設定を行う自作メニューにて、[決定][キャンセル][初期化]のボタンがあった時の不具合です。
[決定][キャンセル]を実行すると設定画面が閉じる仕様でした。

[1]【正常】設定画面を開く→ 設定変更 → [決定]
[2]【正常】設定画面を開く→ 設定変更 → [キャンセル]
[3]【正常】設定画面を開く→ 設定変更 → [初期化][決定]
[4]【正常】設定画面を開く→ 設定変更 → [初期化][キャンセル]
[5]【正常】設定画面を開く→ 設定変更 → [決定] → 設定画面を開く→ 設定変更 → [決定]
[6]【正常】設定画面を開く→ 設定変更 → [決定] → 設定画面を開く→ 設定変更 → [キャンセル]
[7]【正常】設定画面を開く→ 設定変更 → [決定] → 設定画面を開く→ [初期化][決定]
[8]【異常】設定画面を開く→ 設定変更 → [決定] → 設定画面を開く→ [初期化][キャンセル]

[1〜7]の操作方法では問題なかったのですが、
[8]の操作方法では、2回目の設定画面で[キャンセル]を実行しているので、
本来は1回目の「設定変更 → [決定]」の状態に戻るはずですが、
2回目の設定画面の表示で[初期化]を押したせいで、
1回目の「設定変更 → [決定]」まで初期化してしまいました。
このようにボタンを押す順番によっても不具合が発生する事があるため、
様々なパターンで動作テストを行う必要があります。


▲トップへ戻る▲



◎関連ページ

◆アイテムの一覧表の自作メニューを作る
◆回転型の自作メニューを作る

◆万能ウィンドウについて
┗◆万能ウィンドウの設定例

YADOT-WOLFトップ  気紛れな空間へ戻る  メール