微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > C语言猜拳游戏代码及分析

C语言猜拳游戏代码及分析

时间:12-01 来源:互联网 点击:

break;

case5: //排序

cmp(p,count);

break;

case6: //返回

return;

break;

default:

printf("输入错误,请重新输入");

}

}

}

//排序控制函数

void cmp(game_t *p,int *count){

intchose=0;

while(TRUE){

chose=0;

cmp_menu();

printf("请选择:");

scanf("%d",&chose);

fflush_in();

switch(chose){

case1: //金额

qsort(p,*count,sizeof(game_t),cmp_money);

printf("排序成功");

break;

case2: //胜率

win_times(p,count);

printf("排序成功");

break;

case3: //返回

return;

break;

default:

printf("输入错误,请重新输入");

}

}

}

//胜率函数

void win_times(game_t *p,int *count){

doublewins[100]={0.0};

doublei=0,j=0;

intk=0;

for(k=0;k<*count;k++){

i=p[k].times;

j=p[k].win;

wins[k]=(i=0?0:(double)j/i*100);

}

qsort(wins,*count,sizeof(game_t),cmp_win);

}

//按胜率排序函数

int cmp_win(const void *px,const void *py){

constgame_t *p1=px;

constgame_t *p2=py;

if(p1->money>p2->money)

return-1;

if(p1->moneymoney)

return1;

else

return0;

}

//按金额排序函数

int cmp_money(const void *px,const void*py){

constgame_t *p1=px;

constgame_t *p2=py;

if(p1->money>p2->money)

return-1;

if(p1->moneymoney)

return1;

else

return0;

}

//排序菜单

void cmp_menu(){

printf("1.按金额排序 2.按胜率排序 3.返回");

}

//游戏控制函数

void game_ctrl(game_t *p,int *my){

intchose=0;

doublemon=0.0;

while(TRUE){

chose=0;

game_menu();

printf("请选择:");

scanf("%d",&chose);

fflush_in();

switch(chose){

case1: //下注

if(game_pay(p,my,&mon)==0)

printf("下注成功,请开始游戏");

else

printf("下注失败");

break;

case2: //猜拳

game_play(p,my,&mon);

break;

case3: //返回

return;

break;

default:

printf("输入错误,请重新输入");

}

}

}

//游戏函数

void game_play(game_t *p,int *my,double*mon){

intresult=0;

intradio=0;

if(*mon==0){

printf("请先下注");

return;

}

p[*my].money-=*mon;

result=game();

srand((unsigned)time(NULL));

radio=rand()%5+1;

if(result==0){

p[*my].money+=0;

printf("平局,余额%.2f",p[*my].money);

p[*my].times+=1;

}

elseif(result==1){

p[*my].money+=(*mon)*radio;

printf("您胜利了,奖金:%.2f余额:%.2f",(*mon)*radio,p[*my].money);

p[*my].times+=1;

p[*my].win+=1;

}

else{

printf("您输了%.2lf,余额%.2lf",*mon,p[*my].money);

p[*my].times+=1;

}

*mon=0.0;

}

//游戏 0-平局,1-胜,-1-输

int game(){

intmy=0;

intradio=0;

while(my!=1&&my!=2&&my!=3){

printf("1.剪刀 2.石头 3.布");

printf("请选择:");

scanf("%d",&my);

fflush_in();

switch(my){

case1:

printf("您出的是剪刀");

break;

case2:

printf("您出的是石头");

break;

case3:

printf("您出的是布");

break;

default:

printf("输入错误,请重新输入");

}

}

srand((unsigned)time(NULL));

radio=rand()%3+1;

if(radio==1)

printf("电脑出的是剪刀");

elseif(radio==2)

printf("电脑出的是石头");

elseif(radio==3)

printf("电脑出的是布");

switch(radio-my)

{

case1:

case-2:

return-1;

case2:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top