Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] 一个链上石头剪刀布小游戏 #9

Open
1 of 2 tasks
jolestar opened this issue May 16, 2022 · 4 comments
Open
1 of 2 tasks

[Feature Request] 一个链上石头剪刀布小游戏 #9

jolestar opened this issue May 16, 2022 · 4 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@jolestar
Copy link
Contributor

jolestar commented May 16, 2022

初步思路,有两个:

  • 用户和智能合约玩游戏
  1. 用户选择出石头剪刀或者布,支付 1 stc,合约里随机(合约中的随机数有局限,不过用在这个场景还可以)出石头剪刀或者布。
  2. 如果用户赢了,从资金库中支付 1 stc 给用户。
  3. 如果用户输了,1 stc 存到资金库。
  4. 需要有个很小的初始资金库。按概率来说,资金库不会被耗尽,如果耗尽就说明随机数规则被别人 hack 了。
  • 用户和用户之间玩游戏

这个稍微复杂一些,因为无法实现两个用户同时出拳,所以必须是异步的,所以先发起交易的一方需要先隐藏自己的出拳。

  1. Alice 开一局游戏,抵押 x stc,并带上自己选择的 hash。选择用一个很大的随机数字 n 表示,n%3 的余数 0,1,2 分别表示石头,剪刀,布。用户可以自己选择随机数代表自己的选择。hash = sha3(alice address + n)。DApp 生成一个代表该局游戏的链接。
  2. Alice 将自己的链接发给 Bob, Bob 同样做出选择,可以直接提交选择(0,1,2),抵押 x stc, 提交给合约。
  3. Alice 公开自己的选择,提交到合约,合约验证 hash 是否匹配,然后做出裁判。 这里有个超时机制,如果超过一定时间,Alice 依然不公开自己的选择,超时后 Bob 可以直接请求合约仲裁,合约直接判定 Alice 输。
  4. 赢的一方可以获取另外一方抵押的 stc,可以考虑扣取一部分手续费放到合约资金库。另外考虑到激励 Alice 及时公布选择,可以规定,一个分配比例,比如输的一方依然可以拿回 5% 的押金,剩下的都给赢的一方。

开发者收益

通过开发这个游戏可以有以下收益:

  1. 理解智能合约里的随机数
  2. 理解链上的状态的存储以及资金如何锁在合约里。
  3. 理解链上游戏的一些难点,随机数,隐藏信息等。
  4. 理解合约如何和 web 界面交互。

对这个游戏有其他想法或者建议,也欢迎在评论中提出。如果有其他游戏的构思,可以提交成 issue。

@jolestar jolestar added the help wanted Extra attention is needed label Jun 1, 2022
@vueadmin
Copy link
Contributor

coding...

@vueadmin
Copy link
Contributor

智能合约编写完毕,正在处理DAPP

jolestar pushed a commit that referenced this issue Jul 3, 2022
* 初始化石头剪刀布游戏

* 初始化石头剪刀布游戏

* #9 一个链上石头剪刀布小游戏 VS智能合约版

* 统一石头剪刀布游戏的文件名称和方法名称

* 玩家参数限制 不能大于等于3

* 修改用户选择判断参数

* 修改玩家异常输入判断参数

* 剪刀石头布小游戏VS机器人版

* complete

Co-authored-by: vueadmin <keikeizhang540623@gmail.com>
@uvd
Copy link
Collaborator

uvd commented Jul 4, 2022

#29 和合约玩部分已经实现 还差用户和用户之间玩游戏

@Tonyce
Copy link
Contributor

Tonyce commented Aug 14, 2022

增加和朋友玩的游戏 #51

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants