用C++和easyx写一个飞机大战小游戏
时间: 2024-04-18 12:29:28 浏览: 196
当然可以!下面是一个简单的用C++和EasyX库编写的飞机大战小游戏的示例代码:
```c++
#include <graphics.h>
#include <conio.h>
#define WIDTH 480
#define HEIGHT 640
IMAGE bgImg; // 背景图片
IMAGE planeImg; // 飞机图片
IMAGE bulletImg; // 子弹图片
IMAGE enemyImg; // 敌机图片
int planeX = WIDTH / 2 - 50; // 飞机初始位置
int planeY = HEIGHT - 150;
int bulletX; // 子弹位置
int bulletY;
int enemyX; // 敌机位置
int enemyY;
bool isBulletExist = false; // 子弹是否存在
bool isEnemyExist = false; // 敌机是否存在
void init() {
initgraph(WIDTH, HEIGHT); // 初始化绘图窗口
loadimage(&bgImg, _T("background.jpg")); // 加载背景图片
loadimage(&planeImg, _T("plane.png")); // 加载飞机图片
loadimage(&bulletImg, _T("bullet.png")); // 加载子弹图片
loadimage(&enemyImg, _T("enemy.png")); // 加载敌机图片
}
void draw() {
putimage(0, 0, &bgImg); // 绘制背景图片
putimage(planeX, planeY, &planeImg); // 绘制飞机图片
if (isBulletExist) {
putimage(bulletX, bulletY, &bulletImg); // 绘制子弹图片
}
if (isEnemyExist) {
putimage(enemyX, enemyY, &enemyImg); // 绘制敌机图片
}
}
void updateWithoutInput() {
if (isBulletExist) {
bulletY -= 5; // 更新子弹位置
if (bulletY <= 0) {
isBulletExist = false; // 子弹超出屏幕,不存在
}
}
if (isEnemyExist) {
enemyY += 2; // 更新敌机位置
if (enemyY >= HEIGHT) {
isEnemyExist = false; // 敌机超出屏幕,不存在
}
}
}
void updateWithInput() {
if (_kbhit()) {
char ch = _getch();
if (ch == ' ') { // 按下空格键,发射子弹
if (!isBulletExist) {
bulletX = planeX + 45; // 子弹的初始位置
bulletY = planeY - 30;
isBulletExist = true;
}
}
else if (ch == 'a' && planeX > 0) { // 按下左箭头键,飞机向左移动
planeX -= 10;
}
else if (ch == 'd' && planeX < WIDTH - 100) { // 按下右箭头键,飞机向右移动
planeX += 10;
}
}
}
int main() {
init();
while (true) {
draw();
updateWithoutInput();
updateWithInput();
Sleep(10); // 控制游戏帧率
}
closegraph();
return 0;
}
```
请确保在运行前,将`background.jpg`、`plane.png`、`bullet.png`和`enemy.png`这四个图片放在与源代码相同的目录下。
这只是一个简单的示例,你可以根据自己的需求进一步完善游戏的功能和画面效果。希望对你有帮助!
阅读全文