在flappy bird游戏中 在添加多个障碍物时,后一个障碍物会变形。 (好像是前面的障碍物中的留的空造成的)
以下是完整代码:
```#include<iostream>
#include<cstdlib>
#include<conio.h>
#include<windows.h>
using namespace std;
int x=100;
int y=20;
int birdx=x/8;
int birdy=y/4;
int speed=0;
int bar1x=x/3;
int bar1y=rand()%(y/2);
int bar2x=x/2;
int bar2y=rand()%(y/2);
int count=0;
void notin();
void in();
void gotoxy(int x,int y)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X=x;
pos.Y =y;
SetConsoleCursorPosition(handle,pos);
}
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void map()
{
gotoxy(0,0) ;
HideCursor() ;
for(int i=1;i<y;++i)
{
for(int j=1;j<x;++j)
{
if(j==birdx&&i==birdy)
{
cout<<"\b"<<"鸟";
}
else if((j==bar1x&&(i>=1&&i<=bar1y)||j==bar1x&&(i>=bar1y+5&&i<=y))||(j==bar2x&&(i>=1&&i<=bar2y)||j==bar2x&&(i>=bar2y+5&&i<=y)))
cout<<"HH";
else
cout<<" ";
}
cout<<endl;
}
cout<<"得分:"<<count/6<<endl;
}
void control()
{
if(kbhit())
{
string ss;
ss=getch();
if(ss==" ")
{
if(birdy>3)birdy-=3;
}
}
}
void things()
{
if ((birdx==bar1x&& (birdy>=bar1y&&birdy<=bar1y+5))||(birdx==bar2x&& (birdy>=bar2y&&birdy<=bar2y+5)))
count+=1;
if(speed!=3)
{
speed++;
}
if(birdy!=y&&speed==3)
{
birdy+=1;
speed=0;
}
if(bar1x>0)
{
bar1x--;
}
if(bar2x>0)
{
bar2x--;
}
if(bar1x==0)
{
bar1x=x;
bar1y= rand()%(y/2);
while(bar1y==0)
{
bar1y= rand()%(y/2);
}
}
if(bar2x==0)
{
bar2x=x;
bar2y= rand()%(y/2);
while(bar2y==0)
{
bar2y= rand()%(y/2);
}
}
}
int main()
{
system("COLOR 17 ");
while(bar1y==0)
{
bar1y= rand()%(y/2);
}
while(1)
{
map();
things();
control();
if((birdx==bar1x&&(((birdy>1&&birdy<bar1y))||(birdy >bar1y+5&&birdy<y)))||(birdx==bar2x&&(((birdy>1&&birdy<bar2y))||(birdy >bar2y+5&&birdy<y))))
{
cout<<"YOU ARE FILLED!!"<<endl;
break;
}
}
}``