你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
用VC编程迷宫游戏(四)
 

return Maze;

}

函数int SetMaze(int **Maze,int s,int x,int y),用于设置迷宫中的路径,实现的核心代码如下:

int CMaze::SetMaze(int **Maze,int s,int x,int y)

{

    int r,xx,yy;

    int i;

    while(x!=2||y!=1)       /* 当移动点不是终点时,执行循环中的代码 */

    {

        if(Maze[y][x-1]*Maze[y][x+1]*Maze[y+1][x]*Maze[y-1][x]==0)

/*如果点(x,y)的四方有连通点*/

        {

            r=rand()%4; /*随机产生r的值,r=0123分别表示右、下、左、上*/

            xx=x+(r==0)-(r==2);

            yy=y+(r==1)-(r==3);

/*得到新点(xx,yy),该点是随机产生的,不一定是连通点*/

            while(Maze[yy][xx]!=0) /*当(xx,yy)走不通时,继续找可以连通的点*/

            {

                r=rand()%4;

                xx=x+(r==0)-(r==2);

                yy=y+(r==1)-(r==3);

            }

            x=xx;y=yy;s++;      /*更新移动点的坐标,增加步数s的值*/

            Maze[y][x]=s;           /*s赋值于新位置*/

        }

        else    /*如果没有连通点,则退回到s-1处,寻找s-1四周的变量还有没有路可走*/

        {

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

            {

                xx=x+(i==0)-(i==2);

                yy=y+(i==1)-(i==3);

                if(Maze[yy][xx]==s-1)

                {

                    x=xx;y=yy;s=Maze[y][x];

                    break;

                }

            }

            if(i==4)        /*s-1处也无路可走,便结束算法*/

                break;

        }

    }

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089