WOLF RPGエディター(ウディタ)/演出・システム【サイトトップへ戻る】
■地面の色を変えて図形を作ってパスワードを入力
(更新:2023/03/19)


地面の色を変えて、特定の図形を作ってパスワードを入力する方法を紹介します。



全体的にイベント設定が難しく、あまりウディタ初心者向けの設定ではありません。


ショートカット
■仕様の確認
■コモンイベントを設定
■途中に未使用のイベントIDが無い事を確認
■図形用のマップイベントを設定
■正解の図形を教えるマップイベントを設定
■正解の図形を登録する

パスワードイベントの基礎情報は別ページに記載しています。
【パスワードイベントの基礎のページを開く】


  
■仕様の確認

今回は5×5マス(合計25マス)に図形用のマップイベントを敷き詰めて、
そのマップイベントの上で決定キーを押すと、地面の色が変わるように設定します。

※「プレイヤー接触」にする事で、決定キーを押さずに歩くだけで色が変わるように設定する事もできます。



0.5マスずれた状態では複数のマスで同時に色が変わってしまうので、マスの中央にいる時のみ色が変わるように設定します。

※0.5マスのずれを調べる設定を削除する事で、0.5マスずれで決定キーを押し、複数の地面の色を同時に変える事もできます。



図形用のマップイベントを実行するごとに、2種類のグラフィックが交互に変わるように設定します。

2種類のグラフィックは、マップイベントの1ページ目、2ページ目に設定し、
マップイベントのセルフ変数[0]の値を「0→1」「1→0」と変えて、ページを切り替えて表示を変えます。



今回は25マスにマップイベントを設定するので、組み合わせパターンは「約3千万通り(2の25乗=33554432)」になります。

なお、図形用のマップイベントの数には制限が無いため、10×10マス(全100マス)の設定も可能です。



マップイベントを調べたら、コモンイベント「図形パスワード判定」を呼び出して、
マップイベントのセルフ変数[0]の値変更や地面の図形が完成しているかどうかを判定する処理を実行します。

図形の判定は、まず全ての図形用のマップイベントのセルフ変数[0]の情報を文字列変数に取得し、
「0110010101100001111001110」などと「0」か「1」の情報を並べて設定します。

「10110」の文字列のままだと、文字数が多くて、イベント設定がやりづらくなるので、
「10110」などの5マス分の数値を1文字の半角アルファベットに変換して処理します。
仮に「0110010101100001111001110」(25マス分)の場合は、「mvqEo」などとアルファベット5文字になります。

この変換処理は「10110」などの5文字ごとに変換されるため、16マスや24マスなどの5で割り切れないマス数の場合は、
後ろに「0」を足して、5の倍数にしてからアルファベットの変換を行います。

変換処理が終わったら、最後に正解のアルファベットの文字列と比べて、正解の図形になっているかどうかを判定します。

正解の図形になっている場合は、通常変数[1:図形パスワード完成]を「1」にします。

なお、正解の図形になった時には、デバッグウィンドウに「【現在の状態が正解の図形】」が表示されます。



コモンイベントの処理を円滑に行うために、マップイベントのイベントIDは連番で設定する必要があります。



コモンイベントの360行目以降に正解の図形を表示する処理があります。

使用するピクチャ番号の設定などは、360行目以降にあります。

なお、正解を表示する処理を自作する場合は、360行目以降の設定は無視してください。


▲トップへ戻る▲


  
■コモンイベントを設定

地面に作成した図形が正しいかどうかを判定するためのコモンイベントを設定します。



通常変数
番号 名前 使用内容
1 図形パスワード完成 完成したら「1」を設定。

セルフ変数
番号 名前 使用内容
0 処理方法 処理方法を選択します。
[0]判定 図形用のマップイベントを調べた時に呼び出し、
正しい図形になっているのかどうかを判定。
[1]正解表示 正解となる図形をピクチャで表示。
1 正解表示X 正解を表示するX中心位置をピクセル単位で設定。
2 正解表示Y 正解を表示するY中心位置をピクセル単位で設定。
5 【設定】正解の文字列 正解となるアルファベットの文字列を設定。
6 図形の文字列 図形用のマップイベントの現在の設定を文字列(01010)で保存。
7 変換文字列 アルファベットに変換した文字列を設定。
8 文字切り出し用 1文字を切り出す時に使用。
10 【設定】判定結果の変数呼び出し値 判定結果を設定する変数を変数呼び出し値で設定。
【変数呼び出し値の説明を見る】
初期設定は「2000001」(通常変数[1]の変数呼び出し値)。
11 【設定】イベントID最小値 図形用のマップイベントの最小イベントIDを設定。
イベントIDが「5〜29」の場合は「5」を設定。
12 【設定】マップイベントの総数 図形用のマップイベントの総数を設定。
14 主人公X座標 主人公の位置が0.5マスずれているかどうかを確認する時に使用。
15 主人公Y座標 主人公の位置が0.5マスずれているかどうかを確認する時に使用。
16 変数呼び出し値 マップイベントのセルフ変数の入出力で使用。
17 一時保存 数値の一時保存(計算など)で使用。
20 【設定】ピクチャ最小番号 正解を表示するピクチャの最小ピクチャ番号を設定。
初期設定の「1000」の場合は、ピクチャ番号[1000〜1024]を使用。
21 【設定】横1列のマス数 横1列のマス数を設定。
22 【設定】1マスのサイズ 正解を表示する時の1マスの一辺の長さ(ピクセル値)を設定。
30 ピクチャ番号 正解を表示するピクチャのピクチャ番号を設定。
31 縦1列のマス数 縦のマス数を「セルフ[12]÷セルフ[21]」で算出。
32 X開始位置 正解の表示の左端のX表示位置を設定。
33 正解のピクチャを表示するX位置を設定。
34 正解のピクチャを表示するY位置を設定。

【変数の一覧を別ウィンドウで表示】



【イベントコード表示】【コモン出力ファイル】

■コモンイベント「図形パスワード判定」

起動条件:呼び出しのみ

入力の数 / 結果を返す
設定 名前 初期値 特殊指定
数値1 処理方法 0 [0]判定
[1]正解表示
数値2 正解表示X 1100000  
数値3 正解表示Y 1100001  

▼ ■■■■■■■■■■■■■■■■■■■■■■■■ 初期設定
▼ 正解となる図形の文字列を設定

■文字列操作:CSelf5[【設定】正解の文字列] = "orFrr"
▼ ■■■■■■■■■■■■
▼ 判定結果を保存する変数を変数呼び出し値で設定

■変数操作: CSelf10[【設定】判定結果の変数呼び出し値] = 2000001 + 0
▼ ■■■■■■■■■■■■
▼ 図形用のマップイベントのイベントIDの最小値を設定

■変数操作: CSelf11[【設定】イベントID最小値] = 0 + 0
▼ ■■■■■■■■■■■■
▼ 図形用のマップイベントの総数を設定

■変数操作: CSelf12[【設定】マップイベントの総数] = 25 + 0
▼ ■■■■■■■■■■■■■■■■■■■■■■■■
●ラベル「処理\cself[0]」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
▼ ■■■■■■■■■■■■■■■■■■■■■■■■
▼ 0.5マスずれているかどうかを判定(ずれている場合は処理終了)

■変数操作+: CSelf14[主人公X座標] = 主人公 の X座標(精密)
■変数操作+: CSelf15[主人公Y座標] = 主人公 の Y座標(精密)
■変数操作: CSelf14[主人公X座標]〜CSelf15[主人公Y座標] %= 2 + 0
■条件分岐(変数): 【1】 CSelf14[主人公X座標] が 1 と同じ 【2】 CSelf15[主人公Y座標] が 1 と同じ
-◇分岐: 【1】 [ CSelf14[主人公X座標] が 1 と同じ ]の場合↓
|■イベント処理中断
|■
-◇分岐: 【2】 [ CSelf15[主人公Y座標] が 1 と同じ ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■
▼ このコモンイベントを実行したマップイベントのセルフ変数[0]を変更

■変数操作: CSelf16[変数呼び出し値] = 1100000 + 0
■変数操作: V[CSelf16[変数呼び出し値]] += 1 + 0
■変数操作: V[CSelf16[変数呼び出し値]] %= 2 + 0
▼ ■■■■■■■■■■■■
▼ マップイベントのセルフ変数[0]の値を集計

■文字列操作:CSelf6[図形の文字列] = ""
■変数操作: CSelf16[変数呼び出し値] = CSelf11[【設定】イベントID最小値] * 10
■変数操作: CSelf16[変数呼び出し値] += 1000000 + 0
■回数付きループ [ CSelf12[【設定】マップイベントの総数] ]回
|■変数操作: CSelf17[一時保存] = V[CSelf16[変数呼び出し値]] + 0
|■文字列操作:CSelf6[図形の文字列] += "\cself[17]"
|■変数操作: CSelf16[変数呼び出し値] += 10 + 0
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■■■
▼ 文字数が5の倍数になるように「0」を追加

■変数操作: CSelf17[一時保存] = CSelf12[【設定】マップイベントの総数] % 5
■条件分岐(変数): 【1】 CSelf17[一時保存] が 1 と同じ
         【2】 CSelf17[一時保存] が 2 と同じ
         【3】 CSelf17[一時保存] が 3 と同じ
-◇分岐: 【1】 [ CSelf17[一時保存] が 1 と同じ ]の場合↓
|■文字列操作:CSelf6[図形の文字列] += "0000"
|■
-◇分岐: 【2】 [ CSelf17[一時保存] が 2 と同じ ]の場合↓
|■文字列操作:CSelf6[図形の文字列] += "000"
|■
-◇分岐: 【3】 [ CSelf17[一時保存] が 3 と同じ ]の場合↓
|■文字列操作:CSelf6[図形の文字列] += "00"
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf17[一時保存] が 4 と同じ
-◇分岐: 【1】 [ CSelf17[一時保存] が 4 と同じ ]の場合↓
|■文字列操作:CSelf6[図形の文字列] += "0"
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■
▼ 集計データを半角アルファベットに変換

■文字列操作:CSelf7[変換文字列] = ""
■ループ開始
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "" と同じ
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "" と同じ ]の場合↓
||■ループ中断
||■
|◇分岐終了◇
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "00000" が先頭にある
          【2】 CSelf6[図形の文字列]が "00001" が先頭にある
          【3】 CSelf6[図形の文字列]が "00010" が先頭にある
          【4】 CSelf6[図形の文字列]が "00011" が先頭にある
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "00000" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "a"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【2】 [ CSelf6[図形の文字列] "00001" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "b"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【3】 [ CSelf6[図形の文字列] "00010" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "c"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【4】 [ CSelf6[図形の文字列] "00011" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "d"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|◇分岐終了◇
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "00100" が先頭にある
          【2】 CSelf6[図形の文字列]が "00101" が先頭にある
          【3】 CSelf6[図形の文字列]が "00110" が先頭にある
          【4】 CSelf6[図形の文字列]が "00111" が先頭にある
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "00100" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "e"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【2】 [ CSelf6[図形の文字列] "00101" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "f"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【3】 [ CSelf6[図形の文字列] "00110" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "g"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【4】 [ CSelf6[図形の文字列] "00111" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "h"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|◇分岐終了◇
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "01000" が先頭にある
          【2】 CSelf6[図形の文字列]が "01001" が先頭にある
          【3】 CSelf6[図形の文字列]が "01010" が先頭にある
          【4】 CSelf6[図形の文字列]が "01011" が先頭にある
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "01000" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "i"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【2】 [ CSelf6[図形の文字列] "01001" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "j"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【3】 [ CSelf6[図形の文字列] "01010" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "k"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【4】 [ CSelf6[図形の文字列] "01011" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "l"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|◇分岐終了◇
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "01100" が先頭にある
          【2】 CSelf6[図形の文字列]が "01101" が先頭にある
          【3】 CSelf6[図形の文字列]が "01110" が先頭にある
          【4】 CSelf6[図形の文字列]が "01111" が先頭にある
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "01100" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "m"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【2】 [ CSelf6[図形の文字列] "01101" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "n"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【3】 [ CSelf6[図形の文字列] "01110" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "o"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【4】 [ CSelf6[図形の文字列] "01111" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "p"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|◇分岐終了◇
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "10000" が先頭にある
          【2】 CSelf6[図形の文字列]が "10001" が先頭にある
          【3】 CSelf6[図形の文字列]が "10010" が先頭にある
          【4】 CSelf6[図形の文字列]が "10011" が先頭にある
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "10000" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "q"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【2】 [ CSelf6[図形の文字列] "10001" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "r"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【3】 [ CSelf6[図形の文字列] "10010" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "s"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【4】 [ CSelf6[図形の文字列] "10011" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "t"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|◇分岐終了◇
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "10100" が先頭にある
          【2】 CSelf6[図形の文字列]が "10101" が先頭にある
          【3】 CSelf6[図形の文字列]が "10110" が先頭にある
          【4】 CSelf6[図形の文字列]が "10111" が先頭にある
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "10100" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "u"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【2】 [ CSelf6[図形の文字列] "10101" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "v"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【3】 [ CSelf6[図形の文字列] "10110" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "w"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【4】 [ CSelf6[図形の文字列] "10111" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "x"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|◇分岐終了◇
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "11000" が先頭にある
          【2】 CSelf6[図形の文字列]が "11001" が先頭にある
          【3】 CSelf6[図形の文字列]が "11010" が先頭にある
          【4】 CSelf6[図形の文字列]が "11011" が先頭にある
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "11000" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "y"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【2】 [ CSelf6[図形の文字列] "11001" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "z"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【3】 [ CSelf6[図形の文字列] "11010" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "A"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【4】 [ CSelf6[図形の文字列] "11011" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "B"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|◇分岐終了◇
|■条件分岐(文字): 【1】 CSelf6[図形の文字列]が "11100" が先頭にある
          【2】 CSelf6[図形の文字列]が "11101" が先頭にある
          【3】 CSelf6[図形の文字列]が "11110" が先頭にある
          【4】 CSelf6[図形の文字列]が "11111" が先頭にある
|-◇分岐: 【1】 [ CSelf6[図形の文字列] "11100" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "C"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【2】 [ CSelf6[図形の文字列] "11101" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "D"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【3】 [ CSelf6[図形の文字列] "11110" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "E"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|-◇分岐: 【4】 [ CSelf6[図形の文字列] "11111" が先頭にある ]の場合↓
||■文字列操作:CSelf7[変換文字列] += "F"
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf6[図形の文字列]
||■
|◇分岐終了◇
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■■■
▼ デバッグウィンドウに現在の図形の文字列を表示(正解文字列の設定用)

■デバッグ文:▼現在の図形の文字列\n\cself[7]\n━━━━━━━━━━━━━━━━━━━━
▼ ■■■■■■■■■■■■■■■■■■■■■■■■ 図形判定
■条件分岐(文字): 【1】 CSelf7[変換文字列]が CSelf5[【設定】正解の文字列] と同じ
-◇分岐: 【1】 [ CSelf7[変換文字列] CSelf5[【設定】正解の文字列] と同じ ]の場合↓
|■デバッグ文:【現在の状態が正解の図形】\n━━━━━━━━━━━━━━━━━━━━
|■変数操作: V1[図形パスワード完成] = 1 + 0
|■
-◇上記以外
|■変数操作: V1[図形パスワード完成] = 0 + 0
|■
◇分岐終了◇
■イベント処理中断
■チェックポイント■■■■■■■■■■■■■■■■■■■■■■■■
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 正解を表示する処理
●ラベル地点「処理1」 <<<<<<<<<<<<<<<<<<<<<<<<★
▼ ■■■■■■■■■■■■■■■■■■■■■■■■ 初期設定
▼ 正解表示のピクチャ最小番号(「1000」で25マスの場合は1000〜1024を使用)

■変数操作: CSelf20[【設定】ピクチャ最小番号] = 1000 + 0
▼ ■■■■■■■■■■■■
▼ 横1列のマスの数を設定

■変数操作: CSelf21[【設定】横1列のマス数] = 5 + 0
▼ ■■■■■■■■■■■■
▼ 1マスの表示サイズを設定

■変数操作: CSelf22[【設定】1マスのサイズ] = 10 + 0
▼ ■■■■■■■■■■■■■■■■■■■■■■■■
■文字列操作:CSelf7[変換文字列] = CSelf5[【設定】正解の文字列]
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "a" → "00000"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "b" → "00001"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "c" → "00010"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "d" → "00011"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "e" → "00100"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "f" → "00101"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "g" → "00110"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "h" → "00111"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "i" → "01000"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "j" → "01001"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "k" → "01010"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "l" → "01011"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "m" → "01100"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "n" → "01101"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "o" → "01110"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "p" → "01111"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "q" → "10000"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "r" → "10001"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "s" → "10010"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "t" → "10011"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "u" → "10100"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "v" → "10101"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "w" → "10110"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "x" → "10111"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "y" → "11000"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "z" → "11001"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "A" → "11010"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "B" → "11011"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "C" → "11100"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "D" → "11101"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "E" → "11110"
■文字列操作:CSelf7[変換文字列] =<から文字列を置換> "F" → "11111"
▼ ■■■■■■■■■■■■■■■■■■■■■■■■
■変数操作: CSelf30[ピクチャ番号] = CSelf20[【設定】ピクチャ最小番号] - 1
■変数操作: CSelf31[縦1列のマス数] = CSelf12[【設定】マップイベントの総数] / CSelf21[【設定】横1列のマス数]
■変数操作: CSelf32[X開始位置]〜CSelf33[X] = CSelf22[【設定】1マスのサイズ] * CSelf21[【設定】横1列のマス数]
■変数操作: CSelf34[Y] = CSelf22[【設定】1マスのサイズ] * CSelf31[縦1列のマス数]
■変数操作: CSelf32[X開始位置]〜CSelf34[Y] /= -2 + 0
■変数操作: CSelf32[X開始位置]〜CSelf33[X] += CSelf1[正解表示X] + 0
■変数操作: CSelf34[Y] += CSelf2[正解表示Y] + 0
■回数付きループ [ CSelf31[縦1列のマス数] ]回
|■回数付きループ [ CSelf21[【設定】横1列のマス数] ]回
||■変数操作: CSelf30[ピクチャ番号] += 1 + 0
||■文字列操作:CSelf8[文字切り出し用] =<1文字切出> CSelf7[変換文字列]
||■条件分岐(文字): 【1】 CSelf8[文字切り出し用]が "0" と同じ
||-◇分岐: 【1】 [ CSelf8[文字切り出し用] "0" と同じ ]の場合↓
|||■ピクチャ表示:CSelf30[ピクチャ番号] [左上]ウィンドウ「<SQUARE>」
        サイズ[CSelf22[【設定】1マスのサイズ],CSelf22[【設定】1マスのサイズ]] X:CSelf33[X]
        Y:CSelf34[Y] / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0]
|||■
||-◇上記以外
|||■ピクチャ表示:CSelf30[ピクチャ番号] [左上]ウィンドウ「<SQUARE>」
        サイズ[CSelf22[【設定】1マスのサイズ],CSelf22[【設定】1マスのサイズ]] X:CSelf33[X]
        Y:CSelf34[Y] / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|||■
||◇分岐終了◇
||■変数操作: CSelf33[X] += CSelf22[【設定】1マスのサイズ] + 0
||■
|◇ループここまで◇◇
|■変数操作: CSelf33[X] = CSelf32[X開始位置] + 0
|■変数操作: CSelf34[Y] += CSelf22[【設定】1マスのサイズ] + 0
|■
◇ループここまで◇◇
■キー入力:CSelf17[一時保存][入力待ち] 決定(10) キャンセル(11)
■ピクチャ消去:CSelf20[【設定】ピクチャ最小番号] 〜 CSelf30[ピクチャ番号] / 0(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■途中に未使用のイベントIDが無い事を確認

図形用のマップイベントを設定する前に、マップ内にあるマップイベントのイベントIDを確認してください。



下図のようにイベントIDの番号が揃っていれば問題ありません。





しかし下図のように途中に未使用のイベントIDがある場合は、途中にある未使用のイベントIDを無くす作業が必要になります。





イベントIDの小さいマップイベントから順に「右クリック→イベント切り取り(クリック→[X]キーでも可能)」を実行し、
ずぐに同じマスで「右クリック→イベント貼り付け(クリック→[V]キーでも可能)」を実行してください。


この「切り取り→貼り付け」の作業によって、貼り付けた時に未使用だったイベントIDが優先的に使われるため、
途中にあった未使用のイベントIDを無くす事ができます。

▼作業後の状態




★注意点

イベントIDを変えた場合、イベントIDを変えたマップイベントのセルフ変数を他のマップイベントが操作していたり、
他のマップイベントがイベントコマンド【動作指定】で動かしている場合は、
上記のイベントIDを並び替え作業を行ったあとに、変更したイベントIDに合わせてイベント設定を修正する必要があります。


▲トップへ戻る▲


  
■図形用のマップイベントを設定

図形用のマップイベントを設定します。



マップイベントは2ページ構成で設定し、それぞれのページで異なる画像を設定します。

設定例では、以下のタイルセットにある画像を使用します。





全てのマップイベントで同じ画像設定を行うと、初期状態は全て同じ色で表示されます。

しかしいくつかのマップイベントで、1ページ目に設定する画像を2ページ目に、
2ページ目に設定する画像を1ページ目に設定すると、初期状態はまだら模様になります。

▼初期状態の表示例
画像設定が全て同じ いくつかの画像設定を逆に設定



▼1ページ目


▼2ページ目


【イベントコード表示(2ページとも同じ内容です)】

■マップイベント「図形パスワード」

▼1ページ目
グラフィック:自由に設定(キャラチップでも設定可能)
起動条件:決定キーで実行(歩くだけで色が変わる場合は「プレイヤー接触」を設定)
起動条件変数:なし
すり抜け:チェックを付ける
待機時アニメ:チェックを外す
方向固定:チェックを付ける
影グラフィック番号:[1]影なし

■イベントの挿入[名]: ["図形パスワード判定"] <コモンEv 215> / 0:判定 / このEvのセルフ変数0 / このEvのセルフ変数1




▼2ページ目
グラフィック:自由に設定(キャラチップでも設定可能)
起動条件:決定キーで実行(歩くだけで色が変わる場合は「プレイヤー接触」を設定)
起動条件変数:Self0:セルフ変数0が 1 と同じ
すり抜け:チェックを付ける
待機時アニメ:チェックを外す
方向固定:チェックを付ける
影グラフィック番号:[1]影なし

■イベントの挿入[名]: ["図形パスワード判定"] <コモンEv 215> / 0:判定 / このEvのセルフ変数0 / このEvのセルフ変数1

セルフ変数[0]の値を変える処理はコモンイベントの中で処理しているので、
このマップイベント「図形パスワード」の中にセルフ変数[0]を操作する設定は必要ありません。



マップイベント「図形パスワード」を1個を作成したら、
あとは次のマスで「右クリック→イベント貼り付け(クリック→[V]キーでも可能)」で設定していけば、
簡単に設定する事ができます。



設定は必ず左上から順番に設定してください。



左上から順番にイベントIDが並んでいないと、正解を表示する時に異なる図形を表示してしまいます。


▲トップへ戻る▲


  
■正解の図形を教えるマップイベントを設定

正解となる図形を教えてくれるマップイベントを設定します。







【イベントコード表示】

■マップイベント「情報ネコ」

起動条件:決定キーで実行
起動条件変数:なし

■変数操作+: このEvのセルフ変数0 = このマップイベント の 画面X座標
■変数操作+: このEvのセルフ変数1 = このマップイベント の 画面Y座標
■変数操作: このEvのセルフ変数1 -= 50 + 0
■イベントの挿入[名]: ["図形パスワード判定"] <コモンEv 215> / 1:正解表示 / このEvのセルフ変数0 / このEvのセルフ変数1


▲トップへ戻る▲


  
■正解の図形を登録する

テストプレイを実行して、図形を作成してください。

図形を作成するとデバッグウィンドウに現在の図形の文字列が表示されます。





正解の図形ができましたら、
デバッグウィンドウのアルファベットの文字列の上で「ダブルクリック→右クリック→コピー」を実行してください。





コモンイベント「図形パスワード判定」2行目にある…
■文字列操作:CSelf5[【設定】正解の文字列] = "orFrr"
にコピーした文字列を貼り付けてください




以上で設定完了です。


▲トップへ戻る▲



◎関連ページ

◆パスワードイベントの基礎
┣◆[選択肢]を使ってパスワードを入力
┣◆[キーボード入力]を使ってパスワードを入力
┣◆[キー入力]を使ってパスワードを入力
┣◆オリジナルの入力画面でパスワードを入力
┣◆地面の色を変えて図形を作ってパスワードを入力
┣◆正しいパスワードを聞かないと扉が開かない(数字入力タイプ)
┗◆正しいパスワードを聞かないと扉が開かない(文字入力タイプ)

◆イベントコマンド【文字列操作】

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