テキサスホールデムにおける役判定
Posted: 2010年10月26日(火) 02:00
ポーカーを作ろうと思い、ルールはテキサスホールデムを採用しました
プレイヤーの手札2枚と、場の5枚のカードを組み合わせて役を作るわけですが、
7枚のカードの役判定で悩んだため、こちらに質問させていただきました。
とりあえずということでペア系だけ判定できるプログラムを作ったのですが
//--------役判定-----------
for(i=0;i<3;i++){ //iはプレイヤーの数です
n=0;
for(j=0;j<6;j++){
for(k=j+1;k<7;k++){
if( (hand[j]/4)==(hand[k]/4) ) //÷4すると数が出る
n++;
}
}
switch(n){
case 1:
player.Hand_Flag=1; //ワンペア
break;
case 2:
player.Hand_Flag=2; //ツーペア
break;
case 3:
player.Hand_Flag=3; //スリーカード
break;
case 4:
player.Hand_Flag=6; //フルハウス
break;
case 6:
player.Hand_Flag=7; //フォーカード
break;
default:
player.Hand_Flag=0; //とりあえず役なしに
}
}
7枚のカードをhand配列に格納しています
これでは3カードが2つあった場合、4カードと判定されてしまうのです。
また、フラッシュとストレートの判定についても、うまく作れず困っています。
なにかうまいやり方があれば教えてください。
コンパイラはVC++2008です。
プレイヤーの手札2枚と、場の5枚のカードを組み合わせて役を作るわけですが、
7枚のカードの役判定で悩んだため、こちらに質問させていただきました。
とりあえずということでペア系だけ判定できるプログラムを作ったのですが
//--------役判定-----------
for(i=0;i<3;i++){ //iはプレイヤーの数です
n=0;
for(j=0;j<6;j++){
for(k=j+1;k<7;k++){
if( (hand[j]/4)==(hand[k]/4) ) //÷4すると数が出る
n++;
}
}
switch(n){
case 1:
player.Hand_Flag=1; //ワンペア
break;
case 2:
player.Hand_Flag=2; //ツーペア
break;
case 3:
player.Hand_Flag=3; //スリーカード
break;
case 4:
player.Hand_Flag=6; //フルハウス
break;
case 6:
player.Hand_Flag=7; //フォーカード
break;
default:
player.Hand_Flag=0; //とりあえず役なしに
}
}
7枚のカードをhand配列に格納しています
これでは3カードが2つあった場合、4カードと判定されてしまうのです。
また、フラッシュとストレートの判定についても、うまく作れず困っています。
なにかうまいやり方があれば教えてください。
コンパイラはVC++2008です。