【重庆工程学院】C/C++迷宫游戏设计[2024-12-22]

【重庆工程学院】C/C++迷宫游戏设计[2024-12-22]

项目3 迷宫游戏设计

一、实训任务要求
1)游戏界面友好,按键操作提示清晰;
2)迷宫地图不少于3个;
3)自动探索迷宫功能;
4)手动探索迷宫功能
5)迷宫路径显示;
6)游戏运行不能有明显bug。

二、实训步骤提示
1 迷宫游戏基本情况
人类建造迷宫已有5000年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行走,寻找真相。迷宫小游戏应运而生。在游戏中,迷宫被表现为寻找出口的一种益智小游戏。 本课设用★代表人物,○代表出口,■代表围墙,其他制表符(例如:━、┃、┳等)用来构造道路和阻挡玩家的去路。玩家要在游戏中,通过复杂的道路找到出口方可胜利。
(1) 要求玩家自己控制找到出口道路;
(2) 要求电脑能自动搜索出一条出口道路,并显示出道路轨迹。
选择手动或者自动生成一个n×m的迷宫,将迷宫的左上角作入口,右下角作出口,设“0”为通路,“1”为墙,即无法穿越。假设从起点出发,目的为右下角终点,可向“上、下、左、右”4个方向行走。如果迷宫可以走通,则用“■”代表“1”,用“□”代表“0”,用“☆”代表行走迷宫的路径。输出迷宫原型图、迷宫路线图以及迷宫行走路径。如果迷宫为死迷宫,则只输出迷宫原型图。
2 设计建议
(一) 迷宫是一个N*M的方正,则可以用二维数组map[N][M]来表示。
除迷宫的出、入口外,迷宫的四周的值为1(即为走不通),而这个方正中有一条连接出口与入口的通路。同时也可以用坐标记录示走到的位置,x表示纵坐标,y表示横坐标。

1	1	1	1	1	1	1	1	1	1
0	0	1	1	1	1	1	1	1	1
1	0	0	0	1	1	1	1	1	1
1	1	1	0	1	1	1	1	1	1
1	1	1	0	0	0	0	1	1	1
1	1	1	1	1	1	0	1	1	1
1	1	1	1	1	1	0	0	0	0
1	1	1	1	1	1	1	1	1	1
               
                 (x-1,y)               x-1:往上走
                    ↑                   x+1:往下走
        (x,y-1)←(x,y)→(x,y+1)      y-1:往左走
                     ↓                   y+1:往右走
(x+1,y)    

(二) 可以用栈、队的思想来实现迷宫的操作。
在走的过程中,每走一步都可以看成是一个入栈的思想,当我们遇到不通的时候得原路返回,就相当于一个出栈的思想。当有通路时,就是一个出队的操作。

(三)迷宫设计

解决迷宫游戏的问题的基本思路:就是在迷宫图中从入口开始出发,沿着某一条通路进行探索,如果能走通,就继续往前走;走不通就沿原路返回,在分叉路口换一个方向再继续探索,直至所有可能的通路都探索完到为止。为了保证在任何位置上都能沿原路退回,所以需要用一个后进先出的结构来保存从入口到当前位置的路径。所以,在解决迷宫问题的算法中要我们要应用“栈”的思想,假设“当前位置”指的是在探索过程中某一时刻游戏对象所在的位置,在解决迷宫问题中一条路径的算法的基本思想是:对象所在的当前位置,放入“当前路径”,并继续朝“下一位置”探索,即切换到“下一个位置”为“当前位置”并且隐藏掉上一个位置的坐标点,如此重复直至到达出口;若当前位置“不可通”,则应顺着“来向”退回到“前一个分叉路口”,然后朝着除“来向”之外的其他方向继续进行探索;若该通道块的四周4个方块均“不可通”,则应从“来向”的前个路口进行除“来向”外的路口进行探索。重复操作,直到到达出口位置。

源码联系UP主 -> https://space.bilibili.com/329101171


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值