失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言小游戏-寻宝(幸运之星)

C语言小游戏-寻宝(幸运之星)

时间:2022-08-09 15:19:26

相关推荐

C语言小游戏-寻宝(幸运之星)

寻宝游戏

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<windows.h>typedef struct{char name[20];//姓名}Player;//玩家typedef struct{char name[20];//奖品float price;//价格}Price;//奖品typedef struct{Player a;//获奖的玩家Price b[3];//获奖的三件奖品}Record;//奖品int LoadPlayer(Player a[])//加载玩家信息{int i=0;FILE* fp;//文件指针fp=fopen("player.txt","r+");//打开文件if(fp==NULL)return 0;//打开失败返回0while(!feof(fp))//读取信息到文件结束{fscanf(fp,"%s\n",a[i].name);i++;}fclose(fp);//关闭文件return i;//返回读取到的玩家数量}void SavePlayer(Player a[],int n)//保存玩家信息{int i;FILE* fp;fp=fopen("player.txt","w+");//打开文件if(fp==NULL)return ;for(i=0;i<n;i++)//根据玩家数量 循环写入文件{fprintf(fp,"%s\n",a[i].name);}fclose(fp);//关闭文件}int LoadPrice(Price a[]){int i=0;FILE* fp;fp=fopen("price.txt","r+");if(fp==NULL)return 0;while(!feof(fp)){fscanf(fp,"%s %f\n",a[i].name,&a[i].price);i++;}fclose(fp);return i;}void SavePrice(Price a[],int n){int i;FILE* fp;fp=fopen("price.txt","w+");if(fp==NULL)return;for(i=0;i<n;i++){fprintf(fp,"%s %f\n",a[i].name,a[i].price);}fclose(fp);}int LoadRecord(Record a[]){int i=0;FILE* fp;fp=fopen("record.txt","r+");if(fp==NULL)return 0;while(!feof(fp)){fscanf(fp,"%s %s %f %s %f %s %f\n",a[i].a.name,a[i].b[0].name,&a[i].b[0].price,a[i].b[1].name,&a[i].b[1].price,a[i].b[2].name,&a[i].b[2].price);i++;}fclose(fp);return i;}void SaveRecord(Record a[],int n){int i;FILE* fp;fp=fopen("record.txt","w+");if(fp==NULL)return;for(i=0;i<n;i++){fprintf(fp,"%s %s %f %s %f %s %f\n",a[i].a.name,a[i].b[0].name,a[i].b[0].price,a[i].b[1].name,a[i].b[1].price,a[i].b[2].name,a[i].b[2].price);}fclose(fp);}int menu()//菜单{int choice;system("cls");printf("幸运之星\n");printf("1:开始游戏\n");printf("2:历史获奖\n");printf("3:添加玩家\n");printf("4:添加奖品\n");printf("0:退出\n");printf("请输入选择:");scanf("%d",&choice);return choice;}int AddPlayer(Player a[],int n)//增加玩家{system("cls");printf("请输入新增加的玩家姓名:");scanf("%s",a[n].name);//添加到尾部printf("新增成功!\n");system("pause");return n+1;//玩家数量+1}int AddPrice(Price a[],int n){system("cls");printf("请输入新增加的奖品名称:");scanf("%s",a[n].name);printf("请输入新增加的奖品价格:");scanf("%f",&a[n].price);printf("新增成功!\n");system("pause");return n+1;}int StartGame(Player a[],int an,Price b[],int bn,Record r[],int rn)//开始游戏{int i,k,now,j;int no[3];//奖品编号int arr[100]={0};srand(time(NULL));//设置随机数system("cls");if(an==0)//玩家数量为0{printf("本轮没有玩家!\n");system("pause");return rn;}if(bn==0)//奖品数量为0{printf("本轮没有奖品!\n");system("pause");return rn;}printf("本轮奖品为:\n");for(i=0;i<3;i++)//随机选择3个奖品{no[i]=rand()%bn;printf("奖品:%s\t价格:%.2f\n",b[no[i]].name,b[no[i]].price);strcpy(r[rn].b[i].name,b[no[i]].name);r[rn].b[i].price=b[no[i]].price;}for(i=0,now=0;i<an-1;i++)//循环人数-1次{do{k=rand()%6+1;//随机生成1-6}while(k>=an/2);for(j=0;j<k;)//走k步{if(arr[now]==0)//如果当前这个没有被淘汰{j++;//走一步now++;//到下一个人}else{now++;//不走 到下一个人}if(now>=an)now-=an;//超出最大范围 从0重新开始}arr[(now+an-1)%an]=1;//找到要淘汰的人printf("本轮色子为:%d\n",k);printf("本轮编号为%d的%s被淘汰!\n",(now+an-1)%an+1,a[(now+an-1)%an].name);}for(i=0;i<an;i++)//寻找最后一个没被淘汰的人 并且记录下来{if(arr[i]==0){printf("恭喜编号为:%d的%s获得所有奖品!\n",i+1,a[i].name);strcpy(r[rn].a.name,a[i].name);}}system("pause");return rn+1;}void History(Record r[],int n)//显示获奖记录{int i;system("cls");if(n==0){printf("无获奖记录!\n");system("pause");return;}printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","获奖人","奖品1","价格","奖品2","价格","奖品3","价格");for(i=0;i<n;i++){printf("%-10s%-10s%-10.2f%-10s%-10.2f%-10s%-10.2f\n",r[i].a.name,r[i].b[0].name,r[i].b[0].price,r[i].b[1].name,r[i].b[1].price,r[i].b[2].name,r[i].b[2].price);}system("pause");}int main(){int choice;Player p[100];int pn=LoadPlayer(p);//加载文件Price p2[100];int p2n=LoadPrice(p2);Record r[100];int rn=LoadRecord(r);do{choice=menu();switch(choice){case 1:rn=StartGame(p,pn,p2,p2n,r,rn);break;case 2:History(r,rn);break;case 3:pn=AddPlayer(p,pn);break;case 4:p2n=AddPrice(p2,p2n);break;}}while(choice!=0);SavePlayer(p,pn);SavePrice(p2,p2n);SaveRecord(r,rn);//保存文件return 0;}

如果觉得《C语言小游戏-寻宝(幸运之星)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。