您的位置:首页 > 其它

睡觉前 请关灯的 记录版本

2016-03-31 00:27 344 查看
#include"wz.h"
#include"sts.h"
#define  MAX  5
void show(int arr[][MAX])
{
for(int i=0;i<MAX;i++)
{
for(int j=0;j<MAX;j++)
{
cout<<arr[i][j]<< " ";
}
cout<<endl;
}
cout<<endl;
}

void play(int arr[][MAX],int x,int y)
{
if(x < 0 || y < 0 || x >= MAX || y >= MAX)
{
return ;
}
arr[x][y] = 1 -arr[x][y];
if(x-1 >= 0)
{
arr[x-1][y] = 1 - arr[x-1][y];
}
if(x+1 < MAX)
{
arr[x+1][y] = 1 - arr[x+1][y];
}
if(y-1 >= 0)
{
arr[x][y-1] = 1 - arr[x][y-1];
}
if(y+1 < MAX)
{
arr[x][y+1] = 1 - arr[x][y+1];
}
}

void cp(int v[][MAX],int k,int a[],int b[])
{
int i;
for(i=k;i>0;i--)
{ play(v,a[i],b[i]);show(v);}
cout<<"电脑显示完毕 系统已退出 "<<endl;
}
static  int  cc=1;
int player()
{

while(cc)
{
int a[100]={0};int b[100]={0};
int v[MAX][MAX] = {0};
int x,y;
int k=3,i=0;
int state=1;
time_t t;
srand((unsigned)time(&t));
k=rand()%5+1;
cout<<"熄灯前睡觉  欢迎来到第 "<<cc<<" 关"<<endl;
cc++;
while(i++<k)
{
x=rand()%5;
y=rand()%5;
a[i]=x;b[i]=y;
play(v,x,y);
}
show(v);
while( state)
{      cout<<"熄灯前睡觉 输入坐标(x,y),(0,0)退出"<<endl;
cin>>x>>y;
if(x==0&&y==0)cc=0;
x=x-1;y=y-1;
if(x>-1&&x<5&&y>-1&&y<5)
{    i++;   a[i]=x;b[i]=y;
if(i++==100){ cout<<"电脑显示完毕  玩家步数太多,系统已退出 "<<endl;state=0;}
play(v,x,y);  show(v);

}
if(x+y>10){ cp(v,i+1,a,b);state=0;}
}

}
}
int main()
{
cout<<"***************************************"<<endl;
cout<<"          欢迎参与点灯游戏     "<<endl<<"              由wzzx提供"<<endl;
cout<<"   游戏过程中输入x+y大于10时可以选择电脑演示求解步骤  "<<endl;
cout<<"***************************************"<<endl;
player();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: