gpt4 book ai didi

c - 如何填充、洗牌、发牌游戏

转载 作者:太空宇宙 更新时间:2023-11-04 03:07:19 28 4
gpt4 key购买 nike

我知道它是如何工作的,但我在排序和配对方面仍然有问题,这样我才能确定获胜者。

将它们配对(配对是具有相同值(value)的卡片。)例如,红心 A 和黑桃 A 组成一对。然后我数那些对。拥有最高对子的手获胜。

这就是我为配对所做的尝试,但我仍然坚持我是如何开始比较以进行配对的。

这是我期望每一手牌的结果:

第一手牌:黑桃六,是黑色方 block 七,是红色的黑桃八,是黑色红心十,是红色的黑桃皇后是黑色对数:0

手牌 2:黑桃三,是黑色方 block 五,是红色梅花五,是黑色方 block 九,是红色的方 block 皇后,是红色的对数:1最高对是:五

       #include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct card {
const char *face;
const char *suit;
const char *color;
};

typedef struct card Card;
typedef unsigned char pairs;

void fillDeck( Card * const, const char *[], const char *[] ,const char *[]);
void shuffle( Card * const );
void print( const Card * const );
pairs findpairs(card *hand); /* finds any pairs in a hand */

int main()
{
int hand,cd,winner;
card hands[5][5],handssorted[5][5];
pairs numpairs[5],highest;
Card deck[52];
const char *face[] = { "Ace", "Two", "Three", "Four", "Five","Six", "Seven",
"Eight", "Nine", "Ten","Jack", "Queen", "King"};
const char *suit[] = { "Hearts", "Diamonds", "Clubs", "Spades"};
const char *color[]= {"Black","Red"};
srand( time( NULL ) );
fillDeck( deck, face, suit, color );
print( deck );
printf("\n ---------------------------------------------------------- \n");
shuffle( deck );
print( deck );
for(cd=0;cd<5;cd++)
{

}

for(hand=0;hand<5;hand++)
{
/* sort the hands here */
numpairs[hand]=findpairs(handssorted[hand]);
printf("Hand %i:\n",hand+1);
/* print the hands here */
/* print the number and value of any pairs here */
}

/* determine the winner and print it */
system("pause");
return 0;

}
//----------------------------------------------------------------------------- void fillDeck( Card * const wDeck, const char * wFace[], const char * wSuit[],
const char * wColor[])
{
int i;
for ( i = 0; i <= 51; i++ ) {
wDeck[i].face = wFace[ i % 13 ];
wDeck[i].suit = wSuit[ i / 13 ];
wDeck[i].color = wColor[i%2];
// if ()
// wDeck[i].suit = wSuit[ i / 13 ];
}
}
//------------------------------------------------------------------
void shuffle( Card * const wDeck )
{
int i, j;
Card temp;
for ( i = 0; i <= 51; i++ ) {
j = rand() % 52;
temp = wDeck[ i ];
wDeck[ i ] = wDeck[ j ];
wDeck[ j ] = temp;
}
}
//---------------------------------
void print( const Card * const wDeck )
{
int i;
for ( i = 0; i <= 51; i++ ){
printf( "\t%s\t of \t%-8s is \t%s \n \t", wDeck[i].face,
wDeck[i].suit,wDeck[i].color,
( i + 1 ) % 2 ? '\t' : '\n' );}
}
//--------------------------------------------------------------------------
pairs findpairs(card *hand)
{
pairs numpairs=0;
for ( int i = 0; i <= 5; i++ ){
if (hand[i].face == )

}

return numpairs;

}

最佳答案

  • 您在使用未初始化的 deck 数组的 srand() 之后立即调用 print(deck)
  • numpairsfindpairshandssorted 未定义
  • 您正在为每只手打印整个牌组。这真的是你想要的吗?
  • onst 无效(大概您指的是 const)
  • fillDeck() 没有填充每个 Card
  • .color 成员
  • 您的随机播放算法有问题。参见 Fisher-Yates shuffle
  • print() 中,您使用 %c 格式说明符和 const char * 类型

关于c - 如何填充、洗牌、发牌游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3432742/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com