トピック
Haku Haku6817

配列変数の数字が連続しているかどうかを調べるにはどうしたら良いでしょうか?

現在ポーカーを作っているのですが、ストレートかどうかの判定を作るのがうまくいきません。 どなたか助けてくれませんか?
1そうだね
プレイ済み
返信[1]
親投稿
おおみの Omi-no-mino-398
SORT命令を使うと数字の小さい順に並び替えてくれるので、そのあとに判定すれば簡単です。 SORT後に1枚目と5枚目の差が4、かつ同じ数字のカードがなければストレートです。
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
その方法だとロイヤルストレート(10,J,Q,K,A)が判別 できないので別途判別する必要がありますね。
0そうだね
プレイ済み
返信[3]
親投稿
タバひめ tabahime
ジョーカーの判断は大丈夫ですか?
0そうだね
プレイ済み
返信[4]
親投稿
あきと SideBurnsM
もうひとつ別の配列を用意します。大きさは15が良いでしょう。 この配列は「1~13の数字を何枚ずつ持っているか」という情報として使います。 例えばハートの12345を持っているとしたら配列の1番目を+1、2番目を+1、3番目、4番目、5番目も+1とします。 結果的に配列の中身は1,1,1,1,1,0,0,0,0,0,0,0,0になります。1から5の数字のカードを1枚ずつ持っているという意味です。 あとは1~5まで連続して1ならストレートとハンディできます。 ついでに言うと1の時は配列の1番目と14番目を+1しておくと10JQKAも判定できます。
1そうだね
プレイ済み
返信[5]
親投稿
あきと SideBurnsM
「ハンディ」は書き間違い。「判定」でした。
0そうだね
プレイ済み
返信[6]
親投稿
あきと SideBurnsM
タバひめさんがジョーカーについて質問していますが、ポーカー判定でジョーカーありは結構面倒です。 特殊な役判定処理を別に作成する事になります。具体的には4枚で役のリーチになっているかどうか判定する処理作成が必要になります。 いくつかは5枚のルーチンを使い回せます。たとえばスリーカードの判定でフォーカードのチェックが、ツーペアの判定でフルハウスのチェックができます。
0そうだね
プレイ済み
返信[7]
親投稿
れい rei-nntnd
全部ifで判定したらいいよ。 たかだか53枚。 なんの問題もない。
1そうだね
プレイ済み
返信[8]
親投稿
おおみの Omi-no-mino-398
>ロイヤルストレート ご指摘ありがとうございます。 Aを1として見るのは最大のカードが5(A,2,3,4,5)のときだけなので、最大が5でないならAを14として判定すればいいですね。 ジョーカーがある場合はそれ以外の4枚を調べて、そこに手持ちカード以外のすべての数字を当てはめて判定すればいいのでは。
0そうだね
プレイ済み
返信[9]
親投稿
あきと SideBurnsM
>ジョーカーは総当たり 確かに!そのほうがルーチンは同じですむので作るのは楽ですね。 47倍重くなりますが気づかないぐらいの遅延ですみそうな気がします。
0そうだね
プレイ済み
返信[10]
親投稿
ケイン KEIN.HORGAN
ジョーカーチェック時に手持ちのカードを除いたら 5カードが作れなくなるような……
0そうだね
プレイ済み
返信[11]
親投稿
Haku Haku6817
ストレートの判定はSORT命令を使うことにしました。 皆さんご協力ありがとうございました。
0そうだね
プレイ済み