C++射击游戏代码
这是一个简单的C++射击游戏的代码示例:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// 游戏界面的大小
const int WIDTH = 20;
const int HEIGHT = 10;
// 玩家的初始位置
const int PLAYER_X = WIDTH / 2;
const int PLAYER_Y = HEIGHT - 1;
// 子弹的速度
const int BULLET_SPEED = 1;
// 敌人的速度
const int ENEMY_SPEED = 1;
// 游戏状态
enum GameState {
PLAYING,
GAME_OVER
};
// 玩家
struct Player {
int x;
int y;
};
// 子弹
struct Bullet {
int x;
int y;
bool active;
};
// 敌人
struct Enemy {
int x;
int y;
bool active;
};
// 初始化玩家
void initPlayer(Player& player) {
player.x = PLAYER_X;
player.y = PLAYER_Y;
}
// 初始化子弹
void initBullet(Bullet& bullet) {
bullet.active = false;
}
// 初始化敌人
void initEnemy(Enemy& enemy) {
enemy.active = false;
}
// 发射子弹
void shootBullet(Player& player, Bullet& bullet) {
bullet.x = player.x;
bullet.y = player.y - 1;
bullet.active = true;
}
// 生成敌人
void generateEnemy(Enemy& enemy) {
enemy.x = rand() % WIDTH;
enemy.y = 0;
enemy.active = true;
}
// 更新游戏状态
void updateGame(Player& player, Bullet& bullet, Enemy& enemy, GameState& state) {
// 移动子弹
if (bullet.active) {
bullet.y -= BULLET_SPEED;
if (bullet.y < 0) {
bullet.active = false;
}
}
// 移动敌人
if (enemy.active) {
enemy.y += ENEMY_SPEED;
if (enemy.y >= HEIGHT) {
enemy.active = false;
state = GAME_OVER;
}
}
// 碰撞检测
if (bullet.active && enemy.active && bullet.x == enemy.x && bullet.y == enemy.y) {
bullet.active = false;
enemy.active = false;
}
// 检测游戏结束
if (state == PLAYING && player.x == enemy.x && player.y == enemy.y) {
state = GAME_OVER;
}
}
// 显示游戏界面
void drawGame(const Player& player, const Bullet& bullet, const Enemy& enemy) {
system("clear"); // 清空屏幕
for (int y = 0; y < HEIGHT; y++) {
for (int x = 0; x < WIDTH; x++) {
if (player.x == x && player.y == y) {
cout << "P";
} else if (bullet.active && bullet.x == x && bullet.y == y) {
cout << "*";
} else if (enemy.active && enemy.x == x && enemy.y == y) {
cout << "E";
} else {
cout << ".";
}
}
cout << endl;
}
}
int main() {
srand(time(NULL));
Player player;
Bullet bullet;
Enemy enemy;
GameState state = PLAYING;
initPlayer(player);
initBullet(bullet);
initEnemy(enemy);
while (state == PLAYING) {
drawGame(player, bullet, enemy);
char input;
cin >> input;
switch (input) {
case 'a':
player.x--;
break;
case 'd':
player.x++;
break;
case 's':
shootBullet(player, bullet);
break;
}
updateGame(player, bullet, enemy, state);
}
cout << "Game over!" << endl;
return 0;
}
这个代码实现了一个简单的射击游戏,玩家可以使用键盘上的"a"和"d"键左右移动,使用"s"键发射子弹。游戏的目标是尽可能地击中从上方随机生成的敌人,并避免被敌人碰到。游戏界面使用字符来表示玩家、子弹和敌人的位置。游戏状态通过枚举类型来表示,游戏循环在每次迭代中更新游戏状态、处理玩家输入、移动游戏元素并绘制游戏界面
原文地址: https://www.cveoy.top/t/topic/ixuH 著作权归作者所有。请勿转载和采集!