本文同步自wing的地方酒馆php
在上一篇文章中,咱们开发了本身第一个demo级别的DAPP,而且得到了NAS官方的奖励。如今提交随着提交的应用愈来愈多,审核力度也在加大,因此demo级的应用已经很难以经过了。前端
因而和小伙伴一块儿开发一个区块链游戏,来帮助本身更好的学习区块链。android
此次的想法是作一个宠物养成游戏,已经发布的地址以下:鸡神养成记http://inspoy.cc/dapp/pet/,欢迎你们来玩耍~,能够随便点一点,一块儿分得奖池NAS的奖励。git
列了一下主要的需求有以下几点:github
原本想作个最简单的宠物养成游戏,没想到需求也这么复杂。。 先来看看最后的成品吧~chrome
哈哈,由于我跟朋友都不是没接触过前端,因此界面比较简单,也比较丑,不要笑~json
需求分析完了,来讲说分工,朋友负责的是前端,由于没有接触过,因此跟上次同样,选择bootstrap+jQuery。合约就是js。bootstrap
鉴于可能有小伙伴不太懂怎么使用,这里写一下简单的教程。 首先安装一个chrome的钱包插件: github.com/ChengOrange…数据结构
这个时候你就能够看到插件已经下好了~ 打开是这样的:app
点击新建钱包,保存你的钱包文件和密码。生成的n1xxxxxx.json 文件名(不带json)表明你的钱包地址。
这个时候,打开鸡神养成记,输入你的钱包地址,点击登录,会弹出这样的窗口:
点击生成交易,便可得到一只你的小鸡了~~
有时候提示Nonce必须大于什么什么,这种是你手点太快了,关闭这个插件窗口从新点击登录便可。
另外登录须要消耗一些GAS,通常是1000000, 1NAS = 10^18 gas,因此你只须要有0.01个nas就能够交易不少次。
以后,只须要对宠物进行喂食,玩耍,当分数处于排行榜内,且购买双倍积分卡的金额大于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/
欢迎加入qq群一块儿讨论区块链技术: 615075629