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语言小游戏-寻宝(幸运之星)相关推荐
- C语言小游戏-寻宝猎人
1.游戏简介 (1)背景 有一天,主角偶然获得了一张藏宝图.看清了藏宝图上的坐标位置以后,主角决定去寻宝. (2)坐标 坐标为全局变量.本游戏采用1维坐标.当主角的当前坐标大于藏宝坐标之后,就算寻宝成 ...
- c语言小游戏代码矿井逃生_如何选择编程语言和逃生教程炼狱
c语言小游戏代码矿井逃生 A few weeks ago, I posted about my experience attempting to learn JavaScript, C#, Pytho ...
- c语言min函数_C语言探索之旅 | 第一部分第十课:第一个C语言小游戏
内容简介 前言 准备工作和建议 我的代码 改进方案 第一部分第十一课预告 1. 前言 上一课是 C语言探索之旅 | 第一部分第九课:循环语句 . 经过前面这么多课的努力,我们终于迎来了第一个比较正式的 ...
- C语言小游戏:文字冒险游戏
这是一个用Dev新写的游戏:冒险4.0,可选角色,可买彩票,可抽奖... 资源我放在了C语言小游戏.文字冒险-cocos2D文档类资源-CSDN文库,适合初学者学习
- C语言小游戏-五子棋
C语言小游戏-五子棋 全部代码如下: #include <easyx.h> #include <graphics.h> #include <conio.h> #in ...
- C语言小游戏设计报告
C语言小游戏设计报告 课程设计名称:贪吃蛇小游戏 专业班级:计科15-2 学号:150809229 姓名:XXX 一.设计目标 通过设计,培养学生对电脑的动手能力,使学生巩固<C语言程序设计&g ...
- C语言小游戏大全,C语言贪吃蛇小游戏(附源码)
一.C语言小游戏大全,C语言贪吃蛇小游戏(附源码) 贪吃蛇小游戏源码和更多C语言课设项目小游戏源码免 费 下 载 链 接 如下: c语言项目课设小游戏源码资料压缩包.zip-C文档类资源-CSDN下载 ...
- C语言小游戏,数字炸弹,手动设置炸弹的值和回合数。
C语言小游戏,数字炸弹,手动设置炸弹的值和回合数. 效果图: 代码部分: #include <stdio.h> void main() {int a,b;int d=35; //在这里手动 ...
- c语言课时设计猜坐标游戏,c语言小游戏课程设计报告.docx
c语言小游戏课程设计报告 中国地质大学 本科生课程论文封面 课程名称c语言课程设计 教师姓名陈喆老师 本科生姓名周宜诺 本科生学号XX 本科生专业土地资源管理 所在院系公共管理学院 类别: 日期: 课 ...
- c语言小游戏-飞机大战
今天我们来尝试用easyx图形库实现c语言小游戏-飞机大战(源代码和图片已经在结尾给出) 先引用头文件 #include<stdio.h> #include<time.h>// ...
最新文章
- unity3d游戏开发猜想——当程序猿老去
- hdu 1306(字符串匹配)
- html怎么查看cad文件,如何直接查看CAD格式的图纸
- SHELL基础学习必杀技之十三问
- win10系统由于服务器出错翻译失败,win10系统下谷歌浏览器翻译失败如何解决
- 2021-04-15 深入理解SLAM技术 【2】 SLAM的框架
- 经典排序算法 - 冒泡排序Bubble sort
- 如何debug函数_如何使用 pdb 来性感 debug 你的 Python 代码?
- 高等数理统计(part5)--分布族的完备性
- java当前4中引用_Java的四种引用
- Spring JdbcTemplate示例
- 大型翻车现场?人人车官博辟谣破产传闻 却被群嘲官博怕是还蒙在鼓里
- 华为机试HJ42:学英语
- 人人商城小程序服务器根目录,微擎通用-人人商城v3小程序安装步骤小程序配置说明...
- Oracle简单SQL语句(详细!!!)
- Python编程基础
- Thinkpad T410加内存
- APISpace 手机号码归属地API 方便好用
- Java TCP网络编程
- Repulsion Loss: Detecting Pedestrians in a Crowd 详解(遮挡下的行人检测)