キーボードでのパスワード入力についての質問です><(質問掲示板

投稿: Material 110912 1 mini アイネ・レグルス 投稿:2012/07/04 23:18:04(最新:2012/07/05 01:01:05)
コチラの記事を参考にさせて頂き、パスワードが合っているとゲームクリアできるようにし、パスワードが合っていないとゲームオーバーになるというスクリプトをやろうと思っているのですが、一体どこに[goEnding()]と[goBadEnding()]を入力すれば上手く作動するのでしょうか?

ちなみに、色々と試してみたのですが、パスワードが間近っていてもゲームクリアできたり、パスワードが合っていてもゲームオーバーになったりしてしまいました…

かなり難しい内容ですので、無理な場合は諦めますが、もし方法があれば教えて頂けると幸いです。

ちなみに、ゲーム形式はノベルゲームです。

それでは、よろしくお願い致します。


コメントする

コメントするには、ログインする必要があります。

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2012/07/04 23:36, 履歴)
クリアできる状態かどうかの
フラグ変数を用意

パスワード○があっていたときの処理で
フラグ変数を操作

スクリプトの最後でフラグ変数の状態によって
クリアかゲームオーバーを分岐
Material 110912 1 mini アイネ・レグルス(投稿日:2012/07/05 00:03, 履歴)
ありがとうございます。

しかし、フラグの用意はできたものの…

#////////////////////////////////////////////
if K == 1
if i == 0
#パスワード1に合っていたときの処理
answer = true
elsif i == 1
#パスワード2に合っていたときの処理
answer = true
elsif i == 1
#パスワード3に合っていたときの処理
answer = true
end
end


if getFlag("A")
goEnding()
#////////////////////////////////////////////
if pasyu == 5
i = i + 1
end
i = i + 1
end
if !answer
speak("パスワードが違います。\n入力:",p)
end
hideImage()

goBadEnding()
setFlag("A", true)
end




こんな書き方をしたら、パスは合っているはずなのにゲームオーバーに…

Cdv30200 aoi icon mini aoihikawa(投稿日:2012/07/05 00:29, 履歴)
スクリプトを記載するときは
{{{code

}}}

を使ってもらえると分かりやすくなります


さて、整理しなおしたものを拝見すると
  #//////////////////////////////////////////// 
  if K == 1 
    if i == 0 
      #パスワード1に合っていたときの処理 
      answer = true 
    elsif i == 1 
      #パスワード2に合っていたときの処理 
      answer = true 
    elsif i == 1 
      #パスワード3に合っていたときの処理 
      answer = true 
    end 
  end 


  if getFlag("A") 
    goEnding() 
    #//////////////////////////////////////////// 
    if pasyu == 5 
      i = i + 1 
    end 
    i = i + 1 
  end 

  if !answer 
    speak("パスワードが違います。\n入力:",p) 
  end 

  hideImage() 

  goBadEnding() 
  setFlag("A", true) 

end 

まず、スクリプトは上から順に処理されます


パスワードがあっていたときの処理の中で
フラグ変数「answer」が変更されていますね

次に、if文でフラグ変数「"A"」の状態を元に
処理が分岐されています

フラグ変数「"A"」は
ここまで何も設定されていないので
スルーされてif文を抜けます
つまり、goEnding関数は絶対に処理されない
流れになっているわけです


次にフラグ変数「answer」の状態を元に
処理が分岐されています

ここでspeak関数で表示がされるか分岐した後
if文が終了しています

最後にif文などで分岐されていない場所に
goBadEnding関数がきているので
必ずゲームオーバーに移動します


まずはこのように、順を追って
処理がどうなっているか
確認する必要があります

それから、どこに何の処理を入れるべきか
まずはコメントなどで準備をしておき
その後、実際にスクリプトを入れるように
してみましょう
Material 110912 1 mini アイネ・レグルス(投稿日:2012/07/05 01:01, 履歴)
なるほど…スクリプトの流れがよく分かりました。
とりあえず今の段階では実現は難しそうなので、スクリプトにある程度なれたら再挑戦してみます。返信ありがとうございましたm(__)m