羊了个羊区块链闯关游戏系统开发模式代码实现技术介绍

简介: 羊了个羊区块链闯关游戏系统开发模式代码实现技术介绍
+关注继续查看

羊了个羊-gamefi 是一款基于 Web3 和 BNBChain 开发的区块链游戏。游戏玩法与Web2版本的一样,保持了三消游戏的特性。并创新性的加入了 Play2Earn 的机制,区块链游戏I34-系统I633-开发5319搭建,将游戏的所有收入公平的分配给所有玩家,从而实现游戏生命周期的长久维持!

实现概要

游戏的整体很简单,但其中有几个实现的重点需要注意:

牌堆数据结构的实现
如何检测和更新可拾取的牌
先做个小定义,一个牌堆中可被拾取的牌以下将简称其为:“窗口牌”。
牌堆模式A
A.png

牌堆模式B
B堆牌.png

牌堆模式C
堆牌C.png

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

MContainerBaseextends Node2Dclass_name MContainerBase

func _ready:add_to_group(name)add_to_group("game")varMask = FileReader.read(mask_file,null)box.resize(size_x)fori inrange(size_x):box[i]= []box[i].resize(size_y)forj inrange(size_y):boxi= []boxi.resize(size_z)fork inrange(size_z):ifMask== nullor Maski == 1:boxi[k] = add_tile(i,j,k,get_parent.distribute_face)else:boxi[k] = null

forx inrange(size_x):fory inrange(size_y):forz inrange(size_z):check_is_on_top(x,y,z)

最基础的牌堆就是一个 xyz的三维数组,我们可以使用一切方法构造想要的排队形状:柱形、条形、甚至金字塔形。这都不会影响后面程序的实现。

03 如何检测和更新可拾取的牌

三种牌堆模式分别派生自MContainerBase,并对应着如下三种检测方式:

牌堆模式A:仅检测自己正上方是否有牌

1Cover1extends MContainerBase

funccheck_is_on_top(x,y,z):ifhas_tile(x,y,z):ifnot has_tile(x,y,z + 1) :(boxx[z] asMTile).set_is_on_top(true)

牌堆模式B:检测自己上方两方位是否有牌

1 Cover 2extends MContainerBase

func check_is_on_top(x,y,z):if has_tile(x,y,z):if z%2 == 0:if not has_tile(x,y,z + 1) and not has_tile(x - 1 ,y,z + 1):(boxx[z] as MTile).set_is_on_top(true)else:if not has_tile(x,y,z + 1) and not has_tile(x + 1 ,y,z + 1):(boxx[z] as MTile).set_is_on_top(true)

牌堆模式C:检测自己上方四方位是否有牌

1 Cover 4extends MContainerBase

func check_is_on_top(x,y,z):if has_tile(x,y,z):if z%2 == 0:if not has_tile(x,y,z + 1) and not has_tile(x - 1 ,y,z + 1) and not has_tile(x,y - 1 ,z + 1) and not has_tile(x - 1,y - 1,z + 1):(boxx[z] as MTile).set_is_on_top(true)else:if not has_tile(x,y,z + 1) and not has_tile(x + 1 ,y,z + 1) and not has_tile(x,y + 1 ,z + 1) and not has_tile(x + 1,y + 1,z + 1):(boxx[z] as MTile).set_is_on_top(true)

04 如何生成新关卡

简单了解游戏规则后,我们就不难推导出,每个关卡能被通过的一个必要条件就是每一种图案的总数,必须能被3整除。实现方法如下:
vartiles = []exportvar initial_tiles = {0:10,1:10,2:10,3:10,4:10,5:10,6:10,7:10,8:10,9:10,10:10,11:10,12:10,13:10,14:10,15:10}
func_init:forkey in initial_tiles:varnum = initial_tiles[key]*3fori in range(0,num):tiles.append(key)tiles.shuffle

其中字典initial_tiles 的key对应着每一种图案,后面的value对应着这一关该图案出现的“对数”(此处1对等于3个)。按照value乘以3的数量存入数组tiles(下文称之为:待发牌池),然后把待发牌池中的元素打乱顺序,等待“发牌”。

05 洗牌道具的实现

洗牌的实现原理很简单,把当前桌面的牌记录在一个数组tiles中,当需要洗牌时,先打乱一下数组中牌的顺序,然后让桌面上每一张牌到tiles中重新取一个值。再来个眼花缭乱点的动画,还真挺像那么回事儿。
funcshuffle_tiles:tiles.shuffletiles_index = -1
funcredistribute_face-> int:tiles_index += 1returntiles[tiles_index]

相关文章
|
9月前
|
前端开发 区块链
盲盒区块链游戏开发原理丨盲盒区块链游戏系统开发技术详细及案例源码
 The"new retail"model has broken the respective closed state of online and offline.Online and offline can be integrated,complement each other and rely on each other.Online and offline more perform the functions of transaction and payment.Offline is usually used as a platform for screening and experi
|
10月前
|
存储 算法 区块链
区块链哈希游戏竞猜模式系统开发技术源码部署
区块链哈希游戏竞猜模式系统开发技术源码部署
227 0
|
10月前
|
存储 供应链 安全
区块链游戏代币项目系统开发逻辑分析讲解(成熟概念)
区块链游戏代币项目系统开发逻辑分析讲解(成熟概念)
144 0
|
10月前
|
Ubuntu 区块链
区块链哈希hash游戏技术开发详细方案(成熟代码)
区块链哈希hash游戏技术开发详细方案(成熟代码)
|
11月前
|
区块链 vr&ar Android开发
区块链游戏系统开发(链游开发源码)丨链游项目系统开发(方案及原理 )
 什么是DAPP?   DApp是Decentralized Application的缩写,译为:分散式的应用程序。App我们都知道,我们在智能手机上安装的应用程序也就是App。而DApp它的意思就是分散式的应用程序或去中心化的应用程序。
|
11月前
|
存储 算法 安全
链游系统开发(链上游戏开发源码)丨区块链游戏系统开发(逻辑及方案)
  区块链是一种块链式数据结构,以时间先后为基准,将存储数据的区块以顺序相连的形式相结合,同时以密码学方式确保数据的不可篡改和不可伪造,是一种安全性极高的分布式账本。广义来讲,区块链利用块链式数据结构来对数据进行验证与存储、利用分布式节点共识算法对数据进行更新、利用密码学方式确保数据的传输与访问安全、利用自动化脚本编写的智能合约来对数据进行编程和操作,是一种全新的分布式架构基础与计算方式。
|
区块链
区块链hash哈希竞猜游戏系统开发项目游戏讲解
区块链hash哈希竞猜游戏系统开发项目游戏讲解
258 38
|
前端开发 JavaScript 区块链
区块链哈希竞猜游戏系统开发项目
区块链哈希竞猜游戏系统开发项目
118 0
|
SQL 安全 API
热门区块链游戏指定系统开发技术讲解方案(Solidity)框架
热门区块链游戏指定系统开发技术讲解方案(Solidity)框架
242 0
|
负载均衡 安全 测试技术
洽谈区块链游戏项目系统开发逻辑讲解方案及技术参考原理
洽谈区块链游戏项目系统开发逻辑讲解方案及技术参考原理
189 0
推荐文章
更多