スクリプト/キーボードでのパスワード入力(履歴ID:64)

最終投稿者:Material 7186 1 mini ikosami 更新:2012/03/18 09:43:24
少し長いですが、これでキーボードでのパスワード入力ができます。

更新履歴
2011/10/31:パスワードの種類を4つ追加。
2011/08/09:パスワードがあっているのに、間違っていると出てくることがあるバグ修正。
2011/08/08:桁数を変えた時にnullが出るバグ修正&その他
2011/01/30:複数のパスワードに対応

showImage(画像ID) #背景がないと、入力した文字が見えないことがあります・・・
deleteAllSprite()
deleteTextAll()
drawCanvas()
hideImage()
stopBGM()

speak("キーボードで入力してください。")
pasu = createArray()

#////////////////////////////////////////
pasu[0] = "0000000006" #パスワード1
pasu[1] = "0000000100" #パスワード2
keta = 10 #パスワードの桁数
pass = 2 #パスワードの数

#///////////////////////////////////////
pasyu = 0#パスワードの種類
#  0=パスワードと同じ数字か調べる
#  1=パスワード以上の数字か調べる(パスワードを1つにしてください。)
#  2=パスワード以下の数字か調べる(パスワードを1つにしてください。)
#  3=パスワードの倍数かどうか調べる
#  4=パスワードの約数かどうか調べる
#  5=(パス1≦入力≦パス2)の数字か調べる(パスワードを2つにしてください。)
#////////////////////////////////////////
loop = true
if pasyu == 1 || pasyu == 2
 if pass == 1
 else
  speak("error\nパスワードの種類が1,2の場合は、パスワードの種類を1つにしてください。")
  loop = false
 end
end

if pasyu == 5
 if pass == 2
 else
  speak("error\nパスワードの種類が5の場合は、パスワードの種類を2つにしてください。")
  loop = false
 end
end

su = 0 #何文字目かを表す変数
#ここから下はキーボードのキーの設定
k = createArray()

k[0] = "0";k[1] = "1";k[2] = "2";k[3] = "3";k[4] = "4"
k[5] = "5";k[6] = "6";k[7] = "7";k[8] = "8";k[9] = "9"
k[10] = "Q";k[11] = "W";k[12] = "E";k[13] = "R"
k[14] = "T";k[15] = "Y";k[16] = "U";k[17] = "I";
k[18] = "O";k[19] = "P";k[20] = "A";k[21] = "S";
k[22] = "D";k[23] = "F";k[24] = "G";k[25] = "H";
k[26] = "J";k[27] = "K";k[28] = "L";k[29] = "Z";
k[30] = "X";k[31] = "C";k[32] = "V";k[33] = "B";
k[34] = "N";k[35] = "M"
if pasyu == 0
ksk = 36
else
kk = createArray()
kk[0] = 0;kk[1] = 1;kk[2] = 2;kk[3] = 3;kk[4] = 4
kk[5] = 5;kk[6] = 6;kk[7] = 7;kk[8] = 8;kk[9] = 9
ksk = 10
end
#キーの設定ここまで

#↓入力箇所の表示
t = createText(250, 250, 400, 200)
ki = createArray()
i = 0
while i < keta
  ki[i] = "-"
  i = i + 1
end
setText(t, ki,"\nキーボードで入力してください。")

startInput()

#ループの開始
while loop
  if hasInput()
    takeInput()
    i = 0
    while i < ksk #すべてのキーを調べる

      if isKeyDown(k[i])
if pasyu == 0
        ki[su] = k[i]
else
        ki[su] = kk[i]
end
        su = su + 1
        setText(t, ki,"\nキーボードで入力してください。")
        if su == keta
          loop = false
        end
      end
      i = i + 1
    end
  end
  waitTime(10)
end
endInput()


deleteTextAll() #表示を消す
#↓入力をひとつの変数に入れる
if pasyu == 0
p = ""
i  = 0
while i < keta
        p = p + ki[i]
        i = i + 1
end
else
p = 0
ix = 1
i  = 1
while i < keta
ix = ix * 10
i = i + 1
end
i = 0
while i < keta
        p = p + (ki[i]*ix)
        ix = ix / 10
        i = i + 1
end
end
        i = 0
answer = false
while i <  pass
K = 0
if pasyu == 0
 if p == pasu[i]
   K = 1
 end
elsif pasyu == 1
 if p >= pasu[i]
   K = 1
 end
elsif pasyu == 2
 if p <= pasu[i]
   K = 1
 end
elsif pasyu == 3
 if p/pasu[i] == floor(p/pasu[i])
   K = 1
speak(i)
 end
elsif pasyu == 4
 if pasu[i]/p == floor(pasu[i]/p)
   K = 1
 end
elsif pasyu == 5
 if  pasu[i] <= p && p <= pasu[i+1]
   K = 1
 end
end
#////////////////////////////////////////////
        if K == 1
                if i == 0
                   #パスワード1に合っていたときの処理
                   answer = true
                elsif i == 1
                   #パスワード2に合っていたときの処理
                   answer = true
                elsif i == 1
                   #パスワード3に合っていたときの処理
                   answer = true
                end
        end
#////////////////////////////////////////////
if pasyu == 5
i = i + 1
end
i = i + 1
end
if !answer
speak("パスワードが違います。\n入力:",p)
end
hideImage()





使用例

開始スクリプト
setVariable("銀行金", 0)
#↓預金上限額の桁数です。10なら9999999999まで。
setVariable("預金上限", 10)


#////////////////前略///////////////////
pasu[0] = getMoney() #所持金
keta = getVariable("預金上限")
pass = 1
pasyu = 2#所持金以下の数字か調べる
#////////////////中略///////////////////
        if K == 1
                if i == 0
                   speak("確かに",p,"円お預かりいたしました。")
                   subMoney(p)#お金を減らす
                   setVariable("銀行金", getVariable("銀行金")+p)
                   answer = true
                end
        end
#////////////////以下略///////////////////