H5/小程序小游戏项目系统开发技术(成熟概念)

简介: H5/小程序小游戏项目系统开发技术(成熟概念)

​​“羊了个羊”这个微信小游戏真实让人欲罢不能,沉迷其中。每天打开朋友圈、微信群,大家都在问第二关过了吗?甚至于小编有个当医生的朋友,忙碌亿整天之后,晚上也在争分夺秒的玩“羊了个羊”。

如果我们希望能够区分这些小猫,我们需要赋予它们独特的属性!在上一步中,我们使用了尚未实际定义的KittyRandomness。

我们将使用frame_support 中的Randomness trait执行此操作。它将能够生成一个随机的种子,我们将用它来创建独特的小猫,并培育新的小猫。

在pallet的配置特征中,定义受Randomness特征约束的新类型。
来自frame_support中Randomnesstrait 需要使用参数来指定Output和BlockNumber泛型。

将 ACTION #5 行替换为:

type KittyRandomness: Randomness<Self::Hash, Self::BlockNumber>;
复制

在runtime中指定实际类型。
鉴于我们在pallet的配置中添加了一个新类型,我们需要配置runtime以设置其具体类型。如果我们想更改正在使用的算法,而无需修改pallet内的使用位置,KittyRandomness可能会派上用场。为了展示这一点,我们将设置 KittyRandomness 类型为 FRAME 的 RandomnessCollectiveFlip 的一个实例。 方便的是,node template已经有一个 RandomnessCollectiveFlip pallet的实例。

在runtime的runtime/src/lib.rs 中设置 KittyRandomness 类型:

impl pallet_kitties::Config for Runtime {

type Event = Event;
type Currency = Balances;
type KittyRandomness = RandomnessCollectiveFlip; // <-- ACTION: add this line.

}
复制

在这里,我们从其接口(Randomness<Self::Hash, Self::BlockNumber>)中抽象出随机性生成实现(RandomnessCollectiveFlip)。

随机生成DNA
生成DNA类似于使用随机性随机分配性别类型。不同之处在于,我们将使用在上一部分中导入的blake2_128。如果我们在同一块中多次调用此函数,我们还将使用extrinsic_index从frame_systempallet中生成不同的哈希。将 ACTION #6 行替换为:

impl pallet_kitties::Config for Runtime {

type Event = Event;
type Currency = Balances;
type KittyRandomness = RandomnessCollectiveFlip; // <-- ACTION: add this line.

}
复制

写入剩余的存储项

为了轻松跟踪我们所有的小猫咪,我们将标准化我们的逻辑,以使用唯一的 ID 作为存储项的全局KEY。这意味着单个唯一键将指向我们的Kitty对象(即我们之前声明的结构)。

为了使其正常工作,我们需要确保新Kitty的ID始终是唯一的。我们可以使用新的存储项Kitties来执行此操作,该存储项将从ID(哈希)映射到Kitty对象。

使用此对象,我们只需检查此存储项是否已包含使用特定 ID 的映射,即可轻松检查冲突。例如,从可调度函数内部,我们可以使用以下命令进行检查:

ensure!(!<Kitties>::exists(new_id), "This new id already exists");
复制

我们的runtime需要注意:

独特的资产,如货币或小猫(这将由名为Kitties的存储map持有)。
这些资产的所有权,如帐户ID(这将处理一个名为KittiesOwned的新存储映射)。
要为结构Kitty创建存储实例,我们将使用StorageMap — FRAME 提供给我们的。

存储项的外观如下:

[pallet::storage]

[pallet::getter(fn kitties)]

pub(super) type Kitties<T: Config> = StorageMap<

_,
Twox64Concat,
T::Hash,
Kitty<T>,
;
复制

KittiesOwned存储项与此类似,只是我们将使用BoundedVec来跟踪我们将在runtime/src/lib.s中配置的 Kitties 的最大数量。

[pallet::storage]

[pallet::getter(fn kitties_owned)]

/// Keeps track of what accounts own what Kitty.
pub(super) type KittiesOwned<T: Config> = StorageMap<

_,
Twox64Concat,
T::AccountId,
BoundedVec<T::Hash, T::MaxKittyOwned>,
ValueQuery,
;
复制

复制上面的两个代码片段以替换操作 #7 行。

在检查pallet编译之前,我们需要在配置特征中添加一个新类型MaxKittyOwned,这是一个pallet常量类型(类似于前面KittyRandomness的步骤)。将操作 #9 替换为:

[pallet::constant]

type MaxKittyOwned: Get;
复制

最后,我们在runtime/src/lib.rs中定义类型MaxKittyOwned。这与我们对 Currency 和 KittyRandomness 遵循的模式相同,只是我们将使用 parameter_types ! 宏添加一个固定的 u32!

parameter_types! { // <- add this macro

// One can own at most 9,999 Kitties
pub const MaxKittyOwned: u32 = 9999;

}

/// Configure the pallet-kitties in pallets/kitties.
impl pallet_kitties::Config for Runtime {

type Event = Event;
type Currency = Balances;
type KittyRandomness = RandomnessCollectiveFlip;
type MaxKittyOwned = MaxKittyOwned; // <- add this line

}
复制

检查Kitties 区块链编译

cargo build --release

相关文章
|
26天前
|
小程序 前端开发 关系型数据库
uniapp跨平台框架,陪玩系统并发性能测试,小程序源码搭建开发解析
多功能一体游戏陪练、语音陪玩系统的开发涉及前期准备、技术选型、系统设计与开发及测试优化。首先,通过目标用户分析和竞品分析明确功能需求,如注册登录、预约匹配、实时语音等。技术选型上,前端采用Uni-app支持多端开发,后端选用PHP框架确保稳定性能,数据库使用MySQL保证数据一致性。系统设计阶段注重UI/UX设计和前后端开发,集成WebSocket实现语音聊天。最后,通过功能、性能和用户体验测试,确保系统的稳定性和用户满意度。
|
27天前
|
存储 小程序 搜索推荐
打造无缝社交体验:多平台适配,开启线上线下陪玩系统小程序社交新时代
通过实施以上策略和行动计划,可以打造出一个无缝社交体验的多平台陪玩社交系统,为用户提供更加便捷、高效、有趣的社交体验,开启线上线下陪玩系统源码社交的新时代。
53 11
|
27天前
|
小程序 前端开发 关系型数据库
基于Uniapp+php校园小程序,校园圈子论坛系统功能,校园跑腿二手交流功能设计
校园圈子论坛及综合服务平台集成了校园跑腿、兼职信息、外卖团购、闲置交换、租赁服务、表白墙等多功能模块,提供一站式校园生活解决方案。系统采用uniapp前端和PHP后端开发,支持多城市、多学校切换,配备分站式后台管理,确保稳定性和安全性。通过融云IM SDK实现即时通讯功能,增强用户互动与粘性。适用于大学校园、城市及社区圈子,满足多样化需求,提升便捷体验。
|
30天前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
27 0
|
1月前
|
小程序 数据安全/隐私保护
跑腿小程序系统源码
这是一款跑腿小程序,带有智能派单、系统派单、同城配送、校园跑腿、预约取件、用户端+骑手端 基于FastAdmin+thinkphp和uniapp开发的优创同城跑腿系统,支持帮取、帮送模式,包含用户端、骑手端、运营后台。
77 32
|
1月前
|
存储 监控 小程序
TP6+Uni-app框架下,圈子系统小程序的快速上线开发步骤
社交圈子系统多端运营级应用,融合了推荐匹配、语音聊天、IM即时通讯、动态发布、一键约聊、同城交友、附近的人、充值提现、邀请推广等功能,为平台运营提供更多的盈利变现方式。程序源码开源,支持二次开发,根据客户不同应用场景需求,定制个性化解决方案。
56 9
|
1月前
|
小程序 IDE PHP
圈子源码如何打包生成App小程序/开发一个圈子系统软件所需要的费用体现在哪里?
将PHP源码打包成App的过程涉及多个步骤和技术选择。以圈子源码为例,首先明确需求,确定App功能和目标用户群体,并根据需求开发小程序页面,如用户注册、圈子列表等。源码准备阶段确保源码适用于小程序开发,环境配置需安装IDE(如微信开发者工具)及依赖库。最后在IDE中打包小程序并上传至管理平台,通过审核后发布。费用方面,模板开发成本较低,定制开发则更高,具体取决于需求复杂度和第三方服务费用。
74 0
|
1月前
|
移动开发 开发框架 小程序
轻松搭建婚恋交友系统源码,H5/小程序/APP自动适配,智能匹配恋爱交友平台快速落地
婚恋交友系统涵盖在线交友、线下活动、专业服务、社交娱乐等,满足用户多样化需求。系统设计简洁易用,提供实名认证、多注册方式及安全保护,确保用户隐私和数据安全。功能丰富,支持图文展示、筛选匹配、聊天互动、虚拟礼物等,提升互动趣味性。平台可分类管理用户、审核信息、智能推荐,优化用户体验。基于TP6+Uni-app框架,实现跨平台同步,支持二次开发,适应不同市场需求。 [了解更多](https://gitee.com/multi-customer-software/jy)
|
1月前
|
消息中间件 监控 小程序
电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
电竞陪玩系统架构涵盖前端(React/Vue)、后端(Spring Boot/php)、数据库(MySQL/MongoDB)、实时通信(WebSocket)及其他组件(Redis、RabbitMQ、Nginx)。通过模块化设计、微服务架构和云计算技术优化,提升系统性能与可靠性。同时,加强全面测试、实时监控及故障管理,确保系统稳定运行。
|
1月前
|
移动开发 小程序 前端开发
超详细攻略!uniapp陪玩系统,打包陪玩小程序、H5需要注意什么?
陪玩系统的打包过程涵盖APP、小程序和H5平台。APP打包需使用uni-app开发工具,配置项目信息并选择云打包;小程序打包需在微信公众平台注册账号并提交审核;H5打包则直接通过uni-app生成文件并上传至服务器。各平台需注意权限配置、代码规范及充分测试,确保应用稳定性和兼容性。

热门文章

最新文章