本篇文章为大家展示了使用C语言编写一个洗牌与发牌游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
普通版
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SUITS 4
#define FACES 13
#define CARDS 52
void shuffle(int wDeck[][FACES]);
void send(int wDeck[][FACES], const char* wSuit[], const char* wFace[]);
void main()
{
int deck[SUITS][FACES]={0};
const char* suit[SUITS]={"Heart","Diamond","Club","Spade"};
const char* face[FACES]={"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
srand(time(NULL));
shuffle(deck);
send(deck, suit, face);
}
void shuffle(int wDeck[][FACES])
{
int row,column,card;
for(card=1;card<=CARDS;card++)
{
row = rand() % SUITS;
column = rand() % FACES;
while(wDeck[row][column] != 0)
{
row = rand() % SUITS;
column = rand() % FACES;
}
wDeck[row][column] = card;
}
}
void send(int wDeck[][FACES], const char* wSuit[], const char* wFace[])
{
int card,row,column;
for(card=1;card<=CARDS;card++)
{
for(row=0;row<SUITS;row++)
{
for(column=0;column<FACES;column++)
{
if(wDeck[row][column] == card)
{
printf("%5s of %-8s%c",wFace[column],wSuit[row], card % 2 ==0 ? '\n' : '\t');
}
}
}
}
}
高性能版
//先按顺序填满52个格子,再产生随机格子相互交换
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define CARDS 52
#define FACES 13
struct card
{
const char* face;
const char* suit;
};
typedef struct card Card;
void shuffle(Card *const wDeck);
void send(const Card *const wDeck);//指针常量与数据常量均不可以改变,都用const限定,*前是限定指针,*后是限定数据
void main()
{
const char* wSuit[]={"Heart","Diamond","Club","Spade"};//指针数组是一个数组
const char* wFace[]={"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
int i;
Card deck[CARDS];
for(i=0;i<CARDS;i++)
{
deck[i].suit = wSuit[i / FACES];
deck[i].face = wFace[i % FACES];
}
srand(time(NULL));
shuffle(deck);
send(deck);
}
void shuffle(Card *const wDeck)
{
int i,j;
Card temp;
for(i=0;i<CARDS;i++)
{
j = rand() % CARDS;
temp = wDeck[i];
wDeck[i] = wDeck[j];
wDeck[j] = temp;
}
}
void send(const Card *const wDeck)
{
int i;
for(i=0;i<CARDS;i++)
{
printf("%5s of %-8s%c",wDeck[i].face,wDeck[i].suit, (i+1) % 4 == 0 ? '\n' : '\t');
}
}
上述内容就是使用C语言编写一个洗牌与发牌游戏,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。