#include<stdlib.h> //system
#include<windows.h> //sleep
#include<conio.h> //getch()
int back_x,back_y; //背景
int man_x,man_y; //主角位置
int zidan_x[7],zidan_y[7]; //子弹位置
char input;
int gameover = 0;//判断结束
int wan;
void hide() //隐藏光标
{
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void gotoxy(int x,int y) //达到清屏效果
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle,pos);
}
void chushihua() //初始化
{
back_x = 13;
back_y = 18;
man_x = 5;
man_y = 8;
zidan_x[1] = rand()%back_x;
zidan_y[1] = rand()%back_y;
zidan_x[0] = rand()%back_x;
zidan_y[0] = rand()%back_y;
zidan_x[2] = rand()%back_x;
zidan_y[2] = rand()%back_y;
zidan_x[3] = rand()%back_x;
zidan_y[3] = rand()%back_y;
zidan_x[4] = rand()%back_x;
zidan_y[4] = rand()%back_y;
zidan_x[5] = rand()%back_x;
zidan_y[5] = rand()%back_y;
zidan_x[6] = rand()%back_x;
zidan_y[6] = rand()%back_y;
for(int i=0;i<7;i++)
{
if((man_x==zidan_x[i] && man_y==zidan_y[i])||(man_x==zidan_x[i]+1 && man_y==zidan_y[i])||(man_x==zidan_x[i]+1 && man_y==zidan_y[i]+1)||(man_x==zidan_x[i] && man_y==zidan_y[i]+1))
{
zidan_x[i] = zidan_x[i]+3;
zidan_y[i] = zidan_y[i]-5;
}
}
hide();
}
void withinput() //输入有关
{
if(kbhit())
{
input = getch();
if(input=='a')
man_y--;
if(input=='d')
man_y++;
if(input=='s')
man_x++;
if(input=='w')
man_x--;
}
}
void withoutinput() //输入无关
{
static int speed = 0;
if(speed<50)
speed++;
if(speed==50)
{
for(int i=0;i<7;i++)
{
if(zidan_x[i]<man_x)
zidan_x[i]++;
if(zidan_x[i]>man_x)
zidan_x[i]--;
if(zidan_y[i]<man_y)
zidan_y[i]++;
if(zidan_y[i]>man_y)
zidan_y[i]--;
}
speed = 0;
}
for(int i=0;i<6;i++)
{
if(zidan_x[i]==zidan_x[i+1] && zidan_y[i]==zidan_y[i+1])
{
zidan_x[i] = rand()%back_x;
zidan_y[i] = rand()%back_y;
}
}
}
void show()
{
gotoxy(0,0);
for(int i = 1;i<=back_x;i++)
{
for(int j = 1;j<=back_y;j++)
{
if(i==man_x && j==man_y)
printf("*");
if((i==zidan_x[1] && j==zidan_y[1])||(i==zidan_x[0] && j==zidan_y[0])||(i==zidan_x[2] && j==zidan_y[2])||(i==zidan_x[3] && j==zidan_y[3])||(i==zidan_x[4] && j==zidan_y[4])||(i==zidan_x[5] && j==zidan_y[5])||(i==zidan_x[6] && j==zidan_y[6]))
printf("#");
else printf(" ");
}
printf("|\n");
}
printf("时间 = ------------------------");
}
void game()
{
Sleep(500);
chushihua();
while(1)
{
show();
withoutinput();
withinput();
for(int i = 0;i<7;i++)
{
if(zidan_x[i]==man_x&&zidan_y[i]==man_y)
{
gameover = 1;
break;
}
}
if(gameover==1)
break;
}
system("cls");
printf("你输了!是否继续游戏\n");
printf("1. 继续 2. 再见");
scanf("%d",&wan);
if(wan==1)
game();
}
int main()
{
game();
}
这个是我自己写的是男人就100秒,被碰撞之后就弹出1 2选项,选了之后还是直接弹出了这个,为什么/?