C++猜数字游戏
清夜吟-元宵节灯展
一、题目
猜数字游戏
二、实验开发环境
Visual
C++ 6.0
三、前言
猜数字游戏是休闲娱乐和智力锻炼的一种智力型游戏。
游戏规则:让系统随机产生一组数字,由游戏者输入要猜的数字,
然后,系统会将输入的数字与
随机生成的数字进行比较,当输入的数
字与随机生成的这组数字数值和位置完全对应时,就获得了胜利。
四、实验目的
(1)了解程序开发环境调试工具的使用;
(2)掌握小型系统的开发过程,学会用C++语言解决问题。
五、软件开发过程
(1)程序运行后呈现的游戏菜单上要有“开始游戏”、“查看游
戏规则”、“设置游戏难度”、“退出
游戏”等多项选择。因此可以采用
多文件结构来进行调用,由主函数来实现呈现游戏菜单与实现游戏者<
br>选择的功能,根据游戏者的选择来有选择的调用其他文件中的函数。
主函数用于设计游戏开始界面和调用其他文件中的函数:
(2)当
游戏者选择一项功能后,就要跳转到相应的界面,游戏开始
界面要清除掉,可以使用系统界面清除功能:
#include
system(
(3)当游戏者选择
的某一功能运行结束后,要按任意键返回游戏开
始界面,因此主函数需要用到循环语句:先定义变量a,
当a不等于4
时执行程序,后面要结束程序时,令a等于4就可以结束循环,进而
结束程序:
(4)首先游戏者查看游戏规则,当游戏者选择功能2后,主函数调
用rules(
)函数,这个函数就会输出游戏规则:
(5)开始游戏前要求先设置游戏难度,否则按默认
设置难度进行游戏。
事先将游戏难度系数设置为一个全局变量,并赋初值1(即最低难度
系数),若有进行难度设置,则可通过调用函数改变难度系数,游戏
难度系数必须为1~10,
如果输入其他数字,系统会要求重新输入:
(6)游戏者开始游戏后,首先系统产生与游戏
难度系数相等的几个
随机数并存放在数组a[]中,这需要一个函数来实现:
然后提示游戏者输入要猜的数字,输入后存放在数组b[]中;
将数组a和b进行比较,统计出数据相同且位置相同的个数k和数据
相同但位置不同的个数p:
游戏函数也要用循环语句,直到游戏者输入完全正确为止
(7)若游戏者想知道答案或中途退出游戏,则第一个数字输入10即
可:
实验源程序:
headf.h
void rules();
void game(int c);
int exit();
int
classes();
#include
#include
#include
#include
#include
using namespace std;
int a,c=1;
int
main()
{
while (a!=4)
{
cout<<
cout<<猜数字游戏
cout<<
co
ut<<开始游戏(yn)?
cout<<查看游戏规则
cout<<设置游戏的难易度
cout<<退出游戏
cout<<请选择功能:
cin>>a;
switch(a)
{case 1:system(
case
2:system(
case 3:system(
case 4:system(
}
cout<<按任意键继续....
getch();
system(
}
return 0;
}
#include
#include
using namespace std;
void rules()
{
cout<<猜字游戏规则:
cout<<可先设置难易度,如果不设置,则默认最低级,即第1级,难易度可分为1~10
级,1级猜一个数字,2级猜两个数字....10级猜10个数字;
cout<
<请输入猜测的数字(0~9),输入数字时要用空格分隔开每两个数字;
cout<<提示输入的数字
数值正确和位置正确的个数,输入的数字数值正确但位置不
对的个数;
cout<<不断的重
复2、3步,若猜数完全正确,提示游戏者胜利;若试了15次还不正
确,宣布游戏者失败。
}
#include
#include
int classes()
{
double c,y=1;
while(y)
{
cout<<设计游戏的难易度->
cout<<请输入1到10之间的任意正整
数n为难度系统(难易度级别):
cin>>c;
if(c==1||c==2||c==3
||c==4||c==5||c==6||c==7||c==8||c==9||c==10) y=0;
else cout<
}
return c;
#include
#include
#include
#include
using
namespace std;
void game(int c)
{
int a[10];
double b[10];
void create_Ary(int a[],int c);
cout<<游戏的难易度为:若要答案且退出,第一个数字输入
10)
create_Ary(a,c);
int
x=1,n=1;
while (x)
{
int
i,j,k=0,p=0;
cout<<请输入个要猜的数字(用空格隔开每个数字):
fo
r(j=0;j
for(j=0,k;j
}
for(j=0;j
for(i=j+1;i
if(b[j]==a[j]) k++; 统计出数据相同且位置相同的个数k
}
}
if(b[i]==a[j]) p++;
for(j=0;j
}
if(k==c)
for(i=j+1;i
}
if(a[i]==b[j]) p++;
统计出数据相同但位置不同的个数p
{
cout<<数据相同且位置相同的个数:
cout<<数据相同但位置
不同的个数:
if(c>=3&&n==1)
cout<<第一名!你的天赋简直是前无古人后无来者!!!
else
{
cout<<数据相同且位置相同的个数:
}
else if(nc<=2)
cout<<你的天赋非常好,太棒了!!
else if(nc<=3)
cout<<你的天赋不错,赞一个!
else if(nc<=4)
cout<<你是有天赋的,继续努力!!
else
cout<<你是游戏的胜利者!
cout<
cout<<数据相同但位置不同的个数:
if(n==15)
{
}
}
}
}
cout<
x=0;
n++;
if(b[0]==10)
{
}
cout<
cout<<游戏已结束,
void create_Ary(int
a[],int c)
{
srand(time(0));
使随机数函数rand产生一序列随机数而设置种子值
int i=0,j,x;
while (i
}
x=rand();
if (x<0||x>=10) continue;
j=0;
while (j<=i&&a[j]!=x) j++; 舍弃相同元素
if (j>i) a[i++]=x; 不同的元素送入数组
}
#include
#include
using namespace std;
int exit()
{
}
int main();
char b;
while (b!='y'&&b!='Y'&&b!='n'&&b!='N')
{
cout<<退出游戏吗?(yn)
cin>>b;
if(b=='y'||b=='Y')
{
}
else if (b=='n'||b=='N') return 0;
else
cout<<输入错误,请输入y(Y)或n(N).
}
cout<<欢迎下次再来!
return 4;
六、系统测试情况
(1)开始游戏
(2)输入2,查看游戏规则
(3)按任意键返回主菜单后,输入3,设计游戏难度
(4)按任意键返回主菜单后,输入1,开始游戏
(5)若游戏者想知道答案或中途退出游戏,则第一个数字输入10即
可