猜数字实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、开始游戏

相关文档
最新文档