c语言使用栈写一个迷宫旅行游戏的代码
时间: 2023-02-07 18:01:18 浏览: 113
好的,下面是使用栈来实现迷宫旅行游戏的 C 语言代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_ROW 50
#define MAX_COL 50
// 定义一个栈的结构体
typedef struct {
int x;
int y;
} Element;
typedef struct {
Element data[MAX_ROW * MAX_COL];
int top;
} Stack;
// 初始化栈
void initStack(Stack *stack) {
stack->top = -1;
}
// 判断栈是否为空
bool isEmpty(Stack *stack) {
return stack->top == -1;
}
// 将元素压入栈中
void push(Stack *stack, Element element) {
stack->data[++stack->top] = element;
}
// 弹出栈顶元素
Element pop(Stack *stack) {
return stack->data[stack->top--];
}
// 迷宫地图,0 表示可以走,1 表示不能走
int maze[MAX_ROW][MAX_COL] = {
{0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 1, 0},
{0, 0, 0, 0, 0, 0},
{0, 1, 1, 0, 1, 0},
{0, 0, 0, 0, 1, 0}
};
// 走迷宫
bool walkMaze(int x, int y) {
Stack stack;
Element element;
// 初始化栈
initStack(&stack);
// 设置起点
element.x = x;
element.y = y;
push(&stack, element);
// 当栈不为空时,循环查找
while (!isEmpty(&stack)) {
element = pop(&stack);
x = element.x;
y = element.y;
// 如果找到出口,返回 true
if (x == MAX_ROW - 1 && y == MAX_COL - 1) {
return true;
}
// 将当前位置标记为已经走过
maze[x][y] = 2;
// 向左走
if (y > 0 && maze[x][y - 1] == 0) {
element
阅读全文