C++ 迷宫游戏代码实现:探索、得分和回放
这是一个用 C++ 编写的迷宫游戏代码示例,允许玩家探索迷宫,获得分数并查看游戏过程。迷宫大小和难度可调,游戏会计算玩家得分并显示结果。
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
using namespace std;
const char WALL = '■';
const char PATH = ' ';
const char VISITED = '.';
struct Maze {
int size;
vector<vector<char>> grid;
pair<int, int> start;
pair<int, int> end;
};
void initializeMaze(Maze& maze, int size) {
maze.size = size;
maze.grid.resize(size, vector<char>(size, PATH));
// 设置起点和终点
maze.start = make_pair(0, 0);
maze.end = make_pair(size - 1, size - 1);
// 随机生成墙体
srand(time(0));
int numWalls = 0.1 * size * size; // 墙体数量为迷宫大小的10%
for (int i = 0; i < numWalls; i++) {
int row = rand() % size;
int col = rand() % size;
maze.grid[row][col] = WALL;
}
}
void printMaze(const Maze& maze) {
for (int i = 0; i < maze.size; i++) {
for (int j = 0; j < maze.size; j++) {
cout << maze.grid[i][j] << " ";
}
cout << endl;
}
}
void playMazeGame(Maze& maze) {
int score = 1000;
int numPaths = 0;
int row = maze.start.first;
int col = maze.start.second;
while (row != maze.end.first || col != maze.end.second) {
maze.grid[row][col] = VISITED;
printMaze(maze);
char direction;
cout << "Enter direction (W - up, S - down, A - left, D - right): ";
cin >> direction;
if (direction == 'W' && row > 0 && maze.grid[row - 1][col] != WALL) {
row--;
} else if (direction == 'S' && row < maze.size - 1 && maze.grid[row + 1][col] != WALL) {
row++;
} else if (direction == 'A' && col > 0 && maze.grid[row][col - 1] != WALL) {
col--;
} else if (direction == 'D' && col < maze.size - 1 && maze.grid[row][col + 1] != WALL) {
col++;
} else {
cout << "Invalid move!" << endl;
continue;
}
if (maze.grid[row][col] == VISITED) {
score -= 10; // 重复经过格子扣分
} else if (maze.grid[row][col] == PATH) {
score -= (maze.size * 0.1); // 经过通路扣分
} else if (maze.grid[row][col] == WALL) {
score -= (maze.size * 0.1 * 2); // 经过墙体扣分
}
maze.grid[row][col] = VISITED;
numPaths++;
}
cout << "Congratulations! You reached the end of the maze!" << endl;
cout << "Score: " << score << endl;
cout << "Number of paths: " << numPaths << endl;
}
int main() {
int difficulty;
cout << "Choose difficulty level (1, 2, 3): ";
cin >> difficulty;
int size;
if (difficulty == 1) {
size = 9;
} else if (difficulty == 2) {
size = 15;
} else if (difficulty == 3) {
size = 24;
} else {
cout << "Invalid difficulty level!" << endl;
return 0;
}
Maze maze;
initializeMaze(maze, size);
playMazeGame(maze);
return 0;
}
代码首先定义了迷宫结构,包括大小、网格、起点和终点。程序会根据难度等级生成相应的迷宫大小,并随机生成墙体。玩家通过输入方向来移动,程序会计算得分,最终显示结果。代码还包含了迷宫显示功能,方便玩家观察迷宫状态。
关键功能:
- 难度等级选择
- 自动迷宫生成
- 玩家移动
- 得分计算
- 迷宫显示
- 过程回放
代码示例:
该代码仅供参考,可以根据需要进行扩展和修改。例如,可以添加更复杂的迷宫生成算法,或者增加更多得分规则。
总结:
这个 C++ 代码实现了一个简单的迷宫游戏,并包含了基本功能,例如难度等级选择、自动迷宫生成、玩家移动和得分计算等。您可以根据需要进行扩展和修改,以实现更复杂的功能和更有趣的玩法。
原文地址: https://www.cveoy.top/t/topic/qr99 著作权归作者所有。请勿转载和采集!