break;
}
cout<<"\t\t\t\t";
cin>>x;
}
iofile.close();
}
voidshow_explain(){//查看游戏说明
system("cls");
inta;
cout<<"\t\t\t\t游戏说明\n";
cout<<"\t****************************************************************\n";
cout<<"\t****************************************************************\n";
cout<<"\t①:
游戏开始,系统随机产生一位不重复的N位数字.N的大小与等级有关\n";
cout<<"\t\t初级:
N=3\t中级:
N=4\t高级:
N=5\t\n";
cout<<"\t②:
游戏者输入所猜的不重复数字,并按回车提交,提交的数据位数应与\n";
cout<<"\tN的大小一致,当数据位数大于N时,只取前N位;\n";
cout<<"\t③:
系统将提交的数与它自动产生的数进行比较,输出结果“*A*B”形式.\n";
cout<<"\t其中A代表数字正确相应位置也正确,B代表数字正确但位置不正确.如:
\n";
cout<<"\t1A3B表示有1个数字的位置正确且数值也正确,除此以外,还猜对了3个数\n";
cout<<"\t字但位置不对.即已经猜出4位数据,但有3个数据位置不对!
\n";
cout<<"\t④:
游戏者有限定次数的猜测机会,在规定次数内完成,则游戏成功.\n";
cout<<"\t否则,游戏失败.其中.猜测次数与等级有关\n";
cout<<"\t\t初级:
10次\t中级:
9次\t高级:
8次。
\n";
cout<<"\t⑤:
按完成游戏所用的时间和次数计算游戏者所得分数,游戏等级越高,\n";
cout<<"\t猜测所用的次数越少.得分越高!
若游戏者得分比系统已经保存的分数\n";
cout<<"\t的高,将提示要求输入游戏者信息.并且保存在最佳排行之中.\n";
cout<<"\t⑥:
游戏者可以自行设置等级!
\n";
cout<<"\t**********************************************************\n";
cout<<"\t**********************************************************\n";
cout<<"\t1.返回主菜单\n"<cin>>a;
}
voidclean_data(){
datatemp,temp2;
iofile.open("dataf.dat",ios:
:
in|ios:
:
app|ios:
:
binary);
temp.goal=0;
strcpy(temp.name,"nothing");
for(inti=0;i<3;i++)
iofile.write((char*)&temp,sizeof(temp));
iofile.read((char*)&temp2,sizeof(temp2));
cout<iofile.close();
}
voiddisplay(){
system("cls");
cout<<"\n\n\n\n";
cout<<"\t\t\t\t主菜单\n";
cout<<"\t****************************************************************\n";
cout<<"\t****************************************************************\n";
cout<<"\t\t\t\t1.新游戏\n\n";
cout<<"\t\t\t\t2.查看最高分\n\n";
cout<<"\t\t\t\t3.游戏说明\n\n";
cout<<"\t\t\t\t4.清空所有数据\n\n";
cout<<"\t\t\t\t5.退出游戏\n\n";
cout<<"\t****************************************************************\n";
cout<<"\t****************************************************************\n";
cout<}//清空所有数据
voidchoose_menu(){
intx;
display();
cout<<"\t\t\t\t";
cin>>x;
while(x!
=5){
switch(x){
case1:
new_game();
break;
case2:
show_tiptop();
break;
case3:
show_explain();
break;
case4:
clean_data();
break;
}
display();
cout<<"\t\t\t\t";
cin>>x;
}
}
四运行结果
一游戏说明(生命游戏)
而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示蓝色,死则显示白色。
每一个格子旁边都有邻居格子存在,如果我们把3*3的9个格子构成的正方形看成一个基本单位的话,那么这个正方形中心的格子的邻居就是它旁边的8个格子。
每个格子的生死遵循下面的原则:
1)如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变)。
2)如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
3)在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变设定图像中每个像素的初始状态后依据上述的游戏规则演绎生命的变化,由于初始状态和迭代次数不同,将会得到令人叹服的优美图案)。
三.程序代码
#include
usingnamespacestd;
#include
#include
structCell
{
boollive;
intothers;
};
voidmain()
{
Cellcell[40][40];
for(inti=0;i<40;i++)
for(intj=0;j<40;j++)
{
cell[i][j].live=true;
cell[i][j].others=0;
}
while
(1)
{
for(inti=0;i<40;i++)
for(intj=0;j<40;j++)
{
cell[i][j].others=0;
}
for(inti=0;i<40;i++)
{
for(intj=0;j<40;j++)
{
if(cell[i][j].live)
cout<<"$";
else
cout<<"-";
}
cout<}
for(inti=0;i<40;i++)
for(intj=0;j<40;j++)
{
if((i-1)>=0&&(j-1)>=0&&cell[i-1][j-1].live)
cell[i][j].others++;
if((i-1)>=0&&cell[i-1][j].live)
cell[i][j].others++;
if((i-1)>=0&&(j+1)<40&&cell[i-1][j+