サイコロのストレート検出コード雑記 完成☆

投稿者:    mini とりか 投稿日:2013/01/30 00:36

Q=0
W=0
X=0
b=1

while b < 7
 a=0
 W=0
 while a < 5
  if getVariable("ダイス")[a]==b
   W=1     
  end
  a=a+1
 end
 if W==1
  Q=Q+1
  X=Q
 else
  if X < Q
   X=Q
  end
  Q=0
 end
 b=b+1
end

if X==5
 speak("ストレートが揃っている!!!!!")
end
if X==4
 speak("セミストレート!!!!")
end
if X==3
 speak("三連続!!!")
else
 speak("ストレートはそろっていない")
end




これで完成のはず
ほんとうはサイコロ10個でも20個でも対応可能にしたかったけど
判定部分を変数にすればいくらでも検出可能なのでこれで完成版




1/30/12:37追記
5枚のカードの中からすべての数値をチェックしてるのでさらに動作を軽くすることは可能かも
今は5枚のカード×6個の数値で30回の繰り返し処理だけど
例えば10枚のカード×10の数値だった場合100回の繰り返しです、多い・・・

そういえばRmakeトランプの素材があった気がするので5枚ポーカーの処理しようとすると、
5枚のカード×(13の数値×マーク数4+2枚(1枚?)ジョーカー)で計5×54=270回の繰り返し処理になります

マーク判定もまあ数値を使ったif文でうまく処理できるとしても、
可能なら繰り返し回数を軽減したいです

具体的な方法としては5枚全部探し終えたら処理を中断とか
そもそも手札枚数をループ回数の初期値にもっていくとか
あるいは手札数値がまとまっている前提で簡略化された処理を行うとか
:::たとえば手札に9、10、11、12、13の5枚がそろってたら
:::すなわち9以上しかないことが検知されたら9以上の数値を探すだけの方が効率が良くなる
:::マークに関しても同様、存在しないマーク・数字は探さないようにすれば余分な繰り返しをせずに済む

期待できる繰り返し回数はこれだけで最大270の最小100程度に下げられそう
役がそろっているほど処理が軽くなるので便利

というわけで、がんばればポーカーは作れそうな予感


コメントする

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

コメント一覧

コメントはありません。