首页 > 网络 > 网游资讯

程序员用12小时复刻《羊了个羊》,代码已开源

常驻编辑 网游资讯 2022-09-22 死局   数据结构   关卡   队列   数组   程序员   图案   窗口   小时   模式   代码   朋友   游戏

Axu拜客生活常识网

编者按:前段时间,超休闲三消游戏《羊了个羊》爆火,不少网友表示游戏第二关难度过高,甚至猜测「根本没有通关的解法」。而本文作者 @开发游戏的老王 在尝试复刻游戏之后,提出了一个猜想:过高的难度,也许源于代码层面的瑕疵。Axu拜客生活常识网

以下为正文:Axu拜客生活常识网

昨天有朋友和我说:“最近有个叫《羊了个羊》的游戏爆火,就是太难玩了,你能复刻一个不?”Axu拜客生活常识网

话说上次玩休闲游戏还是在几年前,但是朋友之托必须赴汤蹈火啊,二话不说,开整!然而,冲动是魔鬼,直到此时此刻,老王也没能亲手玩一局原版游戏,不知道是游戏入口设计得太隐蔽还是网络加载太慢,无论手机端还是PC端,游戏都停留在如下界面。Axu拜客生活常识网

Axu拜客生活常识网

所以本次游戏的复刻,完全是基于各视频网站云观摩的结果,好在游戏的玩法不是特别难理解。复刻使用的开发工具是Godot Engine(使用其它工具开发原理也是相似的),目前项目已经开源到了GitCode:Axu拜客生活常识网

Godot版《羊了个羊》:Axu拜客生活常识网

https://gitcode.net/hello_tute/SheepASheepAxu拜客生活常识网

接下来我将通过临摹游戏的方式推测一下这个小游戏的实现原理,本文主要面向对游戏开发有兴趣的朋友,欢迎大家多提宝贵意见。Axu拜客生活常识网

01 玩法

第一眼看到《羊了个羊》,老王首先想到当年的《连连看》,不过有网友爆料,该游戏“借鉴”了《3tiles》。瞄了眼《3tiles》,是比较相似。说心里话,这个游戏的玩法并没有什么过于出众的地方,算是个中规中矩的“低卡路里”休闲游戏。Axu拜客生活常识网

之所以成为话题作品,主要就是因为它的第2关极其低的通关率,一下子激起了众多玩家的挑战欲望。Axu拜客生活常识网

而时至今日这个“低通关率”也被网络上的众多玩家揭秘,第2关其实大概率上本身就是个死局。是程序员故意挖坑设了死局么?先卖个关子,我们先聊聊游戏的开发,然后您自己就会有答案了。Axu拜客生活常识网

02 实现概要

游戏的整体很简单,但其中有几个实现的重点需要注意:Axu拜客生活常识网

  • 牌堆数据结构的实现
  • 如何检测和更新可拾取的牌

先做个小定义,一个牌堆中可被拾取的牌以下将简称其为:“窗口牌”。Axu拜客生活常识网

01 牌堆的结构

Axu拜客生活常识网

最初,我还真被这复杂的牌堆结构蒙住了,但仔细研究一番发现,无论多么复杂的牌堆,其实都是由如下三种牌堆模式组合拼凑而成的:Axu拜客生活常识网

  • 蓝圈圈出的牌堆模式A:上面1张牌只挡住下面1张牌;同时下面的牌仅被上面1张牌挡住。只要上面的1张牌被取走,下面的牌就成为窗口牌;
  • 红圈圈出的牌堆模式C:上面1张牌可以挡住下面4张牌;同时下面的牌可能被上面4张牌挡住,一张牌只有它上面的4张牌都被取走,它自己才成为窗口牌。

虽然上图中体现不是很明显,但不难猜想出,第三种牌堆模式B 的存在,那就是:Axu拜客生活常识网

  • 上面1张牌可以挡住下面2张牌;同时下面的牌可能被上面2张牌挡住,一张牌只有它上面的2张牌都被取走,它自己才成为窗口牌。

对于牌堆模式A,有些朋友会迫不及待地用“队列”或“栈”实现它,这样做有两个缺点:Axu拜客生活常识网

  • 逻辑上牌堆模式A的窗口牌也可能是2维的,如果用队列实现就限制了它的灵活性;
  • 牌堆模式B和C都不好用队列实现,所以想追求数据结构的统一,还要另求他法。

实际上无论牌堆模式A、B还是C,都不过是3维数组结构,上图中模式A看起来特殊,无非是它的x,y维度都为1罢了。而三种牌堆的区别也无非就是当一张窗口牌被取走,检查牌堆是否出现新的窗口牌的方法罢了。

相关阅读:

  • 新华社聚焦中国足球欠薪:“死局”能否“做活”?
  • 苏群专栏:郭艾伦这个“死局”到底怎么破
  • 关于对羊了个羊的一点感受
  • 与羊宣战:别再缴纳智商税了,相公们
  • 爆火数天后,“羊了个羊”果然翻车了
  • 羊了个羊,通关秘籍,关键在于找规律
  • 羊了个羊,火了又凉?
  • 从目前楼市股市现状说开去,展望2023年股市
  • data什么意思(数据结构中data是什么意思)
  • 「数据结构之字典树Trie」C语言版本实现
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。