直接上代码
cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
// 生成一个随机整数
int randomInt(int min, int max) {
return min + (std::rand() % (max - min + 1));
}
int main() {
std::srand(static_cast<unsigned int>(std::time(nullptr)));
// 地图尺寸
int mapWidth = 20;
int mapHeight = 10;
// 初始化玩家和敌人位置
int playerX = randomInt(0, mapWidth - 1);
int playerY = randomInt(0, mapHeight - 1);
int enemyX = randomInt(0, mapWidth - 1);
int enemyY = randomInt(0, mapHeight - 1);
bool gameover = false;
int score = 0;
// 游戏循环
while (!gameover) {
// 渲染地图
for (int y = 0; y < mapHeight; ++y) {
for (int x = 0; x < mapWidth; ++x) {
if (x == playerX && y == playerY) {
std::cout << 'P'; // 玩家位置
}
else if (x == enemyX && y == enemyY) {
std::cout << 'E'; // 敌人位置
}
else {
std::cout << '.'; // 空白位置
}
}
std::cout << '\n';
}
// 获取用户输入
char action;
std::cout << "移动玩家(WASD):";
std::cin >> action;
// 根据用户输入移动玩家
switch (action) {
case 'W':
if (playerY > 0) {
playerY--;
}
break;
case 'A':
if (playerX > 0) {
playerX--;
}
break;
case 'S':
if (playerY < mapHeight - 1) {
playerY++;
}
break;
case 'D':
if (playerX < mapWidth - 1) {
playerX++;
}
break;
default:
std::cout << "未知动作。\n";
continue;
}
// 判断是否与敌人位置相同
if (playerX == enemyX && playerY == enemyY) {
score++;
std::cout << "你击败了敌人!得分:" << score << "\n";
// 生成新的敌人位置
enemyX = randomInt(0, mapWidth - 1);
enemyY = randomInt(0, mapHeight - 1);
}
// 判断是否达到最大得分
if (score >= 5) {
std::cout << "你获得了胜利!\n";
gameover = true;
}
}
std::cout << "游戏结束。\n";
return 0;
}
这个游戏是一个简化版的吃鸡游戏。你需要通过键盘输入W、A、S、D来移动玩家位置,并击败敌人来获得积分。当你累计得分达到5分时,游戏结束,你将获得胜利。地图中的P表示玩家位置,E表示敌人位置,.表示空白位置。每次击败敌人后,将会生成一个新的敌人位置。尽情享受游戏吧!