猜数字实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《程序设计课程设计》题目:《猜数字》游戏
物联网工程学院计算机科学与技术专业
学号:
学生姓名:孙文佳
班级:计科1305
成绩:
设计思路:
猜数字是一个比较益智的游戏,游戏规则也很简单,真正自己实现游戏的运行也并不是什么难事,下面就主要讲讲自己的设计思路。
大的框架是把函数封装在类中,这样就可以应用所学的类。
首先是随机产生一个4位整数,根据要求,最高位不能为0,且每一位的数不能相同。让系统随机产生4个个位数,这里就用到srand(time(NULL))获取系统的时间作为种子,防止每次运行的结果都是相同的。time()函数包含在头文件time.h中。用一个for语句,依次产生这四个数,因为要求最高位不能为0,这里就用一个while语句重新生成a[0],然后就是每位上的数不得相同,依然用while语句解决这个问题。
接着是提示用户输入一个四位数,把这个四位数各位上的数保存在数组b[4]中,然后就是比较b[4]和a[4],计算数字正确且位置正确的数的个数,还有数字正确但位置错误的数的个数(这应该是游戏的额核心),其实这一步也不难,就是利用一个for语句逐个比较b[j]与a[i],如果b[j]等于a[i],wrong++,然后判断i是否等于j,是的话right++,wrong--,如果猜了8次还不正确的话,提示用户是否继续,这里用一个switch语句就行了。如果猜了15次还不正确的话,提示用户游戏失败,是否重新玩一局。在此之前把这次的记录写入txt文件中,这里就用到c++的输入输出流,对于数据的保存只要学会格式,依葫芦画瓢即可。还有就是数据的读取,在游戏结束时输出上一局的结果。
程序代码:
#include
#include
#include
#include
using namespace std;
class game{
public:
void showfunction();
void showfunction2();
void target();
void start();
void tips();
void selection();
private:
int a[4];
};
void gotoxy(int x, int y){
HANDLE hCon;
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD setps;
setps.X = x;
setps.Y = y;
SetConsoleCursorPosition(hCon,setps);
}
void data_load(){
ifstream e;
int count=0;
int b[4],right,wrong;
e.open("Data.txt",ios::binary|ios::in);
if(e){
e.seekg( (count++) * sizeof(int),ios::beg);
e.read( (char *)&right,sizeof(int));
e.seekg( (count++) * sizeof(int),ios::beg);
e.read( (char *)&("A"),sizeof(int));
e.seekg( (count++) * sizeof(int),ios::beg);
e.read( (char *)&wrong,sizeof(sizeof(int)));
e.seekg( (count++) * sizeof(int),ios::beg);
e.read( (char *)&("B"),sizeof(int));
cout<<"上一局结果是:"< } } void quit(){ gotoxy(0,10); cout<<" "<<"* * * * * * * * * * * * * * * * * * * * * * *"< cout<<" "<<"* 正在退出游戏,请稍后(loading......) *"< cout<<" "<<"* * * * * * * * * * * * * * * * * * * * * * *"< Sleep(1500); system("cls"); } void game::selection(){ int n; cout<<" "<<"** * * * * * * * * * * * * **"< cout<<" "<<"*1:返回主菜单。2:退出游戏.*"< cout<<" "<<"** * * * * * * * * * * * * **"< cout<<"输入你的选择:"; cin>>n; switch(n){ case 1 : system("cls"); showfunction(); break; case 2 : system("cls"); quit(); break; } } void game::tips(){ gotoxy(0,6); cout<<" "<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"< cout<<" "<<"* 游戏规则如下: *"< cout<<" "<<"* 系统会随机产生1个各位互相不相同的4位数,然后你有10次机会去猜。当你*"< cout<<" "<<"* 猜错了,会自动提示你离答案的差距。然后你再根据提示去猜,直到猜出或者*"< cout<<" "<<"* 10次机会用完为止。*"< cout<<" "<<"* 这个游戏考1个人的逻辑推理能力。祝你好运!*"< cout<<" "<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"< selection(); } void game::showfunction(){ int f,t=1; gotoxy(0,5); cout<<" "<<"** * * * * * * * * * * * * * * * * * * *"< cout<<" "<<"* 游戏菜单*"< cout<<" "<<"** * * * * * * * * * * * * * * * * * * *"< cout<<" "<<"* 1、开始游戏