EOS井字游戏(Tic-tac-toe)智能合约

  • 日期:08-21
  • 点击:(1924)


EOS井字游戏(Tic-tac-toe)智能合约

很多网络游戏编程的基础课程,会以井字游戏开始。EOS官方教程也不例外,本篇将讲述如何在EOS区块链上做一个去中心化的双人互动井字游戏。

一、设计与准备

玩家

该游戏将采取标准的3X3井字游戏方式。玩家被定义为两个角色:host与·challenger,Host(庄)首先画。同时,每对玩家最多同时玩两局,一局先下者做庄,一局后下者坐庄。

棋盘与数据结构

Instead of using o and x as in the traditional tic tac toe game. We use 1 to denote movement by host, 2 to denote movement by challenger, and 0 to denote empty cell. Furthermore, we will use one dimensional array to store the board. Hence: 在游戏中,1代表host占的格子,2代表challenger占的格子,0代表还没被占领的格子。

如上图,我们设定x(叉)为host占的格子,用1表示;o(圈)为challenger占的格子,用2表示,则上图的数据结构可以表示为:[0, 2, 1, 0, 1, 0, 1, 2, 2](先横后竖)

动作

User will have the following actions to interact with this contract:

create: create a new game restart: restart an existing game, host or challenger is allowed to do this close: close an existing game, which frees up the storage used to store the game, only host is allowed to do this move: make a movement

玩家将会做出以下动作,与智能合约交互:

  • create: 创建游戏
  • restart: 重启当前已有的一局游戏,host和challenger都能执行该行为
  • close: 关闭一局游戏,将存储资源从EOS中释放,只有host允许操作该行为
  • move: 占领某一个位置的格子

创建合约

下面教程,将会基于一个命名为 tic.tac.toe 的账户创建智能合约。如果 tic.tac.toe 账户名被使用,可以创建另外一个账户名,并将代码中出现的 tic.tac.toe 改为你的账户名。 如果还没建立账户,请先按以下命令建立账户,再进行下一步操作。

$ cleos create account ${creator_name}${contract_account_name}${contract_pub_owner_key}${contract_pub_active_key}--permission ${creator_name}