#include<iostream>
#include<cstdlib>
#include<conio.h>
#include<windows.h>
#include<string>
#include<ctime>
using namespace std;
int speed = 0;
int speed1 = 0;
const int x = 100;
const int y = 20;
const int up = 0;
const int down = 18;
int count1 = 0;
class bird
{
public:
bird(int x, int y)
{
birdx = x;
birdy = y;
}
int birdx;
int birdy;
};
class pillar
{
public:
pillar(int x1, int y1)
{
if (y1 == 0)
{
y1 = rand() % (y / 2);
}
pillarx = x1;
pillary = y1;
}
int pillarx;
int pillary;
};
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 show(bird &birds,pillar &pillar1, pillar &pillar2, pillar &pillar3, pillar &pillar4, pillar& pillar5)
{
gotoxy(0, 0);
HideCursor();
for (int i = 1; i < y; ++i)
{
for (int j = 1; j < x; ++j)
{
if(j == birds.birdx && i == birds.birdy)
{
cout <<"\b"<<"鸟";
}
else if (j == pillar1.pillarx && (i >= 1 && i <= pillar1.pillary) || j == pillar1.pillarx && (i >= pillar1.pillary + 5 && i <= y))
{
cout << "*";
}
else if (j == pillar2.pillarx && (i >= 1 && i <= pillar2.pillary) || j == pillar2.pillarx && (i >= pillar2.pillary + 5 && i <= y))
{
cout << "*";
}
else if (j == pillar3.pillarx && (i >= 1 && i <= pillar3.pillary) || j == pillar3.pillarx && (i >= pillar3.pillary + 5 && i <= y))
{
cout << "*";
}
else if (j == pillar4.pillarx && (i >= 1 && i <= pillar4.pillary) || j == pillar4.pillarx && (i >= pillar4.pillary + 5 && i <= y))
{
cout << "*";
}
else if (j == pillar5.pillarx && (i >= 1 && i <= pillar5.pillary) || j == pillar5.pillarx && (i >= pillar5.pillary + 5 && i <= y))
{
cout << "*";
}
else
{
cout << " ";
}
}
cout << endl;
}
}
void birdmove(bird &birds)
{
if (kbhit())
{
string move;
move = getch();
if (move == " ")
{
if (birds.birdy >= 2)
{
birds.birdy -= 2;
}
}
}
}
void move(bird& birds, pillar& pillar1, pillar& pillar2, pillar& pillar3, pillar& pillar4, pillar& pillar5)
{
if (birds.birdx == pillar1.pillarx && (birds.birdy > pillar1.pillary && birds.birdy < pillar1.pillary + 5))
{
count1++;
}
else if (birds.birdx == pillar2.pillarx && (birds.birdy > pillar2.pillary && birds.birdy < pillar2.pillary + 5))
{
count1++;
}
else if (birds.birdx == pillar3.pillarx && (birds.birdy > pillar3.pillary && birds.birdy < pillar3.pillary + 5))
{
count1++;
}
else if (birds.birdx == pillar4.pillarx && (birds.birdy > pillar4.pillary && birds.birdy < pillar4.pillary + 5))
{
count1++;
}
if (birds.birdx == pillar5.pillarx && (birds.birdy > pillar5.pillary && birds.birdy < pillar5.pillary + 5))
{
count1++;
}
if (speed != 3)
{
speed++;
}
if (birds.birdy !=y && speed==3)
{
speed = 0;
birds.birdy += 1;
}
if (speed1 != 5)
{
speed1++;
}
else if (speed1 == 5)
{
if (pillar1.pillarx > 0)
{
pillar1.pillarx--;
}
if (pillar2.pillarx > 0)
{
pillar2.pillarx--;
}
if (pillar3.pillarx > 0)
{
pillar3.pillarx--;
}
if (pillar4.pillarx > 0)
{
pillar4.pillarx--;
}
if (pillar5.pillarx > 0)
{
pillar5.pillarx--;
}
if (pillar1.pillarx == 0)
{
pillar1.pillarx = pillar5.pillarx + 10;
pillar1.pillary = rand() % (y / 2);
while (pillar1.pillary == 0)
{
pillar1.pillary = rand() % (y / 2);
}
}
if (pillar2.pillarx == 0)
{
pillar2.pillarx = pillar1.pillarx + 10;
pillar2.pillary = rand() % (y / 2);
while (pillar2.pillary == 0)
{
pillar2.pillary = rand() % (y / 2);
}
}
if (pillar3.pillarx == 0)
{
pillar3.pillarx = pillar2.pillarx + 10;
pillar3.pillary = rand() % (y / 2);
while (pillar3.pillary == 0)
{
pillar3.pillary = rand() % (y / 2);
}
}
if (pillar4.pillarx == 0)
{
pillar4.pillarx = pillar3.pillarx + 10;
pillar4.pillary = rand() % (y / 2);
while (pillar4.pillary == 0)
{
pillar4.pillary = rand() % (y / 2);
}
}
if (pillar5.pillarx == 0)
{
pillar5.pillarx = pillar4.pillarx + 10;
pillar5.pillary = rand() % (y / 2);
while (pillar5.pillary == 0)
{
pillar5.pillary = rand() % (y / 2);
}
}
speed1 = 0;
}
}
void startshow()
{
cout << "********笨鸟先飞**********" << endl;
cout << "1.开始游戏" << endl;
cout << "2.退出" << endl;
}
void program()
{
srand(time(0));
bird birds(x / 20, y / 2);
pillar pillar1(x / 5, rand() % (y / 2));
pillar pillar2(x / 5 + 10, rand() % (y / 2));
pillar pillar3(x / 5 + 20, rand() % (y / 2));
pillar pillar4(x / 5 + 30, rand() % (y / 2));
pillar pillar5(x / 5 + 40, rand() % (y / 2));
while (1)
{
show(birds, pillar1, pillar2, pillar3, pillar4, pillar5);
move(birds, pillar1, pillar2, pillar3, pillar4, pillar5);
birdmove(birds);
if (birds.birdx == pillar1.pillarx && ((birds.birdy >= 1 && birds.birdy <= pillar1.pillary) || (birds.birdy >= pillar1.pillary + 5 && birds.birdy <= 20)))
{
cout << "game over!" << endl;
break;
}
else if (birds.birdx == pillar2.pillarx && ((birds.birdy >= 1 && birds.birdy <= pillar2.pillary) || (birds.birdy >= pillar2.pillary + 5 && birds.birdy <= 20)))
{
cout << "game over!" << endl;
break;
}
else if (birds.birdx == pillar3.pillarx && ((birds.birdy >= 1 && birds.birdy <= pillar3.pillary) || (birds.birdy >= pillar3.pillary + 5 && birds.birdy <= 20)))
{
cout << "game over!" << endl;
break;
}
else if (birds.birdx == pillar4.pillarx && ((birds.birdy >= 1 && birds.birdy <= pillar4.pillary) || (birds.birdy >= pillar4.pillary + 5 && birds.birdy <= 20)))
{
cout << "game over!" << endl;
break;
}
else if (birds.birdx == pillar5.pillarx && ((birds.birdy >= 1 && birds.birdy <= pillar5.pillary) || (birds.birdy >= pillar5.pillary + 5 && birds.birdy <= 20)))
{
cout << "game over!" << endl;
break;
}
cout << "得分:" << count1 << endl;
}
}
int main()
{
startshow();
int choose;
cin >> choose;
switch (choose)
{
case 1:
program();
break;
case 2:
return 0;
}
return 0;
}
基于c++实现小游戏笨鸟先飞(课程设计)
版权申诉
49 浏览量
2024-01-15
20:07:40
上传
评论 1
收藏 2KB ZIP 举报
机智的程序员zero
- 粉丝: 2126
- 资源: 4246
最新资源
- tomcat安装及配置教程.md
- 51单片机贴片心形灯原理图PCB程序 亚克力外壳.dwg资料
- 户型为单家独院式图纸编号D068-三层-20.60&13.40米-施工图.dwg
- 农村小别墅图纸编号D067-三层-10.00&11.50米- 施工图.dwg
- 三层独栋别墅图纸编号D066-三层-12.00&12.00米- 施工图.dwg
- 农村小别墅图纸编号D065-三层-14.40&18.55米-施工图.dwg
- 基于YOLOv8检测高铁吊弦缺陷实现的系统的Python源码+文档说明+训练源文件+模型.zip
- 三层农村小别墅图纸编号D064-三层-13.80&22.20米-施工图.dwg
- 三层别墅图纸编号D063-三层-13.57&17.40米- 施工图.dwg
- STC IAP15F2K61S2单片机i2c 接口PCF8591-ADC实验+DAC实验 KEIL例程源码+开发板硬件原理图
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈