c语言洗牌发牌 无大小王 分四堆,数据结构与算法课设-斗地主-洗牌堆.doc

毕业,课程,设计,数据结构,算法,斗地主,洗牌毕业,课程,设计,数据结构,算法,斗地主,洗牌

这是从斗地主源程序选取的五个功能模块,分别为洗牌模块,对玩家的初始化,游戏初始化,

补全手牌信息模块,获取缓冲区牌类型模块。

一、我的程序实现了哪些功能:

(1)洗牌功能

static deck* deck_init(){

int i,j;

srand(time(0));

deck *p_deck=(deck*)malloc(sizeof(deck));

if(!p_deck){

printf("分配内存失败\n");

return NULL;

}

for(i=1;i<=54;i++){

p_deck->arr[i]=rand()%54;

for(j=1;j

if(p_deck->arr[i]==p_deck->arr[j]){

i--;

break;

}

}

}

p_deck->top=54;

return p_deck;

}

(2)初始化玩家(洗牌,id,身份 手牌,总数)功能

static void player_init(){

int i,j;

for(j=0;j<3;j++){

for(i=1;i<=20;i++){

player[j].handcard[i].number=100;

player[j].handcard[i].level =0;

}

}

deck *p=deck_init();

if(!p){

printf("没有牌堆\n");

return ;

}

int which=0;

which=rand()%3;

game.who=which;

for(i=0;i<3;i++){

player[i].id=i;

if(i==which){//地主

player[i].status=1;

for(j=1;j<=20;j++){

player[i].handcard[j].number=p->arr[(p->top)--];

}

player[i].size=20;

}

else{//农民

player[i].status=0;

for(j=1;j<=17;j++){

player[i].handcard[j].number=p->arr[(p->top)--];

}

player[i].size=17;

}

}

free(p);

p=NULL;

}

(3)手牌信息补完功能

static void handcard_init(){

int i,j;

for(i=0;i<3;i++){

for(j=1;j<=20;j++){

int number=player[i].handcard[j].number;

int *p_level=&(player[i].handcard[j].level);

char **pp_flower=&(player[i].handcard[j].flower);

char *p_point=&(player[i].handcard[j].point);

if(number>=0&&number<=51){

*p_level=number/4+1;

*p_point=point[number/4+1];

*pp_flower=farr[number%4];

}

else if(number==52){

*p_level=14;

*p_point='w';

*pp_flower="小王";

}

else if(number==53){

*p_level=15;

*p_point='W';

*pp_flower="大王";

}

else {

*p_level=0;

*p_point=' ';

*pp_flower=" ";

}

}

}

}

(4)打印当前玩家手牌功能

void print(){

int i,j;

for(i=0;i<3;i++){

if (

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值