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

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

羊了个羊-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]

相关文章
|
4月前
|
存储 安全 区块链
区块链与游戏:颠覆传统的数字娱乐新纪元
**区块链技术颠覆游戏行业,赋予玩家真实所有权,增强资产安全与经济系统创新。去中心化、不可篡改的特性确保公平性,智能合约驱动新盈利模式。虽有技术复杂性与扩展性挑战,但未来区块链游戏有望带来更丰富、安全、公平的体验,推动行业持续革新。**
区块链与游戏:颠覆传统的数字娱乐新纪元
|
3月前
|
存储 安全 前端开发
区块链 DAPP 互助逻辑模式系统开发技术方案[源码示例]
Dapp(Decentralized Application)是指不受任何中心化组织或机构控制的、使用特定区块链技术为基础的去中心化应用程序。Dapp 是一种特殊类型的应用,它可以在任何基于区块链技术的系统,例如 Ethereum、EOS 或其他的智能合约系统上运行。
|
3月前
|
存储 安全 区块链
SWAP交易所系统开发|区块链交易所系统开发方案
尽管Web3.0的前景仍然不确定,但像尤派数字传媒这样的先行者正在积极尝试元宇宙,并加速转型的步伐。在面对即将到来的新一代互联网时,尤派数字传媒既不会过于骄傲自大,也不会过于谨小慎微。唯有在当前基础上稳步推进,夯实基础,才能在不确定的环境中获得最大的确定性。
|
4月前
|
安全 算法 区块链
区块链游戏在社交方面的创新应用
**区块链游戏创新:** 利用去中心化与透明性,实现社区决策民主化,通过智能合约保障公正。玩家通过投票影响游戏发展,参与社区获代币奖励,促进内容生产和社交。虚拟物品所有权确保,交易安全,增强游戏互动。跨游戏资产互通打造虚拟世界,去中心化社交平台保护用户数据。这些变革提升游戏体验,推动行业进步。
|
3月前
|
安全 编译器 区块链
区块链代币 DAPP 通缩燃烧模式系统开发技术方案
合约代码部署流程可能因区块链技术的不同实现而略有不同,但基本步骤如下:
|
4月前
|
算法 区块链
区块链项目的商业模式有哪些成功案例
**评估区块链项目潜力的关键因素包括:技术创新与应用场景(如共识算法、交易速度)、团队背景与发展战略(团队经验、市场定位)、社区活跃度与合作伙伴(用户参与、合作网络)、透明度与合规性(信息透明、法规遵循)、技术可行性(技术成熟度、安全性)及商业模式与市场可行性(市场规模、用户需求)。这些综合考量帮助判断项目的成功潜力和市场前景。**
|
4月前
|
供应链 区块链
基于区块链的供应链管理追溯系统研究
基于区块链的供应链管理追溯系统研究
|
存储 前端开发 安全
DAPP区块链商城系统开发(方案逻辑)丨区块链DAPP商城系统开发(案例设计)/开发项目/源码部署
 区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。从本质上看,区块链是通过去中心化和去信任化,集体维护、分布式存储的可靠数据库。
|
开发框架 安全 前端开发
区块链财务管理平台如何开发?区块链财务管理平台开发源码规则解析
开发一个区块链财务管理平台需要多个方面的技术和知识,以下是一些可能的步骤和考虑因素:
|
存储 安全 区块链
区块链游戏系统开发(开发详细)/案例开发/设计功能/逻辑方案/源码平台
  区块链游戏系统开发是一个复杂而精密的过程。首先,需要进行需求分析和规划,确定游戏系统的功能和特性。然后,进行技术选型和架构设计,选择适合的区块链平台和开发工具。接下来,进行系统的搭建和编码,实现游戏逻辑和用户交互功能。最后,进行测试和优化,确保系统的稳定性和性能。