阴阳师爬塔与迷宫生成算法

最近的阴阳师缘结神活动新增了走迷宫的要素。几百层的迷宫不可能手动绘制吧?于是想到了是不是有迷宫生成算法

能查到的迷宫生成算法有三种:递归回溯、 随机prim算法、 递归分割。前两种属于“拆墙法”,而递归分割则是“造墙法”。先放一下结论:

这三种算法分别适合不同的迷宫情况,递归回溯适合于那种主线支线明显的游戏(如RPG),而递归分割则适合转角较少的游戏(如FPS和ACT),至于Prim,似乎适合最标准的迷宫游戏(随机Prim算法生成的迷宫分支较多,整体上更复杂也更自然)。

阴阳师这个迷宫给我感觉是用递归回溯生成的,因为有一条指向终点的非常明显的通路。

递归回溯本质上是深度优先搜算方法,其迷宫生成步骤为(引自 https://www.jianshu.com/p/f643b0a0b887 ):

  1. 初始化,建立一个所有单元格都被墙隔开的迷宫。
  2. 随机选择一个单元格作为起始点,以此单元格开始打通墙壁。
  3. 以当前单元格为基准,随机选择一个方向,若此方向的邻接单元格没有被访问过,则打通这两个单元格之间的墙壁,并将此邻接单元格作为当前单元格,重复步骤3。
  4. 若当前单元格的四个邻接单元格都已经被访问过,则退回到进入当前单元格的邻接单元格,且以此单元格为当前单元格,重复步骤3,4。
  5. 直到起始点单元格被退回,则算法结束。

为了记录已经访问过的单元格,迷宫生成程序会维护一个,每次进入一个新的单元格,就将这个单元格的坐标放入栈顶。这样回退操作所需要的坐标从栈顶弹出就可以了。

又看了一下维基百科,自己摸索着写出了演示代码(github)。写完后发现,其实用这个算法的话,生成起点和生成终点未必就是玩家走的起点和终点。因为这个算法生成的图中,通路上的任意两点必然是可达的,因此起点和终点可以任意设置。

使用Radicale建立你的私有日历和联系人同步服务器

换手机了,发现新手机完全不能兼容google play,看log是少一个权限无法申请。不知道是不是google单方面ban了华为,或者华为单方面ban了google。不管怎么样我想要同步我的google账号上的日历和联系人是不可能了。

就在我导出google日历和联系人的时候,我又开始在想那个问题了:数据不在自己的手上,有一天可能就找不回来了。能不能自己搭建一个私有云呢?说到私有云我立刻想到了Nextcloud,但是看到Nextcloud的各种php、数据库还有http服务器依赖之后我觉得太麻烦了——我的需求是日历同步,Nextcloud一套上来过于复杂了,而且不够轻量。

于是我找到了Radicale这个开始于学校作业的项目。这个项目基本上可以在任何能运行Python的地方运行。它支持的CalDAV协议。这种协议的客户端的话,PC上的邮件和日历app基本都支持这个协议,我用的是thunderbird。手机上的话,貌似华为不能直接支持这种协议,得装个DAVx5

继续阅读“使用Radicale建立你的私有日历和联系人同步服务器”

丢不掉的过去,以及从今后?

今年就二十五周岁了。人们常说的各个年龄的社会责任,我隐隐约约的感觉到了。

十七岁,很努力,却没有把劲花在刀刃上。遇到了那个美丽的姑娘。很固执,知己并不多,而且因为自己的“正义感”与周围显得格格不入。

十九岁,固执依然,然而却做起了班长,意图以自己的力量改变周围的世界。带着不甘和怨恨努力着。和那个重要的人互相确认了亲密的关系,却也因为自己的无心埋下了异变的种子。

二十一岁,改变命运的考试,同一时间举办了很多场呢……我……都没有交出自以为满意的答卷。

二十三岁,失去了那个女孩,彻底被孤独笼罩。也越来越发现自己并非所有事物皆可担当。虽然仍然没有求助别人,但是心中是何等苦闷。并且开始了所谓“寻找本心”的旅程,并惊奇地发现自己对校园故事意外的沉迷。

命运的线呵,那一个个人生的“节点”,居然使用这种方式联系在了一起。

感到恐惧吧,可是如果就此逃避,那么面对错综连接的命运之线,心中是不是会越来越麻木呢?或许已经有点麻木了?

……可,不能就此被吞噬掉啊……

突然怀古

今天见到一个上古网http://www.cfido.com,90年代的在线杂志读起来真是让人怀旧啊。颇有站在未来看现在的那种感觉。

马化腾开发了腾讯QQ,求伯君开发了WPS,人人都愿意谈论超频,谈论x86指令集,谈论硬件和数字电路,架设自己的FTP服务器,用telnet访问BBS。偶尔也会犯错把自己的设备搞到冒烟。然而今天的用户却连root权限都拿不到(指手机)。中文输入方式曾经有那么多(区位码、二笔、五笔、仓颉…),如今我却只会用一个拼音。而且事实上大多数人只会用拼音。真不知道该说是是时代的进步还是人的退步啊…

我今天还看到了一张图

悲夫!后之视今,亦犹今之视昔!