NAS星云链DAPP开发之《鸡神养成记》游戏分享

  • 时间:
  • 浏览:0
  • 来源:知而不乎

在上一篇文章中,我们开发了自己第一个demo级别的DAPP,并且获得了NAS官方的奖励。现在提交随着提交的应用越来越多,审核力度也在加大,所以demo级的应用已经很难以通过了。

于是和小伙伴一起开发一个区块链游戏,来帮助自己更好的学习区块链。

这次的想法是做一个宠物养成游戏,已经发布的地址如下:鸡神养成记http://inspoy.cc/dapp/pet/,欢迎大家来玩耍~,可以随便点一点,一起分得奖池NAS的奖励。

如果你没有NAS,那么在评论发出你的钱包地址,我会给你转入0.01NAS,帮助你来体验区块链和部署自己的合约。

需求

列了一下主要的需求有如下几点:

  • 宠物拥有饱食度,可以喂养宠物。
  • 宠物拥有心情值,可以陪宠物玩耍。
  • 宠物拥有经验值,经验值满了可以成神。
  • 系统拥有积分系统,玩耍,成神,喂食都会获得一定积分。
  • 宠物如果饱食度过低,则会死亡,死亡扣除积分。
  • 系统拥有排行榜,排行榜根据积分来排行。
  • 系统拥有双倍积分卡,购买双倍积分卡的币会进入奖池,满足一定额度会分给排行榜前十。

本来想做个最简单的宠物养成游戏,没想到需求也这么复杂。。 先来看看最后的成品吧~

哈哈,因为我跟朋友都不是没接触过前端,所以界面比较简单,也比较丑,不要笑~

需求分析完了,来说说分工,朋友负责的是前端,因为没有接触过,所以跟上次一样,选择bootstrap+jQuery。合约就是js。

使用教程

鉴于可能有小伙伴不太懂怎么使用,这里写一下简单的教程。
首先安装一个chrome的钱包插件:
https://github.com/ChengOrangeJu/WebExtensionWallet

  • 点击下载zip包,或者clone下来。
  • 打开chrome菜单的更多工具–扩展程序。
  • 打开右上角的开发者模式。
  • 点击加载已解压的差距,将下载的导入。

这个时候你就可以看到插件已经下好了~
打开是这样的:

点击新建钱包,保存你的钱包文件和密码。生成的n1xxxxxx.json 文件名(不带json)代表你的钱包地址。

这个时候,打开鸡神养成记,输入你的钱包地址,点击登陆,会弹出这样的窗口:

点击生成交易,即可获得一只你的小鸡了~~

有时候提示Nonce必须大于什么什么,这种是你手点太快了,关闭这个插件窗口重新点击登陆即可。

另外登陆需要消耗一些GAS,一般是1000000, 1NAS = 10^18 gas,所以你只需要有0.01个nas就可以交易很多次。

如果你没有NAS,那么在评论发出你的钱包地址,我会给你转入0.01NAS,帮助你来体验区块链和部署自己的合约。

之后,只需要对宠物进行喂食,玩耍,当分数处于排行榜内,且购买双倍积分卡的金额大于0.5NAS的时候,则会向排行榜分发这些NAS哦~~

实现

数据结构

首先思考怎么存储数据,这里因为NAS本身提供map类型的存储,所以定义一个map类型存储空间,用来存储游戏数据,key是用户地址,value是自定义类型的游戏数据。

下面思考游戏数据都包含什么东西,因为宠物有心情、饱食度、经验等属性,所以这些不可少。另外玩耍和喂食都要做出时间限制,防止无限喂食,所以应该包含上次喂食和玩耍时间。包括分数、成神数、双倍时间数、等等信息:

数据结构定义好了。接下来完成各种行为。

查询数据

首先肯定是领养一只宠物,在区块链中读取有没有游戏数据,如果没有游戏数据,则生成一个数据:

这里有一些问题就是我目前不知道如何定时执行代码,所以我只能在查询宠物信息的时候,弄一个登陆状态,来在查询中储存游戏数据(比如饱食度每分钟会下降),所以第一次查询的时候,消耗gas,就会有一种饱食度事实在下降的效果,实际上是用户登陆的时候,动态根据时间计算的。这里先完成饱食度下降的计算,如果下降超过一定额度,则小鸡死亡:

其次更新一下游戏状态,也就是存储数据,并且每天12点会重置心情值:

关于saveGameData方法,其实就是将游戏数据存储在map类型里:

行为

玩耍

接下来,需要完成一系列行为,首先是玩耍。
玩耍主要有几点,第一点是玩耍的间隔判断,所以这里根据玩耍间隔和上次玩耍时间来计算。
另外如果处于双倍积分卡内,则获得的积分将会*2,心情的最大值为1.

心情每次增长有一定比例。

投食

投食和玩耍差不多,主要区别在于喂食的时候,小鸡可以成神,这里判断一下经验值即可:

购买双倍积分卡

这里双倍积分卡其实也是一个时间属性,用户付费以后,增加对应时间即可。需要注意的是,需要判断一下用户的支付数量,如果不对则拒绝交易。另外在合约内部无法得知合约现在的余额,所以我们需要自己额外维护。这里NAS官方使用的BigNumber库来计算大数。

每次接收到付费的时候判断奖池余额是否大于0.5NAS,如果大于,则向前十分钱,并且清空排行榜数据。

获取排行榜数据

这里有一个特别的地方就是,因为官方map不提供遍历的功能。所以只能另外寸一个map,来存放index对应的用户地址,需要遍历的时候,先从地址map里面获取地址,再从数据map里面取出来数据:

这样完整的合约代码就完成了(吐槽一句,真的不好调试,有一点点小修改就需要重新部署~)

接下来是前端部分

前端部分其实核心就是根据sdk来调用区块的数据。
首先封装两个方法,一个是需要支付的,写入数据函数。一个是不需要支付的查询数据函数:

页面初始化的时候,对ui进行显隐控制,并且只查询游戏在线人数:

登陆

点击登陆按钮,查询宠物信息数据,并且登陆完成后,向合约轮训来事实刷新游戏数据:

投食&&玩耍

点击对应的按钮,进行对应的接口调用。

投食按钮:

玩耍按钮:

购买双倍积分卡:

这样,基本的操作界面已经有了:
这里有基本的玩耍介绍:

本文也就到此结束啦~ 人生中第二个DAPP完成了。

如果你觉得对你有帮助,可以点赞,分享~

并且十分建议你来玩《鸡神养成记》,可以获得NAS哦~ 是兄弟,就来砍我吧~
鸡神养成记地址:http://inspoy.cc/dapp/pet/

如果你没有NAS,那么在评论发出你的钱包地址,我会给你转入0.01NAS,帮助你来体验区块链和部署自己的合约。

欢迎加入qq群一起讨论区块链技术:
615075629

猜你喜欢

仔细分析NAS星云DAPP评奖结果,下一个获奖者可能就是你

近期有很一些小伙伴在群里说,星云官方在评选Dapp的过程中,有偏袒某些人的嫌疑。现阶段星云评选奖励的方式是“算法+人工”,所以存在一条普遍真理:只要是人工参与,一定会有争议。大

2018-06-06

NAS星云链和eos对比 只差半个李笑来

许多业内技术大佬开玩笑评价NAS和EOS只差半个李笑来,因为NAS星云链没有请任何大佬站台过。NAS是一个自带用户流量入口的公链,他内置的区块链搜索引擎,让用户在海量抽象的区块

2018-06-05

星云链官NAS nano 移动端应用市场正式上线

5月31日,星云链官方APP版钱包NASnano完成更新,钱包内新增应用中心,并在iOS与Android端同时上线。用户可以在移动端使用通过“星云激励计划”选拔出的上百个优秀D

2018-06-03

如果虚拟货币的DApp没有繁荣起来,最终还是一地鸡毛

 这是一个浮躁的时代,而币圈的风气最盛!就想着闷头搞技术,谈谈信仰和情怀,在几年前,是有那么一批信徒,可是现在,全都在躁动着,大家可以理解情怀,可是也得吃饭,天下熙熙

2018-05-30

星云激励计划DApp审核规则指南

提交应用前请在应用提交前检查,确保应用具备下列条件,否则会导致无法通过审核:提供了可公开访问的网址、移动应用或离线应用的下载地址,并且保证稳定性。该DApp有智能合约,并且已经

2018-05-23