dappstore123 / goGame

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

goGame

围棋游戏。棋盘有开源产品。https://github.com/SabakiHQ/Shudan/tree/master/demo-react

  1. metamask chrome插件安装

  2. 部署合约【创建按钮】,用abi 和bin

  3. 修改 回调函数 【函数】。

https://github.com/SabakiHQ/Shudan/blob/master/demo-react/main.js#L310

该回调函数为 下棋后回调。 回调函数里 用metamask 签名,并广播出去。

  1. 定时刷新,从区块链里刷新状态。因为区块链打包数据需要时间,前端js已经下棋 实际上区块链不一定已经打包。而且需要同步对手的操作后导致状态的变化。

15秒刷新一下。

修改按钮状态。刷新后 需要设置一些按钮为 disable 状态。棋盘的 busy 状态。

  1. 其他功能按钮。

流程,从零开始。

1.用户创建围棋游戏。点击 【创建按钮】。 js 记录 当前 合约地址交易hash 所在网络。以便下面使用 。 创建按钮设置 disable。

定时扫描 交易hash判断是否已经 提交。

如果已经提交,则显示 合约地址。比如某个div显示。文字提示 用户可将 合约地址所在网络 告知好友,即可。

(定时任务不断 刷新各种状态)

  1. 另一方玩家。拿到 合约地址(0x11111111111111格式)。

在浏览器写入 http://127.0.0.1/0x11111111111111

js 获得 0x1111111,判断合约是否存在。

(定时任务不断 刷新各种状态)

如果游戏状态为未开始,挑战按钮 enable 状态。否则为disable。

点击 【挑战按钮】,执行签名,拉起metamask,广播数据,然后设置为 disable。

未开局 或者 被拒绝,可以【取回筹码】

  1. 创建者 发现 【挑战任务状态】已经变成 1,【同意挑战】【拒绝挑战】变为enable。

可以掉 【同意挑战】【拒绝挑战】。签名 广播数据。【同意挑战】【拒绝挑战】变为enable。

  1. 定时任务不断扫描,可以查询出 当前浏览器是黑棋还是白棋子。当前 行棋权,非行棋权 棋盘为 busy。

观察者肯定是 busy,同时所有 按钮 disable。

  1. 下棋 回调函数。

  2. 一方【申请终局】,数据签名。

  3. 另一方【同意终局】 或者【拒绝终局】

  4. 可以 【强制终局】,任何一方 在自己行棋权 都可以强制终局。

  5. 【投降】 任何一方 在自己行棋权 都可以 放弃。

  6. 游戏结束,gameover 为true,赢家可以 取回所有币。【获得收入】

About

License:GNU General Public License v2.0


Languages

Language:Go 100.0%