在 C 中创建一个数组来保存扑克牌?

标签 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()
 {
  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;
                    }
}

我应该修改交易函数来处理 5 张牌的扑克牌,然后检查它们拥有什么“排名”扑克牌(两种,同花)。我的老师提到创建一个单独的双脚本数组来做到这一点,但我可以用不同的方式来做。问题是,我必须使用当前的套牌/洗牌设置来做到这一点。谁能解释一下如何做到这一点?如果效率低下也没关系,只要能用就行。

最佳答案

使用现有的deal原型(prototype),无法从中返回信息 - 它没有返回值,并且所有参数都是const。由于牌组已经被洗牌(通过 shuffle()),我认为 deal 函数的想法是查看牌组数组中的前五张牌,并找到它们的排名。这可以完全在 deal 函数中完成,或者(更好)通过从 deal 中调用 intrank(int hand[5]) 函数来完成 函数。

关于在 C 中创建一个数组来保存扑克牌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095906/

相关文章:

c - 运行 md5sum shell 命令并将输出保存在 C 中

c++ - 脚本语言和与 C API 的接口(interface)

在 GTK+ gui 中调用外部函数

c# - 如何找到同一个对象在列表中出现了多少次,然后找到出现次数最多的对象的属性

ruby-on-rails - 在 Ruby 中解析(在 Rails 上)

c++ - 检查扑克牌的大牌和对子

c++ - 将现有的 C++ 代码移植到 R

c - 设置 uint32 key 位置并将其写入文件时遇到问题

c - 将 foo 添加到所有 fprintf()

c# - 更快的扑克手评估