【关于地图生成的研究笔记】简单路径 / Simple Route

生成规则:肯定起始点后,随机选一个方向进行访问,而后重复以上循环。我加了个条件,不会出现反方向访问的状况,打个比方,若是它前一步是往右走,那下一步就不能往左走了。(说到左右,我想推荐一下《碰见(钢琴版)》这首歌,它是《向左走向右走》的主题曲,我以为挺好听(可是你不必定这么认为))git

容许重复访问相同的Grid。没有中止生成的条件。github

如图(没有双缓冲,屏幕反复刷新,闪屏严重,所以我缩小了尺寸,加上了一个Sleep(),勉强截到一张)算法

决定仍是循环必定次数后再进行渲染,不过不知道是哪里写错了,仍是随机数生成器有问题,此次它给了我一个可爱的圈:blog

我以为问题应该出在这儿,因为CPU实在太快致使返回的非精确时间都是相同的值:it

因此我修改了一下种子,令我惊喜的是,这样简单的一个算法返回了只要修改种子就能返回许多神奇的图案:编译

而后,我在UP和DOWN上加上了visited检测,可是没有在LEFT和RIGHT上加:随机数

更改seed为std::clock()*ran_num+std::cos(ran_num+4)+std::sin(ran_num)后结果更加有趣了:渲染

代码已经上传至github,你能够修改里面的参数编译,而后查看效果,注意每一个循环后面的Sleep()的参数不要超过3,由于每次加1你可能都要所以等待二三十秒才能出结果。循环

还有,要想生成不一样的图案,你必须修改种子而后从新编译,抱歉,可能会花费额外的3-6秒钟,可是我目前尚未想到解决方案使随机数生成器不彻底依赖时间。im

(感想:忽然感受有机生命体的产生没这么偶然了。。对了,说到有机,今天老师开始上有机化学了!看药品说明书的时候终于看得懂键线式了)

祝我本身生日快乐吧,今天是我存在于这个世界上的第16年!

 还有一件事,明天我若是有时间的话会研究一下迷宫生成,初步打算是使用深度优先算法和随机Prim算法实现。

------------------------------------------------------------------------------如下内容写于2019/3/2 17:28

如今每次循环结束只渲染更新的部分,因此不会闪屏了,即便不用Sleep也是如丝般顺滑(每一个循环之间时间<=60ms),对于我这样的人类来讲足够了。

顺便展现下,同样东西失去控制时的样子:

它在1s以内就几乎填满了40x40的区域!

相关文章
相关标签/搜索