当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

迷宫程序初级版本

    程序目的:
    输入一个任意大小的迷宫,用栈求出一条走出迷宫的路径,并
    显示在屏幕上。
    程序实现:
    可以实现载入迷宫和保存迷宫,附带文件中有4个测试迷宫路径的
    文件test1~4.dd。请将这些文件拷贝到TC当前目录下,或者在载
    入时写明完全路径。由于屏幕大小的限制,当用户自己输入迷宫
    时一定要注意:迷宫大小是有限制的,不小于4*3,不大于30*20。
    否则会出现错误信息。输入开始时全是墙,用上下左右键移动,
    用Del键删除墙,形成通路,用Enter键添加墙。输入结束时可以
    将迷宫保存下来,以dd为扩展名。输入完毕时用F9键来得到结果,
    找到路径时,屏幕下方会出现Path found,否则出现Path not found。
    程序经Turbo C 2.0编译调试成功。运行时不用添加任何运行库。
    不可以在VC上编译。
    下载DOS版和windows版的迷宫游戏全部代码
    用户名:migong
    ----------------------------------------------------------------------------------
    /*
    MazePath Demo BY Turbo C 2.0
    Copyright(c) RoverUnion. All right reserved.
    Filename: Maze.c
    Author Dongchengyu.
    Ver 1.10
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <conio.h>
    #include <dos.h>
    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0
    #define F9 0x43
    #define Esc 0x1b
    #define Del 0x53
    #define Home 0x47
    #define End 0x4f
    #define Space 0x20
    #define Up 0x48
    #define Down 0x50
    #define Left 0x4b
    #define Right 0x4d
    #define Enter 0x0d
    #define F2 0x3c
    #define F3 0x3d
    #define STACK_IN99v_SIZE 200
    #define STACKINCREMENT 10

    typedef int Boolean;
    typedef int Status;
    typedef strUCt {
    int x;
    int y;
    } PosType;
    typedef struct {
    int ord;
    PosType seat;
    int di;
    } SElemType;
    typedef struct {
    int td;
    int foot;
    int mark;
    } MazeType;
    typedef struct {
    SElemType *base;
    SElemType *top;
    int stacksize;
    } Stack;
    int Maze[20][30];
    MazeType maze[20][30];
    PosType StartPlace;
    PosType EndPlace;
    int count;
    int m,n;
    Boolean b_start=FALSE,b_end=FALSE;
    void CreatMaze(void);
    Status SaveMaze(char *filename);
    Status LoadMaze(char *filename);
    void Error(char *message);
    Status InitStack(Stack *s);
    Status DestroyStack(Stack *s);
    Status ClearStack(Stack *s);
    Boolean StackEmpty(Stack *s);
    int StackLength(Stack *s);
    Status Push(Stack *s,SElemType e);
    SElemType Pop(Stack *s,SElemType e);
    Status GetTop(Stack *s,SElemType *e);
    Status StackTraverse(Stack *s,Status (* visit)(SElemType *se));
    Boolean Pass(PosType curpos);
    void MarkPrint(PosType seat);
    void FootPrint(PosType curpos);
    PosType NextPos(PosType seat,int di);
    Status MazePath(PosType start,PosType end);
    void CreatMaze(void)
    /* Form the maze. */
    {
    void Error(char *message);
    Status SaveMaze(char *filename);
    Status LoadMaze(char *filename);
    int i,j;
    int x,y;
    char c;
    char savename[12],loadname[12];
    Boolean flag=FALSE,load=FALSE;
    clrscr();
    printf("Menu:\n\n");

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接