因为这个牌的随机算法没有做好,比如说54张牌,第一次随机去一张牌,然后等随机到第2次的时候,运气不好,发现那张牌已经被发出,所以必须再次寻找没有发的牌;这样就会出现有好几分钟没有发牌,因为这个时间中,都是空门,都随机到了已经发完的牌;下面我给出高效的随机算法;用C语言实现;当然代码可以进一步优化,为了以后玩升级判断做准备;
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include "card.h"char *suit[] = {"Heart","Diadmonds","Clubs","Spades"};
char *face[] = {"Ace","Deuce","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jeck","Queen","King"};
char *jokensuit [] = {"Red","Black"};
char *jokenface [] = {"Joken"};void radomCard(Card cardLinks[],int sizeofLink) //高效计算随机算法
{
int i = 0;
int temp;
Card tempCard;
srand(time(NULL));
for(i = 0; i < sizeofLink;i++)
{
temp = rand()%sizeofLink;
tempCard = cardLinks;
cardLinks = cardLinks[temp];
cardLinks[temp] = tempCard;
}}
void initCard(Card cardLinks[],int num) //初始化Card数组
{
int i = 0;
int j = 0;
for(j = 0; j < num; j++)
{
for(i = 0; i < 52; i++)
{
cardLinks[i+j*54].face = face[i%13];
cardLinks[i+j*54].suit = suit[i/13];
}
cardLinks[52+j*54].face = jokenface[0];
cardLinks[52+j*54].suit = jokensuit[0];
cardLinks[53+j*54].face = jokenface[0];
cardLinks[53+j*54].suit = jokensuit[1]; }
}
(转载请注明出处:http://www.gdbpvi.com/yxcw/20091205/34.htm) TAGS:常州游戏茶苑
·上一篇: 97款免安装绿色软件推荐[greenxia整理]
·下一篇: 增 肥