您的位置:首页 > 其它

拉灯游戏

2015-07-23 08:49 176 查看
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cstdlib>
#include<windows.h>
#include<conio.h>
#include<algorithm>
using namespace std;
bool f[10][10];
int sum,num;
int dir[5][2]={
0,1,
1,0,
-1,0,
0,-1,
0,0
};
const int n=5;

void game();

void gotoxy(int x,int y)
{
int xx=0x0b;
HANDLE h0utput;
COORD loc;
loc.X=x,loc.Y=y;
h0utput=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(h0utput,loc);
}

void change(int x,int y)
{
for(int i=0;i<n;i++)
{
int xx=x+dir[i][0];
int yy=y+dir[i][1];
f[xx][yy]^=1;
}
}

void print()
{
system("cls");
gotoxy(30,5);
printf("x |");
gotoxy(32,6);
printf("|");
for(int i=1;i<=n;i++)
{
gotoxy(30,i*2+5);
printf("%d | ",i);
for(int j=1;j<=5;j++)
if(f[i][j]==1)
printf("X ");
else
printf("O ");
gotoxy(32,i*2+6);
printf("|");
}
gotoxy(32,17);
printf("|");
gotoxy(30,16);
for(int i=1;i<=n*2+3;i++)
{
if(i==3)
gotoxy(34,16);
printf("-");
}
gotoxy(33,17);
printf(" ");
for(int i=1;i<=n;i++)
printf("%d ",i);
printf("y");
}

void gamemade()
{
srand(time(0));
system("cls");
sum=num=0;
memset(f,0,sizeof(f));
int p=rand()%30+1;
num=p;
for(int i=1;i<=p;i++)
{
int x=rand()%5+1;
int y=rand()%5+1;
change(x,y);
}
print();
}

void gamestart()
{
gotoxy(30,10);
printf("拉灯游戏");
gotoxy(26,12);
printf("按任意键开始游戏");
getch();
gamemade();
}

bool chick()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(f[i][j]==1)
return 0;
return 1;
}

void win()
{
system("cls");
gotoxy(30,10);
printf("You Win");
gotoxy(28,12);
printf("是否继续游戏");
gotoxy(29,13);
printf("是\\y,否\\n");
gotoxy(30,15);
char c[10];
scanf("%s",c);
if(c[0]=='n')
exit(0);
else
gamemade(),game();

}

void game()
{
while(!chick())
{
gotoxy(10,10);
printf("预期需要步数 : %d",num);
gotoxy(10,12);
printf("您已走步数 : %d",sum);
gotoxy(25,20);
printf("选择你想拉的灯:");
int x,y;
scanf("%d",&x);
if(x==12345678)
win();
else
scanf("%d",&y);
if(x<1||x>5||y<1||y>5)
{
system("cls");
system("color AC");
gotoxy(30,10);
printf("变态\n");
exit(0);
}
change(x,y);
print();
sum++;
}
win();
}

int main()
{
gamestart();
game();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: