フォーダイスのスクリプト(質問掲示板

投稿:   1 mini 闇さん 投稿:2013/01/24 17:22:24(最新:2013/01/24 22:37:24)
b=0
Q=0
while b<6||Q==4
 Q=0
 a=0
 while a<5
  if getVariable("ダイス")[a]==b
   Q=Q+1
  end
  a=a+1
 end
 b=b+1
end
q=getVariable("ダイス")[a-1]
if Q>4
 speak("フォーダイスは",q,"でそろっています")
else
 speak("フォーダイスは0点です")
end

配列getVariable("ダイス")の0~5に1~6の数がランダムで入る時
配列getVariable("ダイス")0~5のうちどれかが4つ同じなら何でそろっているかを出したいのですが
そろっていてもそろっていない時のスクリプトに行ってしまいます

エラーが出ないので何が間違っているか分かりません

コメントする

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

コメント一覧

  1 mini 闇さん(投稿日:2013/01/24 22:01, 履歴)
b=0
Q=0
while b<6
 Q=0
 a=0
 while a<5
  if getVariable("ダイス")[a]==b
   Q=Q+1
   q=getVariable("ダイス")[a]
  end
  a=a+1
 end
 b=b+1
end
if Q>5
 speak("フォーダイスは",q,"でそろっています")
else
 speak("フォーダイスは0点です")
end

ファイターさんのコメントを参考に作ってみましたが
まだ駄目なようです
User icon mini 退会したユーザー(投稿日:2013/01/24 22:15, 履歴)
while b <  6


while b < 6 && Q < 4

にして、
if Q > 5

を、
if Q >= 4

にしてみてください。
  1 mini 闇さん(投稿日:2013/01/24 22:34, 履歴)
b=1
Q=0
while b<7
 a=0
 while a<5
  if getVariable("ダイス")[a]==b
   Q=Q+1
   q=getVariable("ダイス")[a]
  end
  a=a+1
  speak("a",a,"b",b,"Q",Q)
 end
 b=b+1
end
if Q>3
 speak("フォーダイスは",q,"でそろっています")
else
 speak("フォーダイスは0点です")
end

さらに修正しました
そろっているかどうかは判断できるようになりましたが
何で揃っているかは判断できません
必ず一番大きい数字になってしまいます
  1 mini 闇さん(投稿日:2013/01/24 22:37, 履歴)
すみません ファイターさんの前のコメントの通りにしたら
治りました
書いている途中に出てきたので・・・・
User icon mini 退会したユーザー(投稿日:2013/01/24 21:08, 履歴)
まず、最初のwhile文では、Qが4の時に抜けるようになってます。
ここはQ==4ではなく、Q>=4では?
Q==4で合っているならそれでもいいです。
次に、最後のif文では
Q>4となっています。
while文で4つそろっても、if文では
4よりもうえとなっているので必ずelseにつながってしまうと思われます
User icon mini 退会したユーザー(投稿日:2013/01/24 21:15, 履歴)
すいません、追加です。
一つ目のwhile文にてです。
b < 6もしくは、Q==4の場合、続けるという事になっています。
Q==4ではなく、Q<4ではないでしょうか?
もしくは、5個はダメのなら、
Q!=4だと思います
User icon mini 退会したユーザー(投稿日:2013/01/24 21:26, 履歴)
また追加です。たびたびすいませんorz
b<6||Q<4だと、
bが6以上になっても、Qが4以上にならない限り、
while文から抜けられません。
よって、b<6&&Q<4にするべきだと思います