ボタンでパスワード(質問掲示板

投稿: 002 1  mini ugonight 投稿:2011/11/13 17:02:13(最新:2011/11/13 20:12:13)
久しぶりにやる気だしますよぉぉぉおおっ!




…そんなことはどうでもいいですので、本題に移りますっ

ボタンで入力していくパスワードを作ります。
○○○○●●

次のように入力されていれば正解です。

で、問題は入力の仕方なんですが…
選択肢メッセージで
[本文]
ボタンを押しますか?

○○○○○○
▲
[選択肢]
はい
いいえ

ではいを選んだら▲の上の○が●になり、いいえを選んだら(ryです。

で、問題は二回目以降、選択を迫る(?)時○○○○○○のところは変数で出力したいんですが前のデータを消さずにうまく変数に代入する方法ってないでしょうか?

コメントする

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

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2011/11/13 20:12, 履歴)
satsuki1さま>

投稿されておりますとおり、
直接、文字列で比較するという方法も
やり方のひとつですね。


参考までに。。。
ひとつのコツなのですが、
変数名は「a,b,c」といったものよりも、
意味を持つ名前をつけてあげると
理解、把握がしやすくなります。
002 1  mini ugonight(投稿日:2011/11/13 19:25, 履歴)
二人ともありがとうございますっ!
しばらくやってなかったので「昔の俺ならわかるかもっ!」とか思ってましたが昔の俺もわかりませんでしたねっw

やっぱり配列はちゃんと勉強しておきます。
それにしてもコードの整理が並はずれてますねっ

▲の奴がよく研究してくださったようで、一番ずれが少なかったですっ

本当にありがとうございましたっ!!
      mini きゅうり(投稿日:2011/11/13 18:25, 履歴)
if !getFlag("パス1正解")
  a = createArray() 
  b = 1 
  c = " " 
  while b <= 6 
    a[b] = "○"#これでa[1]~a[6]の変数全てに○を入れられる 
    b = b + 1 
  end 
  b = 1 
  while b <= 6 
    case speakWithSelect(2, "はい", "いいえ", 
        "ボタンを押しますか?\n\n ",a[1],a[2],a[3],a[4],a[5],a[6],"\n",c,"▲") 
      when 0 
        a[b] = "●" 
        c = c + "  "
        b = b + 1
      when 1  
        c = c + "  "
        b = b + 1  
    end 
  end 
  if a[1] == "○" && 
     a[2] == "○" && 
     a[3] == "○" && 
     a[4] == "○" && 
     a[5] == "●" && 
     a[5] == "●" 
    #正解の場合のスクリプト(例) 
    speak("パスワードが合っていたようだ。") 
    setFlag("パス1正解", true)#一度正解して、もう一度調べた場合 
    #のスクリプトが必要な場合、このフラグのスクリプトも入れてください。 
  else     #不正解の場合のスクリプト(例) 
    speak("パスワードが違ったようだ。") 
  end
else 
  #一度正解して、もう一度調べた場合(例) 
  speak("もうパスワードは合っている。") 
end

失礼。訂正します。
      mini きゅうり(投稿日:2011/11/13 18:20, 履歴)
配列を使ってみるとか。
#例
if !getFlag("パス1正解")
  a = createArray()
  b = 1
  c = " "
  while b <= 6
    a[b] = "○"#これでa[1]~a[6]の変数全てに○を入れられる
    c = c + " "
    b = b + 1
  end
  b = 1
  while b <= 6
    case speakWithSelect(2, "はい", "いいえ",
        "ボタンを押しますか?\n\n ",a[1],a[2],a[3],a[4],a[5],a[6],"\n",c,"▲")
       when 0
         a[b] = "●"
         b = b + 1
       when 1
         b = b + 1
    end
  end
  if a[1] == "○" &&
     a[2] == "○" &&
     a[3] == "○" &&
     a[4] == "○" &&
     a[5] == "●" &&
     a[5] == "●"
    #正解の場合のスクリプト(例)
    speak("パスワードが合っていたようだ。")
    setFlag("パス1正解", true)#一度正解して、もう一度調べた場合
    #のスクリプトが必要な場合、このフラグのスクリプトも入れてください。
  else
    #不正解の場合のスクリプト(例)
    speak("パスワードが違ったようだ。")
  end
else
  #一度正解して、もう一度調べた場合(例)
  speak("もうパスワードは合っている。")
end

スクリプトを書いてしまいましたが、
「2回目を選択した時に、1回目のデータが消えないようにするには」
ということなら、配列を使ったやり方(↑)か変数の名前を変えて管理する
必要があると思います。
Cdv30200 aoi icon mini aoihikawa(投稿日:2011/11/13 17:43, 履歴)
実際の表示と入力データを別に扱います。

入力データはオン/オフなのでフラグの配列ですね。

#初期化
setVariable("pass", createArray()) #入力データの配列
i = 0
while i < 6
  getVariable("pass")[i] = false #最初は全てオフ
  i = i + 1
end

#入力確認メッセージの作成関数
#conut = 入力中の場所
def selectMsgEdit(count)
  str = "ボタンを押しますか?\n\n"
  i = 0
  while i < 6
    #入力されているデータによって表示を変更
    if getVariable("pass")[i]
      str = str + "●" #オンになっている
    else
      str = str + "○" #オフになっている
    end
    i = i + 1
  end
  str = str + "\n"
  #入力中の場所によって表示を変更
  i = 0
  while i < count
    str = str + "  "
    i = i + 1
  end
  str = str + "▲"
  return str
end

----- 以下は入力の発生するイベント -----

#選択肢を表示
i = 0
while i < 6
  case speakWithSelect(2,"はい","いいえ",
       selectMsgEdit(i))
  when 0
    getVariable("pass")[i] = true #オンに変更
  when 1
    getVariable("pass")[i] = false #オフに変更
  end
  i = i + 1
end

#押した結果の表示
str = "ボタンの押した結果\n\n"
i = 0
while i < 6
  #入力されているデータによって表示を変更
  if getVariable("pass")[i]
    str = str + "●" #オンになっている
  else
    str = str + "○" #オフになっている
  end
  i = i + 1
end
speak(str)
002 1  mini ugonight(投稿日:2011/11/13 17:04, 履歴)
文字でっかくなってないっ!
最初の一行は文法ミスですorzあんまり気にしないでください…