主页 > 游戏 > 正文

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

2022-09-20 12:12来源:未知编辑:admin

扫一扫

分享文章到微信

扫一扫

关注99科技网微信公众号

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

蓝圈圈出的牌堆模式A: 上面1张牌只挡住下面1张牌;同时下面的牌仅被上面1张牌挡住。只要上面的1张牌被取走,下面的牌就成为窗口牌;

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

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

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

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

逻辑上牌堆模式A的窗口牌也可能是2维的,如果用队列实现就限制了它的灵活性;

牌堆模式B和C都不好用队列实现,所以想追求数据结构的统一,还要另求他法。

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

牌堆模式A

牌堆模式B

牌堆模式C

02 牌堆的数据结构 我将其定义为MContainerBase基类

#MContainerBaseextends Node2Dclass_name MContainerBasefunc _ready(): add_to_group(name) add_to_group("game") var Mask = FileReader.read(mask_file,null) box.resize(size_x) for i in range(size_x): box[i] = [] box[i].resize(size_y) for j in range(size_y): box[i][j] = [] box[i][j].resize(size_z) for k in range(size_z): if Mask == null or Mask[i][j] == 1: box[i][j][k] = add_tile(i,j,k,get_parent().distribute_face()) else: box[i][j][k] = null for x in range(size_x): for y in range(size_y): for z in range(size_z): check_is_on_top(x,y,z) 最基础的牌堆就是一个 x*y*z的三维数组,我们可以使用一切方法构造想要的排队形状:柱形、条形、甚至金字塔形。这都不会影响后面程序的实现。 项目中为了增加这个“大方块”的多样性,我还给它设置了如下的“遮罩”,这就是游戏中CSDN文字的由来。当然我们还可以通过“遮罩”来自由定义窗口牌,这部分就请大家自由发挥了。

99科技网:http://www.99it.com.cn

相关推荐
《倩女幽魂》手游主文案萧婷:研究女性游戏用户15年得出的几条经验 《倩女幽魂》手游主文案萧婷:研究女性游戏用户15年得出的几条经验

一些游戏正在逐渐被外界归拢在“泛女性向游戏”的范畴。

游戏2022-09-19

灵游坊CEO梁其伟:不用AI绘图,可能是老板太傲慢(附效果图) 灵游坊CEO梁其伟:不用AI绘图,可能是老板太傲慢(附效果图)

近期AI绘图引热话题后,灵游坊CEO梁其伟在其微博 公布了一组由AI辅助绘图的原

游戏2022-09-19

超750家厂商在用,接入4000+游戏,他们的下一个目标是“全球化” 超750家厂商在用,接入4000+游戏,他们的下一个目标是“全球化”

随着游戏行业对数据的认知、分析以及应用开始进入深水区,出现了很多深度、

游戏2022-09-15

Roguelike一词,正在被滥用? | 葡萄视点 Roguelike一词,正在被滥用? | 葡萄视点

可能没有哪一种游戏要素是像Roguelike这样,短短几年,在国内玩家群体里就迅速

游戏2022-09-13

《刺客信条》将推出两款手游,其中一款采用中国背景 《刺客信条》将推出两款手游,其中一款采用中国背景

育碧旗舰品牌、今年迎来15周年的“刺客信条”系列的未来,显然更引人关注。

游戏2022-09-13

我找到一个3000家游戏公司都在用的出海平台 我找到一个3000家游戏公司都在用的出海平台

最近,一家服务了腾讯、网易、米哈游、莉莉丝等80%以上出海大厂的老牌团队飞

游戏2022-09-06

《曲中剑》:用古曲与水墨,讲一个与命运和解的故事 《曲中剑》:用古曲与水墨,讲一个与命运和解的故事

近日,腾讯旗下天美工作室一款水墨武侠音游在TapTap 上开启了测试,并在各玩

游戏2022-09-03

游戏日报:占用“热血江湖”关键词推广,龙图游戏起诉侵权方一审获赔12.2万​ 游戏日报:占用“热血江湖”关键词推广,龙图游戏起诉侵权方一审获赔12.2万​

近日北京市海淀区人民法院公布了一起商标侵权的一审民事判决书。

游戏2022-09-02

7年坐拥6亿用户,这款游戏通过一场「狂欢」找到了增长新方向 7年坐拥6亿用户,这款游戏通过一场「狂欢」找到了增长新方向

恰逢《球球大作战》游戏七周年,官方请到了知名歌手演唱游戏历年的年度主题

游戏2022-09-01

老IP如何平衡新老用户,EVEOnline或许给出了一个答案 老IP如何平衡新老用户,EVEOnline或许给出了一个答案

8月25日,《星战前夜:晨曦》(EVE Online)全新服务器“曙光”正式开启了不删

游戏2022-08-30