精华内容
下载资源
问答
  • C语言写迷宫

    2021-07-13 18:10:08
    C语言写迷宫 思路: 1、定义一个二维数组作为迷宫 0 ‘ ’ 1 ‘#’ 2 ‘@’ 2、定义两个变量来记录老鼠的坐标 3、记录游戏开始时间 4、进入死循环 (1)清理屏幕system(“clear”); (2)显示迷宫(遍历打印二位...

    用C语言写迷宫

    思路:
    1、定义一个二维数组作为迷宫
    0 ‘ ’
    1 ‘#’
    2 ‘@’
    2、定义两个变量来记录老鼠的坐标
    3、记录游戏开始时间
    4、进入死循环
    (1)清理屏幕system(“clear”);
    (2)显示迷宫(遍历打印二位数组)
    (3)判断是否到达出口
    是:获取游戏结束时间
    结束程序
    (4)获取方向键并处理
    判断前方是否是路
    是:
    1、旧位置=0;
    2、新位置=2;
    3、更新老鼠的位置

    #include <stdio.h>
    #include <getch.h>
    #include <time.h>
    #include <stdlib.h>

    int main(int argc,const char* argv[])
    {
    //定义迷宫
    char arr[10][10] = {
    {1,1,1,1,1,1,1,1,1,1},
    {1,0,2,0,1,1,1,1,1,1},
    {1,0,1,1,1,1,1,1,1,1},
    {1,0,1,1,1,1,1,1,1,1},
    {1,0,0,0,1,1,1,0,0,0},
    {1,1,1,0,1,1,1,0,1,1},
    {1,1,1,0,0,0,0,0,1,1},
    {1,1,1,1,1,1,1,1,1,1},
    {1,1,1,1,1,1,1,1,1,1},
    {1,1,1,1,1,1,1,1,1,1},
    };

    //定义老鼠坐标
    int mouse_x = 1,mouse_y = 2;
    
    //获取开始时间
    time_t start_time = time(NULL);
    
    for(;;)
    {
    
        //清理屏幕
       system("clear");
        for(int i=0; i<10; i++)
        {
            for(int j=0; j<10; j++)
            {
                switch(arr[i][j])
                {
                    case 0: printf("  ");break;
                    case 1: printf("# ");break;
                    case 2: printf("@ ");break;
                }
            }
            printf("\n");
        }
    
        //判断是否到达出口
        if(4 == mouse_x && 9 == mouse_y)
        {
            time_t end_time = time(NULL);
            printf("成功走出迷宫,耗时%lu\n",end_time-start_time);
            return 0;
        }
        //获取方向键并处理
        switch(getch())
        {
            case 183:
                if(0 == arr[mouse_x-1][mouse_y] && 0 != mouse_x)
                {
                    arr[mouse_x][mouse_y] = 0;
                    arr[--mouse_x][mouse_y] = 2;
                } break;
            case 184:
                if(0 == arr[mouse_x+1][mouse_y] && 9 != mouse_x)
                {
                    arr[mouse_x][mouse_y] = 0;
                    arr[++mouse_x][mouse_y] = 2;
                } break;
            case 185:
                if(0 == arr[mouse_x][mouse_y+1] && 9 != mouse_y)
                {
                    arr[mouse_x][mouse_y] = 0;
                    arr[mouse_x][++mouse_y] = 2;
                } break;
            case 186:
                if(0 == arr[mouse_x][mouse_y-1] && 0 != mouse_y)
                {
                    arr[mouse_x][mouse_y] = 0;
                    arr[mouse_x][--mouse_y] = 2;
                } break;
        }
    
    }
    

    }

    展开全文
  • C语言迷宫源代码#include #include #include int main(){char a[50][50]={"######","#O # ","# ## #","# # #","## #","######",};int i,x,y,p,q;char ch;x=1; y=1; p=1; q=5;for(i=0;i<=5;i++)puts(a[i]);while...

    C语言走迷宫源代码

    #include

    #include

    #include

    int main()

    {

    char a[50][50]={"######",

    "#O # ",

    "# ## #",

    "# # #",

    "## #",

    "######",

    };

    int i,x,y,p,q;

    char ch;

    x=1; y=1; p=1; q=5;

    for(i=0;i<=5;i++)

    puts(a[i]);

    while(x!=p || y!=q)

    {

    ch=getch();

    if(ch=='s')

    {

    if(a[x+1][y]!='#')

    {

    a[x][y]=' ';

    x++;

    a[x][y]='O';

    }

    }

    if(ch=='w')

    {

    if(a[x-1][y]!='#')

    {

    a[x][y]=' ';

    x--;

    a[x][y]='O';

    }

    }

    if(ch=='a')

    {

    if(a[x][y-1]!='#')

    {

    a[x][y]=' ';

    y--;

    a[x][y]='O';

    }

    }

    if(ch=='d')

    {

    if(a[x][y+1]!='#')

    {

    a[x][y]=' ';

    y++;

    a[x][y]='O';

    }

    }

    system("cls");

    for(i=0;i<=5;i++)

    puts(a[i]);

    }

    system("cls");

    printf("You win!\n");

    Sleep(5000);

    return 0;

    }

    展开全文
  • C语言迷宫源码.txt

    2021-04-14 22:23:17
    C语言迷宫源码
  • C语言写迷宫程序

    2013-10-15 20:13:00
    这是我用C语言写的一个简单迷宫程序,麻雀虽小五脏俱全,用于学习还是很有帮助的。
  • C语言迷宫

    2015-12-17 00:48:58
    C语言实现迷宫小游戏。只需要有C语言基础既可看懂
  • C语言迷宫.cpp

    2019-12-25 08:38:33
    C语言写的走迷宫小游戏,适合新人
  • 初始化迷宫,1表示通道,0表示墙 */ typedef struct MStackElem { int x; int y; int val; }MStackElem; typedef struct { MStackElem * base; MStackElem * top; int stackSize; }MStack; void initStack(MStack *s) ...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    下面是程序

    #include

    #define OVERFLOW -2

    #define ERROR 0

    #define NULL 0

    #define true 1

    #define TRUE 1

    #define false 0

    #define FALSE 0

    #define STACK_INIT_SIZE 100

    #define STACKINCREMENT 10

    #include

    #include

    /*

    初始化迷宫,1表示通道,0表示墙

    */

    typedef struct MStackElem

    {

    int x;

    int y;

    int val;

    }MStackElem;

    typedef struct {

    MStackElem * base;

    MStackElem * top;

    int stackSize;

    }MStack;

    void initStack(MStack *s) {

    s->base = (MStackElem *)malloc(STACK_INIT_SIZE * sizeof(MStackElem));

    if (!s->base) {

    printf("in initStack()...Failed to initalize the MStack ,no enough space! exit now. ");

    exit(OVERFLOW);

    }

    s->top = s->base;

    s->stackSize = STACK_INIT_SIZE;

    }

    void push(MStack *s,MStackElem e) {

    if (s->top - s->base >= s->stackSize) {

    s->base = (MStackElem *)realloc(s->base, (STACK_INIT_SIZE+STACKINCREMENT) * sizeof(MStackElem));

    if (!s->base) {

    printf("in push()...Failed to realloc the MStack ,no enough space! exit now. ");

    exit(OVERFLOW);

    }

    s->top = s->base + s->stackSize;

    s->stackSize += STACKINCREMENT;

    }

    *(s->top++) = e;

    }

    MStackElem getTop(MStack *s) {

    if (s->top == s->base) {

    printf("in getTop(),empty stack! exit now. ");

    exit(ERROR);

    }

    else {

    return *(s->top - 1);

    }

    }

    void pop(MStack *s) {

    if (s->top == s->base) {

    printf("in pop(),empty stack! exit now. ");

    exit(ERROR);

    }

    else {

    --(s->top);

    }

    }

    MStack realPath,path;

    int unPass(MStack path,MStackElem cur) {

    int flag = 1;

    while(path.top != path.base)

    {

    MStackElem e = *(path.top - 1);

    if (e.x == cur.x&& e.y == cur.y)

    展开全文
  • C语言迷宫

    千次阅读 2018-10-30 10:03:12
    在前面 用C语言也可以出很多好玩的东西,这篇博客介绍一下如何用C语言来走迷宫,非常有趣。 实现原理 代码实现

    写在前面

    用C语言也可以写出很多好玩的东西,这篇博客介绍一下如何用C语言来走迷宫。

    实现原理

    首先用到的就是栈这样一种数据结构,有先进后出的特性。
    另外走迷宫还用到了回溯的思想,就是若此条道路行不通,就返回上次分叉的那个路口,换一条道,直到找到出口或者遍历结束。(和此代码中注释中的“回溯”意思不一样)
    具体的细节就在代码中了,代码如下:

    代码实现

    代码运行截图
    运行截图

    #include <stdio.h>
    #include <windows.h>
    
    #define ROW 5
    #define COL 5
    #define MAX 512
    
    
    /*****************************stack*******************************/
    typedef struct point
    {
        int x;
        int y;
    }point;
    
    int top = 0;
    point stack[MAX] = {{0, 0}};
    
    point push(point p)
    {
        stack[top] = p;
        top++;
    }
    point pop()
    {
        top--;
        return stack[top];
    }
    int is_empty()
    {
        return top == 0;
    }
    int is_full()
    {
        return top == MAX;
    }
    
    void printf_stack()
    {
        int i = 0;
        for (i = 0; i < top; i++)
        {
            printf("[%d, %d] ", stack[i].y, stack[i].x);
        }
        printf("\n");
    }
    /*****************************stack*******************************/
    
    原始迷宫数组
    //int maze[ROW][COL] =
    //{
    //    0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
    //    0, 0, 0, 1, 1, 1, 0, 1, 0, 0,
    //    0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    //    0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
    //    0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
    //    0, 1, 1, 1, 0, 0, 1, 0, 0, 0,
    //    0, 0, 0, 1, 0, 1, 1, 1, 0, 0,
    //    0, 1, 0, 0, 0, 1, 0, 1, 1, 0,
    //    0, 1, 1, 1, 1, 1, 0, 1, 0, 0,
    //    0, 0, 0, 0, 0, 0, 0, 1, 0, 0
    //};
    
    //原始迷宫数组
    int maze[ROW][COL] =
    {
        0, 1, 0, 1, 0,
        0, 1, 0, 0, 0,
        0, 1, 0, 1, 0,
        0, 1, 0, 1, 0,
        0, 0, 0, 1, 0
    };
    
    //记录路径数组
    point maze_path[ROW][COL] ={{0, 0}};
    //用来打印路线的数组
    int maze_show[ROW][COL] ={ 0 };
    
    void printf_maze()
    {
        int i = 0;
        int j = 0;
    
        for (i = 0; i < ROW; i++)
        {
            for (j = 0; j < COL; j++)
            {
                printf("%d ", maze[i][j]);
            }
            printf("\n");
        }
        printf("\n");
    }
    
    void printf_path()
    {
        int i = 0;
        int j = 0;
    
        for (i = 0; i < ROW; i++)
        {
            for (j = 0; j < COL; j++)
            {
                printf("[%d %d] ", maze_path[i][j].y, maze_path[i][j].x);
            }
            printf("\n");
        }
        printf("\n");
    }
    void printf_show()
    {
        int i = 0;
        int j = 0;
    
        //输出颜色控制
        HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    
        for (i = 0; i < ROW; i++)
        {
            for (j = 0; j < COL; j++)
            {
                if (maze_show[i][j] == 1)
                {
                    SetConsoleTextAttribute(handle,
                        FOREGROUND_INTENSITY | FOREGROUND_RED); //红色高亮显示
                }
                else SetConsoleTextAttribute(handle, 0x07);     //正常打印
    
                printf("%d ", maze_show[i][j]);
    
                SetConsoleTextAttribute(handle, 0x07);          //正常打印
            }
            printf("\n");
        }
        printf("\n");
    }
    
    int main()
    {
        point p = {0, 0};
        point p_next = {0, 0};
        maze_path[0][0] = p;
        push(p);
    
        while (!is_empty())
        {
            p = pop();  //弹出栈顶的点
            if (p.x == COL - 1 && p.y == ROW - 1) //达到终端(右下角)
            {
                break;
            }
    
            p_next.x = p.x + 1;     //right
            p_next.y = p.y;
            if (p_next.x < COL && maze[p_next.y][p_next.x] == 0)
            {
                maze[p_next.y][p_next.x] = 2; //2表示已经走过这个点
                maze_path[p_next.y][p_next.x] = p;  //当前点记录上一个点的坐标,用来回溯找路径
                push(p_next);   //下个点入栈
            }
    
            p_next.x = p.x;         //down
            p_next.y = p.y + 1;
            if (p_next.y < ROW && maze[p_next.y][p_next.x] == 0)
            {
                maze[p_next.y][p_next.x] = 2;
                maze_path[p_next.y][p_next.x] = p;
                push(p_next);
            }
    
            p_next.x = p.x - 1;     //left
            p_next.y = p.y;
            if (p_next.x >= 0 && maze[p_next.y][p_next.x] == 0)
            {
                maze[p_next.y][p_next.x] = 2;
                maze_path[p_next.y][p_next.x] = p;
                push(p_next);
            }
    
            p_next.x = p.x;         //up
            p_next.y = p.y - 1;
            if (p_next.y >= 0 && maze[p_next.y][p_next.x] == 0)
            {
                maze[p_next.y][p_next.x] = 2;
                maze_path[p_next.y][p_next.x] = p;
                push(p_next);
            }
        }
    
        //回溯寻找路线
    	if (p.y == ROW - 1 && p.x == COL - 1)
    	{
            maze_show[p.y][p.x] = 1;
    		while (p.y != 0 || p.x != 0)
    		{
    			p = maze_path[p.y][p.x];
    			maze_show[p.y][p.x] = 1;
    		}
    
            printf_maze();
            printf_path();
            printf_show();
    	}
    	else printf("No path to exit!\n");
    
    
        return 0;
    }
    
    
    

    与我联系

    QQ:1570553025
    github:https://github.com/myzcl
    微信公众号,扫二维码即可关注:
    在这里插入图片描述

    展开全文
  • 数据结构 c语言迷宫程序 数据结构 c语言迷宫程序
  • C语言迷宫求解,迷宫求解经典程序,运用数据结构中的知识进行编写的程序。。。。。。。。
  • c语言实现迷宫求解

    2012-10-28 14:32:24
    金典c语言实现迷宫求解代码,首次上传请大家多多支持
  • C语言完成迷宫问题

    2012-11-21 22:19:26
    c语言完成迷宫问题,输入一个入口和出口找出一条路径
  • c语言迷宫

    2007-12-31 22:46:40
    c语言迷宫篇.....
  • 【原创】转载请注明出处 【浙江大学 程序设计专题】【地图求解器】本题目要求输入一个迷宫地图,输出从起点到终点的路线。基本思路是从起点(Sx,Sy)每次枚举该格子上下左右四个方向,直到走到终点(Tx,Ty)。方法一:...
  • C语言实现迷宫问题

    2018-04-14 21:26:54
    C语言编写的一个简单迷宫问题。其中用到了数据结构,相对简单
  • c语言游戏迷宫

    2017-06-16 00:12:03
    有简单,中等和复杂3个模式。要求在一定时间和步数内完成游戏。内有代码和.exe文件
  • 该资源是实现迷宫的源码,本人希望对各位学习C语言的小伙伴有一点帮助。
  • c语言迷宫

    2013-07-01 12:42:00
    通过栈来实现迷宫并显示迷宫路径,程序有点复杂
  • c语言迷宫游戏

    2012-06-27 16:14:28
    需要c语言迷宫游戏的同学赶紧来下载吧.
  • 迷宫问题,C语言写

    2009-02-08 13:07:05
    迷宫问题,C语言迷宫问题,C语言迷宫问题,C语言迷宫问题,C语言迷宫问题,C语言迷宫问题,C语言迷宫问题,C语言
  • C语言解决迷宫问题

    万次阅读 多人点赞 2018-08-25 11:12:38
    迷宫大致可分为三种,简单迷宫、多通路迷宫:通路间不带环、多通路迷宫:通路间带环,其中带环多通路迷宫是最复杂的,解决它,要把栈与递归结合起来,下来我们来一个一个分析吧,先从简单迷宫开始。 简单迷宫 要...
  • C语言中的迷宫:你可以通过键盘上的“W”、“A”、“S”、“D”,4个按键来控制一个小球向上、下、左、右移动,目的就是让这个小球从起点走出迷宫
  • 自己编程的c语言迷宫程序。迷宫为矩形,每一格上有数字1或2或3或4,踩到1则向上走一格,踩到2则向下走一格,踩到3则向左走一格,踩到4则向右走一格。用户在第一行输入迷宫的行数、列数、走迷宫者的初始位置,在第...
  • 通过c语言实现迷宫回溯问题,程序精简,利用了二叉树回溯的思想
  • c语言实现迷宫问题的求解,输出路径矩阵
  • C语言求解迷宫问题

    2019-11-25 00:33:50
    C语言求解迷宫问题 #include <stdio.h> #include <stdlib.h> #define c 6 //宽 #define d 8 //长 int e;//初始x坐标 int f;//初始y坐标 int g;//终点x坐标 int h;//终点y坐标 char mizu[c][d];...
  • 直接干脆点吧,这个是迷宫游戏,先做出来迷宫界面,然后的话,记住从起点到出口的路线,从黑暗中走出去,用灯光,直接去摸索,走出去,每一次运行的界面都是随机的,所以说难度肯定也是有的,代码的话也比较多,所以...
  • c语言控制台迷宫游戏

    2014-07-30 10:10:30
    最近学习C语言,做了一个控制台迷宫游戏,自带深度优先遍历方法自动寻路,代码有点繁琐,高手勿喷

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,977
精华内容 1,990
关键字:

c语言写迷宫

c语言 订阅