RPGツクール2000/システム【サイトトップへ戻る】
数値入力型パスワード
■岩ゴロのパスワード
(更新:2020/07/05)


ショートカット
■はじめに
■パスワードの値を作る基本
■パスワードが正しいかどうかを判断する基本
■変数の値などをパスワード化
■パスワードシステムを作る
■補足


  
■はじめに

気紛れな空間で公開中の岩ゴロ迷路2のパスワードの構造を紹介します。

少々複雑なイベント処理になるので、完全にパスワードの構造を理解した上でご利用ください。



YADOTで紹介している名前入力型パスワード数値入力型パスワードと大きく異なる点は、
パスワードの中に何らかのスイッチのON/OFFなどの情報を組み込める所です。

例えば、3つのクリアルートがあり、
どのルートをクリアしたのかをパスワードに組み込む事ができます。



このページのパスワードでは、ある程度の複雑なパスワードを作る事ができますが、
ツクールの上級者ならば、パスワードの解析もできます。

必ずしも解析不可能なパスワードと言う訳では無いので、それを踏まえた上でご利用ください。


▲トップへ戻る▲


  
■パスワードの値を作る基本

岩ゴロの2つのパスワードには、
記録などの情報を一緒に組み込んでパスワードを作成しています。

3つのスイッチのON/OFF情報を保存する場合は…
スイッチ0001がONの時には「+1」
スイッチ0002がONの時には「+2」
スイッチ0003がONの時には「+4」
と言った感じに、スイッチがONになっているものに対して、
スイッチごとに割り振った値を加算してパスワードを作成します。



加算する値は「+1」「+2」「+4」「+8」と2倍の値を加算します。

このように2倍の値を加算する事で、
どのスイッチがONになっているのかを判断する事ができます。

例えばスイッチ[0001(+1)]と[0003(+4)]がONの時には、
パスワードの値は「5」になります。


▲トップへ戻る▲


  
■パスワードが正しいかどうかを判断する基本

岩ゴロのパスワードでは、2つのパスワードを適当に入力しても、
パスワードが合わない事が多くあります。

これは2つのパスワードの中に同じ情報を保存しているためであり、
両方が持つ情報が一致しないと「パスワードが正しくない」と判断されます。



例えば、スイッチ[0001]がONの時に…
パスワードAは「+8」、パスワードBは「+32」になる場合、パスワードの入力時に…
パスワードA「0」→パスワードB「0」 →パスワードは正しい(スイッチ[0001]OFF)
パスワードA「8」→パスワードB「32」→パスワードは正しい(スイッチ[0001]ON)

となります。

そのため…
パスワードA「0」→パスワードB「0以外」 →パスワードは正しくない
パスワードA「8」→パスワードB「32以外」→パスワードは正しくない

と言ったように、パスワードAに合わせてパスワードBを入力しないと、
パスワードが正しいとは判断されません。



パスワードの値は、
スイッチがOFFの時にはパスワードAは「+8」、パスワードBは「+0」。
スイッチがONの時にはパスワードAは「+0」、パスワードBは「32」と言ったように、
OFFの時にパスワードの値が設定されるようにする事もできます。

この場合は…
パスワードA「8」→パスワードB「0」 →パスワードは正しい(スイッチ[0001]OFF)
パスワードA「0」→パスワードB「32」→パスワードは正しい(スイッチ[0001]ON)

となります。


▲トップへ戻る▲


  
■変数の値などをパスワード化

所持金や大事なアイテムの所持数など、何らかの数値をパスワードへ組み込む事もできます。

しかし2つのパスワードで保存できる数値はかなり限られてしまいます。

もしもたくさんの数値情報をパスワードで保存する場合は、
それに合わせてたくさんのパスワードを入力する必要があります。



今回は所持金の情報を2つのパスワードへ保存するシステムを作ります。

所持金は6桁の数値で構成されています。

1つのパスワードとして設定できる数値も6桁なので、簡単な方法としては、
所持金の6桁をそのままパスワードの6桁の数値にする方法です。

しかし所持金が「347」でパスワードが「000347」では、
簡単にパスワードの構造が分かってしまい、簡単に所持金を増やしてしまいます。



このような場合は、所持金の数値を位ごとに分散化させると良いでしょう。

もしも所持金が…
987654
の場合は…
476958
と位の位置を変える感じです。



また指定した位の数値に「加算7」を設定し、
10以上になったら「減算10」を実行して、値を変化させる方法もあります。

例えば…
987654
の状態で、十の位「5加算7=12→減算10=2」、万の位「8加算7=15→減算10=5」を処理して…
957624
とする感じです。



2つ目のパスワードBを作る場合は、位の移動位置や加算を行う内容を変える事で、
パスワードAとはパスワードの値が異なるが、
パスワードAと同じ情報を持つパスワードBを作る事ができます。

2つのパスワードが一致する確率は「100万分の1」なので、
適当にパスワードを入力しても、中々パスワードが一致する事はないでしょう。


▲トップへ戻る▲


  
■パスワードシステムを作る

1桁の数値と2つのスイッチの情報を保存した2桁×2個のパスワードを作成します。

スイッチと変数の値によって、以下の表のようにパスワードの値を変化させます。

  ON・数値あり OFF・数値なし
パスワードA パスワードB パスワードA パスワードB
スイッチ0001番 +4     +2
スイッチ0002番 +32     +1
変数の値+8   +8 +16  
変数の値+4 +1     +4
変数の値+2   +16 +8  
変数の値+1 +2     +32



例えば…
スイッチ0001番:ON
スイッチ0002番:OFF
変数の値:6
の場合は、以下のようになります。

  ON・数値あり OFF・数値なし
パスワードA パスワードB パスワードA パスワードB
スイッチ0001番 +4      
スイッチ0002番       +1
変数の値+8     +16  
変数の値+4 +1      
変数の値+2   +16    
変数の値+1       +32

この場合、パスワードAが「21」、パスワードBが「49」になります。



パスワードを表示するイベントを作成します。

■パスワードの表示

◆変数の操作:[0002:パスワードA]代入,0
◆変数の操作:[0003:パスワードB]代入,0
◆条件分岐:スイッチ[0001:スイッチ01]がON
 ◆変数の操作:[0002:パスワードA]加算,4
 ◆
:それ以外の場合<スイッチ[0001]がOFF
 ◆変数の操作:[0003:パスワードB]加算,2
 ◆
:分岐終了
◆条件分岐:スイッチ[0002:スイッチ02]がON
 ◆変数の操作:[0002:パスワードA]加算,32
 ◆
:それ以外の場合<スイッチ[0002]がOFF
 ◆変数の操作:[0003:パスワードB]加算,1
 ◆
:分岐終了
◆変数の操作:[0004:数値のコピー]代入,変数[0001]の値
◆条件分岐:変数[0004:数値のコピー]が8以上
 ◆変数の操作:[0004:数値のコピー]減算,8
 ◆変数の操作:[0003:パスワードB]加算,8
 ◆
:それ以外の場合<変数[0004]が8未満
 ◆変数の操作:[0002:パスワードA]加算,16
 ◆
:分岐終了
◆条件分岐:変数[0004:数値のコピー]が4以上
 ◆変数の操作:[0004:数値のコピー]減算,4
 ◆変数の操作:[0002:パスワードA]加算,1
 ◆
:それ以外の場合<変数[0004]が4未満
 ◆変数の操作:[0003:パスワードB]加算,4
 ◆
:分岐終了
◆条件分岐:変数[0004:数値のコピー]が2以上
 ◆変数の操作:[0004:数値のコピー]減算,2
 ◆変数の操作:[0003:パスワードB]加算,16
 ◆
:それ以外の場合<変数[0004]が2未満
 ◆変数の操作:[0002:パスワードA]加算,8
 ◆
:分岐終了
◆条件分岐:変数[0004:数値のコピー]が1以上
 ◆変数の操作:[0002:パスワードA]加算,2
 ◆
:それ以外の場合<変数[0004]が0
 ◆変数の操作:[0003:パスワードB]加算,32
 ◆
:分岐終了
◆条件分岐:変数[0002:パスワードA]が10以上
 ◆条件分岐:変数[0003:パスワードB]が10以上
  ◆文章:パスワードA:\V[2]
  :  :パスワードB:\V[3]
  ◆
 :それ以外の場合<変数[0003]が9以下
  ◆文章:パスワードA:\V[2]
  :  :パスワードB:0\V[3]
  ◆
 :分岐終了
 ◆
:それ以外の場合<変数[0002]が9以下
 ◆条件分岐:変数[0003:パスワードB]が10以上
  ◆文章:パスワードA:0\V[2]
  :  :パスワードB:\V[3]
  ◆
 :それ以外の場合<変数[0003]が9以下
  ◆文章:パスワードA:0\V[2]
  :  :パスワードB:0\V[3]
  ◆
 :分岐終了
 ◆
:分岐終了



パスワードを入力するイベントを作成します。

2つのパスワードが一致しているかどうか確認は、
パスワードAの情報を基にパスワードBのパスワード数値を作成して確認します。

2つのパスワードが合っていた場合は、
パスワードBの情報を基に数値やスイッチの設定を行います。

■パスワードの表示

◆文章:パスワードAを入力してください。
◆数値入力の処理:2桁,[0002:パスワードA]
◆文章:パスワードBを入力してください。
◆数値入力の処理:2桁,[0003:パスワードB]
◆条件分岐:変数[0002:パスワードA]が64以上<64以上にはならないので、パスワード不一致
 ◆文章:パスワードが一致しません。
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0003:パスワードB]が64以上<64以上にはならないので、パスワード不一致
 ◆文章:パスワードが一致しません。
 ◆イベント処理の中断
 ◆
:分岐終了
◆注釈:パスワードAの情報を変数の値に変換します
◆変数の操作:[0005:一致確認]代入,0
◆条件分岐:変数[0002:パスワードA]が32以上
 ◆変数の操作:[0002:パスワードA]減算,32
 ◆
:それ以外の場合<変数[0002]が32未満
 ◆変数の操作:[0005:一致確認]加算,1
 ◆
:分岐終了
◆条件分岐:変数[0002:パスワードA]が16以上
 ◆変数の操作:[0002:パスワードA]減算,16
 ◆
:それ以外の場合<変数[0002]が16未満
 ◆変数の操作:[0005:一致確認]加算,8
 ◆
:分岐終了
◆条件分岐:変数[0002:パスワードA]が8以上
 ◆変数の操作:[0002:パスワードA]減算,8
 ◆
:それ以外の場合<変数[0002]が8未満
 ◆変数の操作:[0005:一致確認]加算,16
 ◆
:分岐終了
◆条件分岐:変数[0002:パスワードA]が4以上
 ◆変数の操作:[0002:パスワードA]減算,4
 ◆
:それ以外の場合<変数[0002]が4未満
 ◆変数の操作:[0005:一致確認]加算,2
 ◆
:分岐終了
◆条件分岐:変数[0002:パスワードA]が2以上
 ◆変数の操作:[0002:パスワードA]減算,2
 ◆
:それ以外の場合<変数[0002]が2未満
 ◆変数の操作:[0005:一致確認]加算,32
 ◆
:分岐終了
◆条件分岐:変数[0002:パスワードA]が0
 ◆変数の操作:[0005:一致確認]加算,4
 ◆
:分岐終了
◆注釈:2つのパスワードの情報が一致するかどうかを調べる
◆条件分岐:変数[0005:一致確認]がV[0003]以外
 ◆文章:パスワードが一致しません。
 ◆イベント処理の中断
 ◆
:分岐終了
◆注釈:パスワードBの情報を基にスイッチと変数の設定を変える
◆スイッチの操作:[0001:スイッチ01]をOFFにする
◆スイッチの操作:[0002:スイッチ02]をOFFにする
◆変数の操作:[0001:数値]代入,0
◆条件分岐:変数[0003:パスワードB]が32以上
 ◆変数の操作:[0003:パスワードB]減算,32
 ◆
:それ以外の場合<変数[0003]が32未満
 ◆変数の操作:[0001:数値]加算,1
 ◆
:分岐終了
◆条件分岐:変数[0003:パスワードB]が16以上
 ◆変数の操作:[0003:パスワードB]減算,16
 ◆変数の操作:[0001:数値]加算,2
 ◆
:分岐終了
◆条件分岐:変数[0003:パスワードB]が8以上
 ◆変数の操作:[0003:パスワードB]減算,8
 ◆変数の操作:[0001:数値]加算,8
 ◆
:分岐終了
◆条件分岐:変数[0003:パスワードB]が4以上
 ◆変数の操作:[0003:パスワードB]減算,4
 ◆
:それ以外の場合<変数[0003]が4未満
 ◆変数の操作:[0001:数値]加算,4
 ◆
:分岐終了
◆条件分岐:変数[0003:パスワードB]が2以上
 ◆変数の操作:[0003:パスワードB]減算,2
 ◆
:それ以外の場合<変数[0003]が2未満
 ◆スイッチの操作:[0001:スイッチ01]をONにする
 ◆
:分岐終了
◆条件分岐:変数[0003:パスワードB]が0
 ◆スイッチの操作:[0002:スイッチ02]をONにする
 ◆
:分岐終了


以上で設定完了です。


▲トップへ戻る▲


  
■補足

今回はイベントコマンド:数値入力の処理を使ってパスワードを入力していますが、
例えば自作メニューでアルファベットのパスワード入力ができるようにすれば、
かなりの情報量をパスワードに保存する事ができます。


▲トップへ戻る▲



◎関連ページ

●数値入力型パスワード
┗○岩ゴロのパスワード

●名前入力型パスワード
●ダイヤル式の南京錠

●イベントコマンド:数値入力の処理
●イベントコマンド:変数の操作

YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール