使用c语言写出飞机大战
时间: 2023-09-19 13:11:46 浏览: 120
好的,下面是一个简单的飞机大战游戏,代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 50 // 游戏区域宽度
#define HEIGHT 20 // 游戏区域高度
int score = 0; // 玩家得分
// 定义玩家和敌人的结构体
struct {
int x, y; // 坐标
int health; // 生命值
} player, enemy;
// 初始化游戏
void init()
{
player.x = WIDTH / 2;
player.y = HEIGHT - 2;
player.health = 3;
enemy.x = rand() % WIDTH;
enemy.y = 0;
enemy.health = 1;
}
// 绘制游戏界面
void draw()
{
system("cls"); // 清屏
// 绘制玩家飞机
printf(" ");
for(int i = 0; i < WIDTH; i++)
{
printf("-");
}
printf("\n");
for(int i = 0; i < HEIGHT; i++)
{
printf("|");
for(int j = 0; j < WIDTH; j++)
{
if(i == player.y && j == player.x)
{
printf("P"); // 绘制玩家飞机
}
else if(i == enemy.y && j == enemy.x)
{
printf("E"); // 绘制敌人飞机
}
else
{
printf(" ");
}
}
printf("|\n");
}
printf(" ");
for(int i = 0; i < WIDTH; i++)
{
printf("-");
}
printf("\n");
printf("Score: %d\n", score); // 显示得分
printf("Health: %d\n", player.health); // 显示玩家生命值
}
// 更新游戏状态
void update()
{
// 移动敌人飞机
enemy.y++;
// 判断敌人是否被击中
if(player.x == enemy.x && player.y == enemy.y)
{
player.health--; // 玩家生命值减1
enemy.health--; // 敌人生命值减1
if(enemy.health == 0)
{
score++; // 玩家得分加1
enemy.health = 1;
enemy.x = rand() % WIDTH;
enemy.y = 0;
}
}
// 判断游戏是否结束
if(player.health == 0)
{
printf("游戏结束!得分:%d\n", score);
exit(0);
}
}
int main()
{
init(); // 初始化游戏
while(1)
{
draw(); // 绘制游戏界面
if(kbhit()) // 判断是否有键盘输入
{
char ch = getch();
if(ch == 'a' && player.x > 0)
{
player.x--; // 左移玩家飞机
}
else if(ch == 'd' && player.x < WIDTH - 1)
{
player.x++; // 右移玩家飞机
}
}
update(); // 更新游戏状态
Sleep(100); // 等待100毫秒,控制游戏速度
}
return 0;
}
```
这个游戏的规则是:玩家控制一个飞机,通过左右移动避开敌机并击落敌机。每击落一个敌机,玩家得1分,每被敌机撞击一次,玩家生命值减1。当玩家生命值减为0时,游戏结束。
阅读全文