给我用c++写人操控的枪战小游戏
以下是一个简单的用 C++ 编写的人操控的枪战小游戏的示例代码:
#include <iostream>
#include <conio.h>
using namespace std;
// 游戏地图大小
const int MAP_WIDTH = 20;
const int MAP_HEIGHT = 10;
// 游戏角色
const char PLAYER_ICON = '@';
const int PLAYER_START_X = MAP_WIDTH / 2;
const int PLAYER_START_Y = MAP_HEIGHT / 2;
// 子弹
const char BULLET_ICON = '*';
const int BULLET_SPEED = 1;
// 敌人
const char ENEMY_ICON = '#';
const int ENEMY_SPEED = 1;
// 游戏状态
bool gameRunning = true;
// 游戏地图
char map[MAP_HEIGHT][MAP_WIDTH];
// 角色位置
int playerX = PLAYER_START_X;
int playerY = PLAYER_START_Y;
// 子弹位置和状态
int bulletX = -1;
int bulletY = -1;
bool bulletActive = false;
// 敌人位置和状态
int enemyX = -1;
int enemyY = -1;
bool enemyActive = false;
// 初始化游戏地图
void InitializeMap() {
for (int y = 0; y < MAP_HEIGHT; y++) {
for (int x = 0; x < MAP_WIDTH; x++) {
map[y][x] = ' ';
}
}
}
// 渲染游戏地图
void RenderMap() {
system("cls"); // 清屏
for (int y = 0; y < MAP_HEIGHT; y++) {
for (int x = 0; x < MAP_WIDTH; x++) {
if (y == playerY && x == playerX) {
cout << PLAYER_ICON; // 渲染玩家
} else if (y == bulletY && x == bulletX && bulletActive) {
cout << BULLET_ICON; // 渲染子弹
} else if (y == enemyY && x == enemyX && enemyActive) {
cout << ENEMY_ICON; // 渲染敌人
} else {
cout << map[y][x]; // 渲染地图
}
}
cout << endl;
}
}
// 更新游戏状态
void UpdateGame() {
// 检测按键输入
if (_kbhit()) {
char input = _getch();
switch (input) {
case 'a':
playerX--;
break;
case 'd':
playerX++;
break;
case 'w':
playerY--;
break;
case 's':
playerY++;
break;
case ' ':
if (!bulletActive) {
bulletX = playerX;
bulletY = playerY - 1;
bulletActive = true;
}
break;
case 'q':
gameRunning = false;
break;
}
}
// 更新子弹位置
if (bulletActive) {
bulletY -= BULLET_SPEED;
if (bulletY < 0) {
bulletActive = false;
}
}
// 更新敌人位置
if (!enemyActive) {
enemyX = rand() % MAP_WIDTH;
enemyY = MAP_HEIGHT - 1;
enemyActive = true;
} else {
enemyY -= ENEMY_SPEED;
if (enemyY < 0) {
enemyActive = false;
}
}
// 检测碰撞
if (bulletActive && enemyActive && bulletX == enemyX && bulletY == enemyY) {
bulletActive = false;
enemyActive = false;
}
}
int main() {
InitializeMap();
while (gameRunning) {
RenderMap();
UpdateGame();
}
return 0;
}
这个示例代码实现了一个简单的人操控的枪战小游戏。玩家可以使用键盘上的 WASD 键来控制角色移动,空格键发射子弹,Q 键退出游戏。敌人会从随机位置出现并向上移动,玩家需要射击敌人以获得分数。请注意,这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展
原文地址: https://www.cveoy.top/t/topic/hTBk 著作权归作者所有。请勿转载和采集!