1.随机产生一个固定大小迷宫图(迷宫有一个唯一的一个入口,一个出口)。 2.电子老鼠初始位置自己定义(最好定位到迷宫顶端) 3.利用kbhit()函数检查键盘输入,实现电子老鼠移动。

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
```