新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > C语言猜拳游戏代码及分析

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

作者: 时间:2016-12-01 来源:网络 收藏
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]=;
if(!(strcmp(p[*my].password,pass))==0){
printf("密码输入错误");
return1;
}
printf("是否注销?1.是 2.否");
printf("请选择:");
scanf("%d",&chose);
fflush_in();
if(chose==1){
for(i=*my;i<*count-1;i++){
strcpy(p[i].name,p[i+1].name);
strcpy(p[i].password,p[i+1].password);
p[i].money=p[i+1].money;
p[i].times=p[i+1].times;
p[i].win=p[i+1].win;
}
}
else
return1;
*count-=1;
return0;
}
//修改密码 0-成功 1-失败
int alter_pass(game_t *p,int *my){
charpass[30]="",pass2[30]="";
intchose=0;
printf("密码:");
fgets(pass,30,stdin);
pass[strlen(pass)-1]=;
if(!(strcmp(p[*my].password,pass))==0){
printf("密码输入错误");
return1;
}
printf("提示:密码长度为6-28位");
printf("输入新密码:");
fgets(pass,30,stdin);
pass[strlen(pass)-1]=;
printf("确认新密码:");
fgets(pass2,30,stdin);
pass2[strlen(pass2)-1]=;
if(strcmp(pass,pass2)!=0){
printf("两次输入密码不一样");
return1;
}
if(strcmp(p[*my].password,pass)==0){
printf("新密码与原密码相同");
return1;
}
printf("是否改密?1.是 2.否");
printf("请选择:");
scanf("%d",&chose);
fflush_in();
if(chose==1)
strcpy(p[*my].password,pass);
else
return1;
return0;
}
//修改函数菜单
void alter_menu(){
printf("1.修改密码 2.注销 3.返回");
}
//充值函数
int pay(game_t *p,int *my){
inti=0;
doublemoney=0;
charpass[30]="";
charstr[10]="",str2[10]="";
printf("请输入金额:");
scanf("%lf",&money);
fflush_in();
if(money<=0.0)
return1;
//验证码
for(i=0;i<5;i++){
srand((unsigned)time(NULL)+i);
str[i]="0123456789abcdefghihklmnopqrstuvwxyz"[rand()%36];
}
printf("充值密码:%s",str);
printf("");
printf("请输入充值密码:");
fgets(str2,10,stdin);
str2[strlen(str2)-1]=;
if(strcmp(str,str2)!=0){
printf("充值密码输入错误");
return1;
}
printf("密码:");
fgets(pass,30,stdin);
pass[strlen(pass)-1]=;
if(!(strcmp(p[*my].password,pass))==0)
return1;
p[*my].money+=money;
return0;
}
//查看函数
void look(game_t *p,int *count,int *my){
intchose=0;
while(TRUE){
chose=0;
look_menu();
printf("请选择:");
scanf("%d",&chose);
fflush_in();
switch(chose){
case1: //个人
look_my(p,my);
break;
case2: //所有
look_all(p,count);
break;
case3: //返回
return;
break;
default:
printf("输入错误,请重新输入");
}
}
}
//查看所有
void look_all(game_t *p,int *count){
inti=0; //i表示游戏次数
intj=0; //j表示胜利次数
intk=0;
printf("用户 金额 胜率 ");
for(k=0;k<*count;k++){
i=p[k].times;
j=p[k].win;
printf("%s %.2f %.2lf%% ",p[k].name,
p[k].money,i==0?0:(double)j/i*100);
}
}
//查看个人
void look_my(game_t *p,int *my){
inti=0; //i表示游戏次数
intj=0; //j表示胜利次数
i=p[*my].times;
j=p[*my].win;
printf("用户名:%s",p[*my].name);
printf("密 码:%s",p[*my].password);
printf("金 额:%.2lf",p[*my].money);
printf("胜 率:%.2lf%%",i==0?0:(double)j/i*100);
}
//查看菜单
void look_menu(){
printf("1.个人 2.所有 3.返回");
}
//功能菜单函数
void ctrl_menu(){
printf("1.查看 2.游戏 3.充值 4.修改 5.排序 6.返回");
}
//登录控制函数
void log_ctrl(game_t *p,int *count,int*my){
intchose=0,chose2=0;
while(TRUE){
chose=0;
chose2=0;
log_menu();
printf("请选择:");
scanf("%d",&chose);
fflush_in();
switch(chose){
case1: //登录
if(log_in(p,count,my)==1)
printf("登录失败");
else{
printf("登录成功");
ctrl(p,count,my);
}
break;
case2: //注册
if(add_user(p,count)==1)
printf("注册失败");
else
printf("恭喜您,注册成功");
break;
case3: //退出
printf("是否退出?1.是 2.否");
printf("请选择:");
scanf("%d",&chose2);
fflush_in();
if(chose2==1){
if(exit_save(p,count)==0)
printf("信息保存成功");
else
printf("信息保存失败");
exit(0);
}
else
log_ctrl(p,count,my);
break;
default:
printf("输入错误,请重新输入");
}
}
}
//登录函数 0-成功 1-失败
int log_in(game_t *p,int *count,int *my){
inti=0,flag=0;
charname[30]="",pass[30]="";
printf("用户名:");
fgets(name,30,stdin);
name[strlen(name)-1]=;
flag=0;
for(i=0;i<*count;i++)
if(strcmp(p[i].name,name)==0){
*my=i;
flag=1;
break;
}
if(flag==0){
printf("用户不存在");
return1;
}
i=0;
while(i<3){
printf("密码:");
fgets(pass,30,stdin);
pass[strlen(pass)-1]=;
if(strcmp(p[*my].password,pass)==0){
return0;
}
printf("密码输入错误,请重新输入");
i++;
}
if(i==3){
printf("登录失败");
printf("登录次数超过三次,您将退出系统");
if(exit_save(p,count)==0) //保存信息
printf("信息保存成功");
else
printf("信息保存失败");
exit(1);
}
return0;
}
//注册函数 0-成功 1-失败
int add_user(game_t *p,int *count){
inti=0;
charname[30]="";
charpass[30]="",pass2[30]="";
if(*count>100){
printf("注册用户已满");
return1;
}
printf("提示:用户名长度为3-28");
printf("用户名:");
fgets(name,30,stdin);
name[strlen(name)-1]=;
if(strlen(name)<3||strlen(name)>28){ //用户名长度3-28
printf("用户名长度不合法");
return1;
}
for(i=0;i<*count;i++){
if(strcmp(p[i].name,name)==0){
printf("已有同名用户名");
return1;
}
}
strcpy(p[*count].name,name);
printf("提示:密码长度6-28");
printf("密码:");
fgets(pass,30,stdin);
pass[strlen(pass)-1]=;
if(strlen(pass)<6||
strlen(pass)>28){ //密码长度6-28
printf("密码长度不合法");
return1;
}
printf("确认密码:");
fgets(pass2,30,stdin);
pass2[strlen(pass2)-1]=;
if(!(strcmp(pass,pass2))==0){
printf("两次输入密码不一样");
return1;
}
strcpy(p[*count].password,pass);
*count+=1;
return0;
}
//登录菜单函数
void log_menu(){
printf("1.登录 2.注册 3.退出");
}
//清空缓存
void fflush_in(){
charc=;
c=getchar();
while(c!=){
c=getchar();
}
}
上一页 1 2 3 下一页

评论


技术专区

关闭