利用c++编写一个飞机大战的小游戏
时间: 2023-08-20 09:46:55 浏览: 164
好的,下面是一个简单的飞机大战游戏的程序,您可以参考一下:
```c++
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
using namespace std;
const int WIDTH = 40; // 游戏窗口宽度
const int HEIGHT = 20; // 游戏窗口高度
class Plane // 飞机类
{
public:
int x,y;
Plane() {x = WIDTH/2; y = HEIGHT-2;} // 构造函数,初始化飞机位置
void move(int direction) // 控制飞机移动
{
if(direction == 'a' && x > 1) x--;
if(direction == 'd' && x < WIDTH-2) x++;
if(direction == 'w' && y > 1) y--;
if(direction == 's' && y < HEIGHT-2) y++;
}
};
class Bullet // 子弹类
{
public:
int x,y;
Bullet() {x = -1; y = -1;} // 构造函数,初始化子弹位置
void move() {if(y > 0) y--;} // 控制子弹移动
};
class Enemy // 敌机类
{
public:
int x,y;
Enemy() {x = rand()%(WIDTH-2)+1; y = 0;} // 构造函数,随机生成敌机位置
void move() {if(y < HEIGHT-2) y++; else y = -1;} // 控制敌机移动
};
class Game // 游戏类
{
public:
Plane plane; // 飞机对象
Bullet bullet; // 子弹对象
Enemy enemy; // 敌机对象
int score; // 分数
Game() {score = 0;} // 构造函数,初始化分数
void draw() // 绘制游戏界面
{
system("cls"); // 清屏
for(int i = 0; i <= HEIGHT; i++)
{
for(int j = 0; j <= WIDTH; j++)
{
if((i == plane.y && j >= plane.x-1 && j <= plane.x+1) || (i == bullet.y && j == bullet.x) || (i == enemy.y && j == enemy.x))
cout << "*"; // 绘制飞机、子弹、敌机
else if(i == HEIGHT) cout << "-"; // 绘制底部横线
else if(j == 0 || j == WIDTH) cout << "|"; // 绘制左右边界
else cout << " "; // 绘制空格
}
cout << endl;
}
cout << "Score: " << score << endl; // 显示分数
}
void update() // 更新游戏状态
{
if(kbhit()) plane.move(getch()); // 读取控制输入
bullet.move(); // 子弹移动
enemy.move(); // 敌机移动
if(enemy.y == plane.y && enemy.x >= plane.x-1 && enemy.x <= plane.x+1) // 判断是否碰撞
{
score++; // 分数加一
enemy = Enemy(); // 重新生成敌机
}
if(bullet.y == enemy.y && bullet.x == enemy.x) // 判断是否击中敌机
{
score += 10; // 分数加十
enemy = Enemy(); // 重新生成敌机
bullet = Bullet(); // 子弹回到初始位置
}
}
};
int main()
{
srand((unsigned)time(NULL)); // 初始化随机数种子
Game game;
while(1)
{
game.draw(); // 绘制游戏界面
game.update(); // 更新游戏状态
Sleep(50); // 休眠50毫秒
}
return 0;
}
```
这个程序使用了面向对象的编程方法,分别定义了飞机、子弹、敌机和游戏四个类,并在游戏类中实例化了这三个对象。游戏循环中,程序不断绘制游戏界面、更新游戏状态,并休眠50毫秒。在游戏状态更新中,程序接收控制输入并控制飞机移动,同时控制子弹和敌机移动,判断子弹与敌机的碰撞,以及敌机与飞机的碰撞,更新分数并重新生成敌机和子弹。
阅读全文