1.随机产生一个固定大小迷宫图(迷宫有一个唯一的一个入口,一个出口)。
2.电子老鼠初始位置自己定义(最好定位到迷宫顶端)
3.利用kbhit()函数检查键盘输入,实现电子老鼠移动。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h> //需要使用 kbhit() 函数
#define ROWS 15 //定义迷宫行数
#define COLS 20 //定义迷宫列数
char maze[ROWS][COLS]; //用二维数组表示迷宫
int row, col; //电子老鼠的当前位置
void generateMaze(); //生成随机迷宫
void printMaze(); //打印迷宫
void moveMouse(); //移动电子老鼠
int main() {
generateMaze(); //生成迷宫
row = 0; //电子老鼠出发点位于迷宫顶端
col = rand() % COLS;
maze[row][col] = '@'; //初始化电子老鼠的位置
printMaze(); //打印迷宫和电子老鼠
while (1) { //循环检查键盘输入,移动电子老鼠
moveMouse();
printMaze();
}
return 0;
}
void generateMaze() {
int i, j;
srand(time(NULL)); //设置随机数种子
//初始化迷宫,用空格表示通道,用"*"表示墙壁
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (i == 0 || i == ROWS - 1 || j == 0 || j == COLS - 1) {
maze[i][j] = '*';
} else {
maze[i][j] = ' ';
}
}
}
//在随机位置设置迷宫入口和出口
int randomSide = rand() % 4;
switch (randomSide) {
case 0: //上方入口,下方出口
maze[0][rand() % COLS] = ' ';
maze[ROWS - 1][rand() % COLS] = ' ';
break;
case 1: //右侧入口,左侧出口
maze[rand() % ROWS][COLS - 1] = ' ';
maze[rand() % ROWS][0] = ' ';
break;
case 2: //下方入口,上方出口
maze[ROWS - 1][rand() % COLS] = ' ';
maze[0][rand() % COLS] = ' ';
break;
case 3: //左侧入口,右侧出口
maze[rand() % ROWS][0] = ' ';
maze[rand() % ROWS][COLS - 1] = ' ';
break;
}
//生成随机的迷宫内墙壁
for (i = 0; i < ROWS * COLS / 5; i++) {
maze[rand() % (ROWS - 2) + 1][rand() % (COLS - 2) + 1] = '*';
}
}
void printMaze() {
system("cls"); //清空屏幕
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%c ", maze[i][j]);
}
printf("\n");
}
}
void moveMouse() {
if (kbhit()) { //如果有键盘输入
char key = getch();
//根据输入修改电子老鼠的位置
switch (key) {
case 'w': //向上移动
if (maze[row - 1][col] == ' ') {
maze[row][col] = ' ';
row--;
maze[row][col] = '@';
}
break;
case 'a': //向左移动
if (maze[row][col - 1] == ' ') {
maze[row][col] = ' ';
col--;
maze[row][col] = '@';
}
break;
case 's': //向下移动
if (maze[row + 1][col] == ' ') {
maze[row][col] = ' ';
row++;
maze[row][col] = '@';
}
break;
case 'd': //向右移动
if (maze[row][col + 1] == ' ') {
maze[row][col] = ' ';
col++;
maze[row][col] = '@';
}
break;
}
}
}
基于chatgpt3.5
```