c语言猜拳游戏中出现的关键词,C语言猜拳游戏代码及分析

赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+="">="、"<="、"+"、"*"、"%"、"&&"、"||"、"<

●                     空行:

◎    声明之后、每个函数定义结束之后都要加1行空行;

◎    逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔;

◎    一行代码只做一件事情;

◎    "if"、"for"、"while"、"do"等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }";

4.    对可维护性的规定

对可维护性的最终要求:别人能够轻松上手你的代码。

●                     结构清晰:

◎    模块化:对界面(显示)、菜单管理、逻辑管理、文件操作等等代码要独立,必须多个.c文件,用makefile;

◎    封装:一个函数只做一件事,函数功能要单一;一个函数不能超过50行;

避免重复、冗余代码;

◎    代码块清晰。

●                     命名规范,变量名应该具有自明性:

◎    函数的命名:

使用"动词"或者"动词+名词"(动宾词组)的形式,由一个或多个单词组成且以小写字母开头,以后每个单词之间用下划线隔开

◎    变量的命名与定义

应当使用"名词"或者"形容词+名词",由一个或多个单词组成且以小写字母开头,以后每个单词之间用下划线隔开。

●                     注释充分:变量、函数(包括参数、返回值)、代码功能块、一些复杂算法……等都需要

清晰明了地说明;

5.    对个性的规定

把项目做出个性出来。下列各项中有和比人不同之处、或很有创意,即可认为有个性。独立设计的软件,一般都会出现一些个性。参考、抄袭不会出现个性。   [page]

●                     设计思路:包括软件的整体架构、功能块的设计思路、函数封装等等;

●                     功能实现:从用户的角度,使用上发现与众不同的地方;

●                     其它方面;

c语言程序代码:

/*

func:猜拳游戏

auth:肖乔

date:2014.02.22

*/

#include

#include

#include

#include

#define TRUE 1

typedef struct {

charname[30];       //用户名长度最长28

charpassword[30];   //密码长度最长28

doublemoney;

inttimes;

intwin;

}game_t;

//清空缓存

void fflush_in();

//登录菜单函数

void log_menu();

//功能菜单函数

void ctrl_menu();

//登录函数

int log_in(game_t *p,int *count,int *my);

//注册函数

int add_user(game_t *p,int *count);

//登录控制函数

void log_ctrl(game_t *p,int *count,int*my);

//功能控制函数

void ctrl(game_t *p,int *count,int *my);

//查看函数

void look(game_t *p,int *count,int *my);

//查看菜单

void look_menu();

//查看所有

void look_all(game_t *p,int *count);

//查看个人

void look_my(game_t *p,int *my);

//初始化函数

int log_start(game_t *p,int *count);

//保存函数

int exit_save(game_t *p,int *count);

//充值函数

int pay(game_t *p,int *my);

//修改函数

void alter(game_t *p,int *count,int *my);

//修改菜单

void alter_menu();

//修改密码

int alter_pass(game_t *p,int *my);

//注销用户

int del(game_t *p,int *count,int *my);

//游戏控制函数

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

//游戏菜单

void game_menu();

//下注

int game_pay(game_t *p,int *my,double*mon);

//游戏函数

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

//游戏

int game();

//排序控制函数

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

//排序菜单

void cmp_menu();

//按金额排序函数

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

//胜率函数

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

//按胜率排序函数

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

int main(){

game_tstu[100]={" "}; //最多100个用户

intcount=0;            //count表示用户数

intmy=0;               //my表示本人用户下标

printf("欢迎使用猜拳游戏

");

if(log_start(stu,&count)==0)                             //系统初始化

printf("系统初始化成功

");

else

printf("系统初始化失败

");

log_ctrl(stu,&count,&my);    //功能控制函数

return0;

}

//初始化函数 0-成功1-失败

int log_start(game_t *p,int *count){

FILE*fp=NULL;

fp=fopen("data","a+");

if(NULL==fp)

return1;

while(fread(&p[*count],sizeof(game_t),1,fp))

*count+=1;

fclose(fp);

return0;

}

//保存函数 0-成功 1-失败

int exit_save(game_t *p,int *count){

FILE*fp=NULL;

fp=fopen("data","w");

if(NULL==fp)

return1;;

fwrite(p,sizeof(game_t),*count,fp);

fclose(fp);

return0;

}

//功能控制函数

void ctrl(game_t *p,int *count,int *my){

intchose=0;

while(TRUE){

chose=0;

ctrl_menu();

printf("请选择:");

scanf("%d",&chose);

fflush_in();

switch(chose){

case1:          //查看

look(p,count,my);

break;

case2:          //游戏

game_ctrl(p,my);

break;

case3:          //充值

if(pay(p,my)==0)

printf("充值成功

");

else

printf("充值失败

");

break;

case4:          //修改

alter(p,count,my);

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

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:

case-1:

return1;

default:

return0;

}

}

//下注 0-成功 1-失败

int game_pay(game_t *p,int *my,double*mon){

doublemoney=0.0;

if(p[*my].money==0){

printf("您的余额为0.00,请充值

");

return1;

}

printf("您的余额为:%.2lf元

",p[*my].money);

printf("请下注:");

scanf("%lf",&money);

fflush_in();

if(money<=0){

printf("金额输入有误

");

return1;

}

if(money>p[*my].money){

printf("余额不足,请充值

");

return1;

}

*mon=money;

return0;

}

//游戏菜单

void game_menu(){

printf("1.下注 2.猜拳 3.返回

");

}

//修改函数 0-成功 1-失败[page]

void alter(game_t *p,int *count,int *my){

intchose=0;

while(TRUE){

chose=0;

alter_menu();

printf("请选择:");

scanf("%d",&chose);

fflush_in();

switch(chose){

case1:          //改密

if(alter_pass(p,my)==0)

printf("修改密码成功

");

else

printf("修改密码失败

");

break;

case2:          //注销

if(del(p,count,my)==0){

printf("注销成功

");

log_ctrl(p,count,my);     //功能控制函数

}

else

printf("注销失败

");

break;

case3:          //返回

return;

break;

default:

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

");

}

}

}

//注销用户 0-成功 1-失败

int del(game_t *p,int *count,int *my){

charpass[30]=" ";

inti=0,chose=0;

printf("密码:");

fgets(pass,30,stdin);

pass[strlen(pass)-1]='

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值