C語言實現(xiàn)洗牌與發(fā)牌游戲
更新時間:2020年12月29日 08:45:08 作者:零商
這篇文章主要為大家詳細(xì)介紹了C語言洗牌與發(fā)牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言實現(xiàn)洗牌與發(fā)牌游戲的具體代碼,供大家參考,具體內(nèi)容如下
普通版
#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個格子,再產(chǎn)生隨機格子相互交換
#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);//指針常量與數(shù)據(jù)常量均不可以改變,都用const限定,*前是限定指針,*后是限定數(shù)據(jù)
void main()
{
const char* wSuit[]={"Heart","Diamond","Club","Spade"};//指針數(shù)組是一個數(shù)組
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');
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++實現(xiàn)LeetCode(169.求大多數(shù))
這篇文章主要介紹了C++實現(xiàn)LeetCode(169.求大多數(shù)),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
C++與Java分別解決活動選擇問題和帶權(quán)活動選擇問題
這篇文章介紹了C++與Java分別解決活動選擇問題和帶權(quán)活動選擇問題,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
基于matlab對比度和結(jié)構(gòu)提取的多模態(tài)解剖圖像融合實現(xiàn)
這篇文章主要介紹了多模態(tài)醫(yī)學(xué)圖像配準(zhǔn)與融合的概念、方法及意義,最后簡單介紹了小波變換分析方法。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-11-11
一起來學(xué)習(xí)C++的動態(tài)內(nèi)存管理
這篇文章主要為大家詳細(xì)介紹了C++的動態(tài)內(nèi)存管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03

