直接上代码
#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表示敌人位置,.表示空白位置。每次击败敌人后,将会生成一个新的敌人位置。尽情享受游戏吧!