Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 如何显示播放器';s卡的数组形式在扑克牌中用C语言编写的程序?_Arrays_C_Multidimensional Array_Enums_Typedef - Fatal编程技术网

Arrays 如何显示播放器';s卡的数组形式在扑克牌中用C语言编写的程序?

Arrays 如何显示播放器';s卡的数组形式在扑克牌中用C语言编写的程序?,arrays,c,multidimensional-array,enums,typedef,Arrays,C,Multidimensional Array,Enums,Typedef,大家好。我目前正在用C程序编写一个卡片代码。但我不能处理一些问题:(游戏的名字是巴斯特拉(或皮什蒂)。我需要的是将4张牌面朝上放在桌上,并将4张牌分成4名玩家。当我们运行代码时,会发生这种情况,但我需要将玩家的牌定义为数组。牌在屏幕上随机写入,但我无法在下一步中使用,因为它不是数组。我需要的一部分是卡板卡[3];,纸牌玩家卡[3];,纸牌玩家卡[3];等等。我想我需要在显示部分这样做,但我不知道怎么做。如果你能帮我,我会很高兴:) #包括 #包括 #包括 #包括 #定义最大值9 #定义最大卡数5

大家好。我目前正在用C程序编写一个卡片代码。但我不能处理一些问题:(游戏的名字是巴斯特拉(或皮什蒂)。我需要的是将4张牌面朝上放在桌上,并将4张牌分成4名玩家。当我们运行代码时,会发生这种情况,但我需要将玩家的牌定义为数组。牌在屏幕上随机写入,但我无法在下一步中使用,因为它不是数组。我需要的一部分是卡板卡[3];,
纸牌玩家卡[3];
纸牌玩家卡[3];
等等。我想我需要在显示部分这样做,但我不知道怎么做。如果你能帮我,我会很高兴:)

#包括
#包括
#包括
#包括
#定义最大值9
#定义最大卡数52
#定义最高等级13
#定义最大值4
#定义空NULL
//结构定义
结构卡{
字符*秩;
char suit[MAX];
} ;
typedef结构卡;
枚举名称{黑桃、梅花、钻石、红心};
枚举数{ACE,二,三,四,五,六,七,八,九,十,杰克,皇后,国王};
char*套装[]={“黑桃”、“梅花”、“钻石”、“红心”};
char*排名[]={“A”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“杰克”、“女王”、“国王”};
作废初始化(卡片[]);
无效洗牌(牌[]);
无效显示(常数卡[]);
无效清理玩家卡(玩家,玩家索引,玩家卡[3],玩家卡);
空洞清理板(内部板卡片索引、卡片板卡片[]、卡片板卡片);
int arr1、arr2、arr3、arr4;
内部主(空)
{
卡片组[MAX_CARDS]={“};
初始化(甲板);
printf(“线路板:\n”);
洗牌(牌组);
展示(甲板);
printf(“\n第一层…\n”);
洗牌(牌组);
展示(甲板);
printf(“\n第二层…\n”);
洗牌(牌组);
展示(甲板);
printf(“\n第三层…\n”);
洗牌(牌组);
展示(甲板);
printf(“\n第四层…\n”);
洗牌(牌组);
展示(甲板);
返回0;
}
/*
将卡片组初始化为字符串值
*/
无效初始化(卡片组[]){
int i=0;
对于(i=0;i
我会使用二维数组,比如卡片[MAX_cards][MAX_Suites]。

我已经研究了你的代码,但有些地方我不明白。 然后我运行了你的代码。 我看到不止一个玩家拥有一张牌

比如,

BOARD:
Six of Spades    
Seven of Spades
Eight of Spades   
Three of Spades

Player one ...
King of Spades
Jack of Clubs
Seven of Clubs  1
Eight of Spades   

Player two  ...
Nine of Diamonds
Two of Diamonds
Four of Diamonds  2
Seven of Clubs    1

Player three  ...
Six of Diamonds
Five of Spades
Six of Hearts   3
Four of Diamonds  2

Player four  ...
Nine of Clubs
Four of Hearts
Ace of Hearts
Six of Hearts  3
我决定重新排列代码

代码是-->

#包括
#包括
#包括
#包括
/*
我们将以char变量的形式在内存中存储数据。
例如
记忆打印
两个黑桃中的0-1个
3-10颗杰克的心
2-12颗国王钻石
1-0支王牌俱乐部
*/
类型定义结构{
字符名;
字符值;
}卡片;
/*
变压器功能-->
将内存中的数据转换为我们可以理解的字符串。
然后在屏幕上打印。
*/
无效变压器(卡片元件){
const char*namee[4]={“黑桃”、“梅花”、“钻石”、“红心”};
const char*valuee[13]={“王牌”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”、“杰克”、“女王”、“国王”};
字符变量名称[10],变量值[10];
strcpy(var_name,namee[elements.name]);
strcpy(var_值,valuee[elements.value]);
printf(“%s/s/s\n”,变量名称,变量值);
}
无效打印尺寸(卡片*arr,内部arr尺寸){
对于(int i=0;i
想象一下我们的混合甲板是这样的:
0-1 , 3-10 , 2-5 , 1-5 , 3-3 , 2-11 ,........., 2-4 , 3-3 
例如,两个人玩这个游戏
让我们给每个玩家分发3张牌。
给第一个玩家的牌=0-1、3-10、2-5
给第二个玩家的牌=1-5、3-3、2-11
如果您了解Python,该函数在Python中如下所示
Python代码;
def playe_arr(玩家数量,TNOCEPH):
所有甲板=混合()
总卡数=玩家数量*TNOCEPH
儿子=[]
如果总卡数>52:
打印(“错误--->卡的总数大于52”)
返回
a=0
b=TNOCEPH
对于范围内的i(玩家数量):
玩家变量=所有牌组[a:b]
附加(player_变量)
a+=TNOCEPH
b+=TNOCEPH
归子
*/
卡片**玩家\u arr(玩家的整数,整数){//NOCEP==每个玩家拥有的卡片数
srand(时间(空));
卡片*all_deck=mix();
int total_cards=玩家数量*TNOCEPH;//要分发的卡数
int x=0;
int y=0;
卡片**子=制作2d arr(玩家数量,TNOCEPH);
如果(总卡数>52){
printf(“错误--->卡的总数大于52\n”);
返回NULL;
}
对于(int i=0;i
组合所有功能。
*/
空隙饰面(){
内特诺普,特诺切夫;
printf(“玩家数量=”);scanf(“%d”、&NOP);
printf(“每位玩家拥有的牌数=”);scanf(“%d”,&TNOCEPH);
卡片**son=玩家(NOP,TNOCEPH);
打印(子、NOP、TNOCEPH);
}
int main(){
完成();
返回0;
}

我希望它对你有用。Kolay gelsin;)

Ch ookçok teşekkür ederim。
BOARD:
Six of Spades    
Seven of Spades
Eight of Spades   
Three of Spades

Player one ...
King of Spades
Jack of Clubs
Seven of Clubs  1
Eight of Spades   

Player two  ...
Nine of Diamonds
Two of Diamonds
Four of Diamonds  2
Seven of Clubs    1

Player three  ...
Six of Diamonds
Five of Spades
Six of Hearts   3
Four of Diamonds  2

Player four  ...
Nine of Clubs
Four of Hearts
Ace of Hearts
Six of Hearts  3
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
/*
We will store data in memory in the form of a char variable.

For example;
        MEMORY      PRINT
        0-1         Spades of Two
        3-10        Hearts of Jack
        2-12        Diamonds of King
        1-0         Clubs of Ace

*/
    
typedef struct{
    char name;
    char value;
}card;


/*
transformer function -->
converts the data in memory to STRINGS that we can understand. 
And then it prints on the screen.
*/

void transformer(card elements){ 
    const char *namee[4]={"Spades", "Clubs", "Diamonds", "Hearts"};
    const char *valuee[13]={"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
    char var_name[10],var_value[10];
    strcpy(var_name,namee[elements.name]);
    strcpy(var_value,valuee[elements.value]);
    printf("%s of %s\n",var_name,var_value);
}

void print_1d_arr( card *arr, int arr_size){
    for (int i=0;i<arr_size;++i){
        transformer(arr[i]);
    }
    printf("\n");
}

void print_2d_arr( card **arr, int arr_x, int arr_y){
    for (int i=0;i<arr_x;++i){
        printf("PLAYER %d\n",i+1);
        print_1d_arr(arr[i],arr_y);
    }
}

card *make_1d_arr( int arr_size){
    card *son=(card *)malloc( sizeof(card)*arr_size );
    return son;
}

card **make_2d_arr( int arr_x, int arr_y){
    card **son=(card **)malloc( sizeof(card*)*arr_x );
    for (int i=0;i<arr_x;++i){
        son[i]=(card *)malloc( sizeof(card)*arr_y );
    }
    return son;
}

/*
in_arr function -->
This function checks whether the data we are looking for is in the list(ARRAY).
Returns 1 if present, 0 otherwise.
*/

int in_arr(card *arr, card elements, int size_arr){
    for (int i=0;i<size_arr;++i){
        if (arr[i].name==elements.name && arr[i].value==elements.value){
            return 1;
        }
    }
    return 0;
}

/*
mix function --->
This function will mix all the cards.
And It will give us a list of mixed cards.
*/

card *mix(){
    card *son,var_forever;
    son=make_1d_arr(52);
    char var_name, var_value, count_size;
    count_size=0;
    while (1){
        if (count_size==52){
            return son;
        }
        var_name=rand()%4;
        var_value=rand()%13;
        var_forever.name=var_name;
        var_forever.value=var_value;
        if (in_arr(son,var_forever,count_size)){
            continue;
        }
        son[count_size]=var_forever;
        ++count_size;
    }
}

/*
player_arr function --->
This function will give us the cards that players have.
For example;
        MEMORY              PRINT
        [ [ 1-1 , 3-10 ]        PLAYER 1
          [ 2-0, 0-5 ] ]        Clubs of Two
                                Hearts of Jack
    
                                PLAYER 2
                                Diamonds of Ace
                                Spades of Six

Note;This function does not have print function.

x--->

Imagine our mixed deck like this:
    0-1 , 3-10 , 2-5 , 1-5 , 3-3 , 2-11 ,........., 2-4 , 3-3 
    For example, two people play the game 
    And let's distribute 3 cards to each player.
    Cards to be given to the first player=0-1 , 3-10 , 2-5 
    Cards to be given to the second player = 1-5 , 3-3 , 2-11

If you know Python, this function is as follows in Python
Python Code;

def playe_arr(number_of_players, TNOCEPH):
    all_deck = mix()
    total_cards = number_of_players*TNOCEPH
    son=[]
    if total_cards>52:
        print("ERROR ---> the total number of cards is greater than 52")
        return
    a=0
    b=TNOCEPH
    for i in range(number_of_players):
        player_variable=all_deck[a:b]
        son.append(player_variable)
        a+=TNOCEPH
        b+=TNOCEPH
    return son
*/

card **player_arr(int number_of_players, int TNOCEPH){ // NOCEP == the number of cards each player has
    srand(time(NULL));
    card *all_deck=mix();
    int total_cards=number_of_players*TNOCEPH; //number of cards to be distributed
    int x=0;
    int y=0;
    card **son=make_2d_arr(number_of_players,TNOCEPH);
    if (total_cards>52){
        printf("ERROR --->the total number of cards is greater than 52\n");
        return NULL;
    }
    for (int i=0;i<total_cards;++i){ //Please look up (x)
        if (y==TNOCEPH){
            y=0;
            ++x;
        }
        son[x][y]=all_deck[i];
        ++y;
    }
    return son;
}

/*
finish function --->
Combine all functions.
*/

void finish(){
    int NOP, TNOCEPH;
    printf("Number of players = ");scanf("%d",&NOP);
    printf("The number of cards each player has = ");scanf("%d",&TNOCEPH);
    card **son=player_arr(NOP,TNOCEPH);
    print_2d_arr(son,NOP,TNOCEPH);
}

int main(){
    finish();
    return 0;
}