教えてください。
■ このスレッドは過去ログ倉庫に格納されています
0001みつき
NGNG今C言語でポーカ-ゲームのプログラム作っています。
ワンペアの役判定はできたんですけどスリーカ-ドの役判定プログラムが作れません。
誰か分かる人教えてください。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGmain();
}
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGfor(int n=0;n<13;n++)
j[n]=0;
for(int c=0;c<5;c++){
for(int i=0;i<13;i++){
if(card[c]==i)j[i]+=1;
}}
for(i=0;i<13;i++){
if(j[i]==3)
printf("スリーカード成立でウマー");
}
0008デフォルトの名無しさん
NGNGほほーーー、板嵐と判定して良いかな?
0009みつき
NGNGちなみにワンペアの役判定5時間くらいかかって作りました
それ以外は一つもできてないです。
0010デフォルトの名無しさん
NGNGポーカーカードゲームの本体は何ヶ月かかったんだい?
まさか判定以外は何も作ってないのか。
0011みつき
NGNG0012デフォルトの名無しさん
NGNG0013みつき
NGNGint one(card *c)
{
int [14];
int n, j;
int sum=0;
for (n=1; n<=13; n++) {
box[n] = 0;}
for (j=0; j<c->n; j++) {
box[c->card[j].number]++;}
for (n=1; n<=13; n++) {
if (box[n]>0)
sum++;}
printf("sum=%d\n", sum);
if (sum == 4)
return 1;
return 0;
}
0014デフォルトの名無しさん
NGNG0015みつき
NGNG一応動作しますけど
0016デフォルトの名無しさん
NGNG0017みつき
NGNGint box[14]; です。
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG0020みつき
NGNG00217
NGNGこれになら勝てそうだ。
00227
NGNGreturn 0;
てなに?
0023ファイナル
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGおいおいおいおい大丈夫か?
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNGint box[14]とする人がそんなことするのか。と。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGおいおい大丈夫か?
if( sum == 4 ){
return 1 ;
}
return 0 ;
って事だろ?
0030デフォルトの名無しさん
NGNG#include "memory.h"
#include "stdlib.h"
#include "time.h"
#include "conio.h"
//一枚のトランプ
typedef struct TRUMP
{ char rank;//1〜13
char suit;//0:スペード,1:ダイヤ,2:クローバー,3:ハート
}*LPTRUMP;
typedef const TRUMP* LPCTRUMP;
//手札5枚
typedef struct CARD
{ int num;//手札の内、有効な枚数
TRUMP trump[5];
}*LPCARD;
typedef const CARD* LPCCARD;
//役表示関数
void PrintHand(LPCCARD pCard);
//役判定関数の型
typedef bool (*JUDGEHAND)(LPCCARD);
//判定関数
bool IsStraightFlush(LPCCARD pCard);
bool IsQuads(LPCCARD pCard);
bool IsFullHouse(LPCCARD pCard);
bool IsFlush(LPCCARD pCard);
bool IsStraight(LPCCARD pCard);
bool IsThreeOfKind(LPCCARD pCard);
bool IsTwoPair(LPCCARD pCard);
bool IsPair(LPCCARD pCard);
bool IsNoPair(LPCCARD pCard);
0031デフォルトの名無しさん
NGNGstatic void SetAtRank(LPCCARD pCard,char* ranks);
static void SetAtSuit(LPCCARD pCard,char* ranks);
//役テーブル
typedef struct HANDTABLE
{ JUDGEHAND JudgeHand;
const char* pHandName;
}*LPHANDTABLE;
typedef const HANDTABLE *LPCHANDTABLE;
//強い順に並べるのがミソ
const HANDTABLE g_HandTable[] =
{
{IsStraightFlush,"ストレートフラッシュ"}, {IsQuads,"フォーカード"},
{IsFullHouse,"フルハウス"}, {IsFlush,"フラッシュ"},
{IsStraight,"ストレート"}, {IsThreeOfKind,"スリーカード"},
{IsTwoPair,"ツーペア"}, {IsPair,"ワンペア"},
{IsNoPair,"ノーペア"}, {NULL,NULL}
};
static void SetAtRank(LPCCARD pCard,char* ranks)
{ int i;
memset(ranks,0,sizeof(char)*13);
for(i=0;i<pCard->num;i++) ranks[pCard->trump[i].rank -1]++;
return;
}
static void SetAtSuit(LPCCARD pCard,char* suits)
{ int i;
memset(suits,0,sizeof(char)*4);
for(i=0;i>pCard->num;i++) suits[pCard->trump[i].suit]++;
return;
}
0032デフォルトの名無しさん
NGNG{ int i;
LPCHANDTABLE pTable = g_HandTable;
for(i=0;pTable[i].JudgeHand;i++){
if(pTable[i].JudgeHand(pCard) != false) break;
}
if(pTable[i].JudgeHand == NULL) return ;
printf("あなたの役は%sです。\n",pTable[i].pHandName);
return;
}
bool IsNoPair(LPCCARD pCard){ return true;}
bool IsPair(LPCCARD pCard)
{ int i;
char buffer[13];
SetAtRank(pCard,buffer);
for(i=0;i<13;i++){
if(buffer[i] == 2) return true;
}
return false;
}
bool IsTwoPair(LPCCARD pCard)
{ int i,flag = 0;
char buffer[13];
SetAtRank(pCard,buffer);
for(i=0;i<13;i++) {
if(buffer[i] == 2) flag++;
}
return flag == 2;
}
0033デフォルトの名無しさん
NGNG{ int i; char buffer[13];
SetAtRank(pCard,buffer);
for(i=0;i<13;i++){ if(buffer[i] == 3) return true;}
return false;
}
bool IsStraight(LPCCARD pCard)
{ int i,j; char buffer[13];
SetAtRank(pCard,buffer);
for(i=0;i<13;i++){ if(buffer[i] == 1) break;}
for(j=i;j<13;j++){ if(buffer[j] == 0) break;}
return j - i == 5;
}
bool IsFlush(LPCCARD pCard)
{ int i; char buffer[4];
SetAtSuit(pCard,buffer);
for(i=0;i<4;i++){ if(buffer[i] == 5) return true;}
return false;
}
bool IsFullHouse(LPCCARD pCard)
{ int i,flag2 = 0,flag3 = 0;
char buffer[13];
SetAtRank(pCard,buffer);
for(i=0;i<13;i++){
if(buffer[i] == 2) flag2 = 1;
if(buffer[i] == 3) flag3 = 1;
if(flag2 & flag3) return true;
}
return false;
}
0034デフォルトの名無しさん
NGNG{ int i; char buffer[13];
SetAtRank(pCard,buffer);
for(i=0;i<13;i++){ if(buffer[i] == 4) return true;}
return false;
}
bool IsStraightFlush(LPCCARD pCard)
{
return IsFlush(pCard) && IsStraight(pCard);
}
int main(int argc, char* argv[])
{ int i,j;
CARD card;
const char* Symbol[] ={"スペード","ダイヤ","クローバー","ハート",NULL};
srand(time(NULL));
card.num = 5;
do{
for(i=0;i<card.num;i++){
card.trump[i].rank = 1 + rand() % 13;
card.trump[i].suit = rand() % 4;
printf("%s%d,",Symbol[card.trump[i].suit],card.trump[i].rank);
}
puts("\b");
PrintHand(&card);
j = getche();
j = tolower(j);
}while((char)j != 'z');
return 0;
}
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGちなみにKとAをまたぐ役は判定していなかったり、他にもいろいろ適当。
さて・・・、嫌がらせも終わったところで寝るか。
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG***すれ立てるまでもない質問はここで 第53刷***
http://pc5.2ch.net/test/read.cgi/tech/1081170910/l50
0039デフォルトの名無しさん
NGNGC統合・質問スレッド
http://pc5.2ch.net/test/read.cgi/tech/1068359871/l50
0040停止しました。。。
NGNG■ このスレッドは過去ログ倉庫に格納されています