【发布时间】:2021-04-22 12:53:04
【问题描述】:
大家好。我目前正在用 C 程序编写卡片代码。但我无法处理一些问题:(游戏的名称是Bastra(或Pishti)。我需要将4张牌面朝上放在桌子上并将4张牌分成4名玩家。当我们运行代码时,这个发生了,但我需要将玩家的卡片定义为一个数组。卡片是随机写在屏幕上的,但我不能在接下来的步骤中使用它,因为它不是数组。一个这样的我需要的部分是例如Card board_cards [3];,Card player_1_cards [3];,Card player_2_cards [3]; 等等。我想我需要在显示部分执行此操作,但我不知道如何执行此操作。如果您能帮助我,我会很高兴:)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 9
#define MAX_CARDS 52
#define MAX_RANKS 13
#define MAX_SUITS 4
#define Empty NULL
//structure definition
struct card {
char *rank;
char suit[MAX];
} ;
typedef struct card Card;
enum name {Spades, Clubs, Diamonds, Hearts};
enum number {Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King};
char * suits[] = {"Spades", "Clubs", "Diamonds", "Hearts"};
char * ranks[] = {"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
void initialize(Card []);
void shuffle(Card []);
void display(const Card[]);
void cleaning_player_card(int player, int card_index, Card player_deck[3],Card the_card);
void cleaning_board(int board_card_index, Card board_deck[], Card board_card);
int arr1 ,arr2,arr3, arr4;
int main(void)
{
Card deck[MAX_CARDS] = {""};
initialize(deck);
printf("BOARD:\n");
shuffle(deck);
display(deck);
printf("\nPlayer one ... \n");
shuffle(deck);
display(deck);
printf("\nPlayer two ... \n");
shuffle(deck);
display(deck);
printf("\nPlayer three ... \n");
shuffle(deck);
display(deck);
printf("\nPlayer four ... \n");
shuffle(deck);
display(deck);
return 0;
}
/*
initialize the deck of cards to string values
*/
void initialize(Card deck[]){
int i = 0;
for (i = 0; i < MAX_CARDS; i++){
deck[i].rank = ranks[i%MAX_RANKS];
strncpy(deck[i].suit, suits[i/MAX_RANKS], MAX);
}
}
void shuffle(Card deck[]){
int card_p = 0; //index of card
int i = 0; //counter
Card temp = {" "}; //temp holding place for card
srand(time(NULL)); //seed the random numbers with current time
for (i = 0; i < 52; i++) {
card_p = rand() % 52;
temp = deck[i];
deck[i] = deck[card_p];
deck[card_p] = temp;
}
}
void display(const Card deck[]) {
int i = 0;
for(i = 0; i < 4; i++) {
const char *ranks[]={deck[i].rank};
const char *suits[]={deck[i].suit};
printf("%s of ", *ranks);
printf("%s", *suits);
printf("\n");
}
}
【问题讨论】:
标签: arrays c multidimensional-array enums typedef