本文实例为大家分享了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#实现洗牌游戏实例,包括了C#实现洗牌游戏实例的使用技巧和注意事项,需要的朋友参考一下 棋牌类游戏是目前比较火的游戏之一。今天本文就以实例形式实现洗牌游戏。本文实例所采用的算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。 运行结果如下图所示: 对于牌来讲,2个关键的因素是面值和类型(如红桃、梅花等)。 代码如下: 客户端程序有3个方法,一个是初始化牌的数组,一个是遍历所有牌并
本文向大家介绍C++扑克牌的洗牌发牌游戏设计,包括了C++扑克牌的洗牌发牌游戏设计的使用技巧和注意事项,需要的朋友参考一下 笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏。具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌。然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等。 笔者在学习他人设计的基础上,完成了自己的程序设计。这里将源程序分享给大家。
在第13.6节我们编写了一个洗牌算法的伪代码。假设shuffleDeck函数实现洗牌功能,其参数为一个牌堆,我们就可以这样创建牌堆并洗牌: Deck deck; // 创建一个标准的52张牌的牌堆 deck.shuffle (); // 洗牌 然后,使用subdeck函数来分几手牌: Deck hand1 = deck.subdeck (0, 4); Deck hand2 = dec
本节用随机数产生器开发一个洗牌与发牌程序。这个程序可以用于实现玩某种牌的游戏程序。 为了解决一些微妙的性能问题,我们故意用次优洗牌与发牌算法。练习中要开发更有效的算法。 利用自上而下逐步完善的方法,我们开发一个程序,洗 52 张牌并发52张牌。自上而下逐步完善的方法在解决大而复杂的问题时特别有用。 我们用 4 x 13 的双下标数组 deck 表示要玩的牌(如图 5.23)。行表示花色,0 表示红
本文向大家介绍C语言实现纸牌计算24点小游戏,包括了C语言实现纸牌计算24点小游戏的使用技巧和注意事项,需要的朋友参考一下 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的。程序主要功能已完成,目前还有部分细节未处理,待完成ing...对于代码中的错误,恳请批评指正。 游戏描述: A-10:分别代表数字 1-10
本文向大家介绍C#实现随机洗牌的方法,包括了C#实现随机洗牌的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现随机洗牌的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。