用C++写一个飞机大战游戏
时间: 2023-12-22 12:06:06 浏览: 103
好的,下面是一个简单的飞机大战游戏的C代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 40
#define HEIGHT 20
char map[HEIGHT][WIDTH]; // 地图
int player_x, player_y; // 玩家位置
int score; // 得分
// 初始化地图
void init_map() {
int i, j;
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
if (i == 0 || i == HEIGHT - 1 || j == 0 || j == WIDTH - 1) {
map[i][j] = '#'; // 边界
} else {
map[i][j] = ' '; // 空地
}
}
}
}
// 显示地图
void draw_map() {
system("cls"); // 清屏
int i, j;
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
printf("%c", map[i][j]);
}
printf("\n");
}
printf("Score: %d\n", score); // 显示得分
}
// 移动玩家
void move_player(int x, int y) {
map[player_y][player_x] = ' '; // 清空原位置
player_x += x;
player_y += y;
if (player_x < 1) player_x = 1; // 边界检测
if (player_x > WIDTH - 2) player_x = WIDTH - 2;
if (player_y < 1) player_y = 1;
if (player_y > HEIGHT - 2) player_y = HEIGHT - 2;
map[player_y][player_x] = '^'; // 绘制新位置
}
// 移动敌机
void move_enemy() {
int i, j;
for (i = HEIGHT - 2; i >= 0; i--) {
for (j = 1; j < WIDTH - 1; j++) {
if (map[i][j] == '*') {
map[i][j] = ' '; // 清空原位置
if (map[i + 1][j] == '^') { // 碰撞检测
map[i][j] = ' '; // 清空敌机
map[i + 1][j] = ' '; // 清空玩家
player_y = HEIGHT / 2; // 玩家回到中心
player_x = WIDTH / 2;
score -= 50; // 扣分
} else {
map[i + 1][j] = '*'; // 绘制新位置
if (i + 1 == HEIGHT - 1) { // 敌机到达底部
map[i + 1][j] = ' '; // 清空敌机
score += 10; // 得分
}
}
}
}
}
}
int main() {
init_map(); // 初始化地图
player_x = WIDTH / 2;
player_y = HEIGHT / 2;
map[player_y][player_x] = '^'; // 绘制玩家
score = 0;
while (1) {
draw_map(); // 显示地图
if (kbhit()) { // 检测键盘输入
char ch = getch();
switch (ch) {
case 'a':
move_player(-1, 0); // 左移
break;
case 'd':
move_player(1, 0); // 右移
break;
case 'w':
move_player(0, -1); // 上移
break;
case 's':
move_player(0, 1); // 下移
break;
case ' ': // 发射子弹
map[player_y - 1][player_x] = '|';
break;
}
}
move_enemy(); // 移动敌机
Sleep(100); // 延时
}
return 0;
}
```
这个游戏很简单,玩家通过上下左右键控制飞机的移动,按空格键发射子弹,得分规则是击落一个敌机得10分,被敌机撞到扣50分,玩家可以一直玩下去直到撞到敌机为止。
阅读全文