Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中创建一个数组来持有扑克牌?_C_Poker - Fatal编程技术网

在C中创建一个数组来持有扑克牌?

在C中创建一个数组来持有扑克牌?,c,poker,C,Poker,我的计算机科学课上有一个作业要交,我几周前发布了这个问题,但它的解释方式不适合我应该做的程序。我已经有了一个洗牌和发牌的程序 #include <stdio.h> #include <stdlib.h> #include <time.h> void shuffle( int [][ 13 ] ); void deal ( const int[][ 13 ], const char *[], const char *[] ); int main() {

我的计算机科学课上有一个作业要交,我几周前发布了这个问题,但它的解释方式不适合我应该做的程序。我已经有了一个洗牌和发牌的程序

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

void shuffle( int [][ 13 ] );
void deal ( const int[][ 13 ], const char *[], const char *[] );


 int main()
 {
  const char *suit[4] ={"Hearts","Diamonds","Clubs","Spades"};
    const char *face[13] ={"Ace", "Duece", "Three", "Four", "Five", "Six", 
    "Seven", "Eight","Nine", "Ten", "Jack", "Queen", "King"};
    int deck[4][13] = {0};
    int row, column, card = 1;


    for( row = 0; row <= 3; row++ )
    {
        for(column = 0; column <= 12; column++)
            {
            deck[row][column] = card;
            card++;
            }
    }

        srand(time(0));
        shuffle(deck);
        deal(deck, face, suit);
    return 0;
 }

 void shuffle( int wDeck[][13] )
 {
    int row, column, randomColumn, randomRow, card = 1, counter1, counter2, hold;




    for( counter1 = 0; counter1 <= 3; counter1++) 
    {
        for(counter2 = 0; counter2 <= 12; counter2++)
            {
                randomColumn = rand() % 13;
                randomRow = rand() % 4;

                    hold = wDeck[counter1][counter2];
                    wDeck[counter1][counter2] = wDeck[randomRow][randomColumn]; 
                    wDeck[randomRow][randomColumn] = hold;
            }
       }
    }

 void deal( const int wDeck[][13], const char *wFace[], const char *wSuit[] )
{
  int card, row, column;

        for ( card = 1; card <= 52; card++ )
            for (row = 0; row <= 3; row++ )
                for ( column = 0; column <= 12; column++ )
                    if( wDeck[row][column] == card )
                    {
                    printf("%5s of %-8s%c",wFace[ column ], wSuit[row], card % 2 == 0 ? '\n' : '\t');
                    break;
                    }
}

我应该修改deal函数来处理一张5张牌的扑克牌,然后再检查一下他们有两张同花顺牌的等级。我的老师提到要创建一个单独的双脚本数组来实现这一点,但我可以用另一种方式。问题是,我必须使用当前的牌组/洗牌设置来完成。有人能解释一下怎么做吗?如果效率不高,只要有效就可以。

对于现有的交易原型,无法从中返回信息-它没有返回值,所有参数都是常量。因为牌组已经被洗牌洗牌了,所以我假设发牌函数可以查看牌组数组中的前五张牌,并找到它们的等级。这可以完全在deal函数中完成,或者更好,从deal函数中调用int-rankint-hand[5]函数。

那么问题出在哪里?你创建一个卡片数组,然后使用一个函数或一组函数来查找排名。我不知道如何将这五张卡片分配给一个数组。我可以找到排名,但首先我需要5张牌,这是我一生都无法理解的。