4 游戏状态结构

上次我们讲到,服务器上的游戏状态会直接反应出游戏的画面。
而我们也需要随着游戏进行,依照动作与游戏规则来改变游戏状态。
看起来我们要先把这个游戏状态的结构固定好。

游戏状态结构

痾...想到什麽就先加上去看看好了, 今天的应该比较像 sudo-code 我们先专注在设计结构本身
决定好之後再一次帮他们定义好

%Game{}

建立了一局游戏,我们先加上玩家好了。这个是 1 对 1 的游戏,预计的流程大概是建立新游戏之後,再把游戏连结分享给对手加入。所以会有一个 host 一个 guest

%Game{
  host: %Player{},
  guest: %Player{}
}

Player 我们待会再详细定。
接着是每一局当中的游戏状态,目前想到的有纪录现在第几局、纪录结果

%Game{
  host: %Player{},
  guest: %Player{},
  round: 1,
  winner: nil
}

我现在困扰的事场面上的卡要放在 Game 层,还是要放在 Player 层,毕竟场上还是有分两边的。
我看我们现在的东西也满少的,不如就先完全不要有 Player 层,全部都撒在 Game 试试看:

%Game{
  host_hand: [],
  host_desk: [],
  guest_hand: [],
  guest_desk: [],
  round: 1,
  winner: nil
}

或是用 Round(回合) 来分类

%Game{
  rounds: %Round{...在下面}
  host_hand: [],
  guest_hand: [],
  current_round: 1,
  winner: nil
}

%Round{
  host_desk: [], 
  guest_desk: [], 
  winner: nil
}

最後这样似乎合理很多...吗? 虽然之後有可以会再改,甚至是明天我们把这些结构写出来的时候就会後悔,但目前看起来是还可以接受的开始。

你会怎麽纪录这个游戏的资料呢?


<<:  [Day03] TS:泛型就。很。泛!用 extends 来加上一点限制吧!

>>:  [Day18]Tell me the frequencies!

DAY30:文章最後的总结

这次是第一次参加比赛,在这中间重复复习了一遍Android studio这项开发工具,在这之中厘清了...

Day2 基础安装 + 加码:nvm

今天正式进入主题~ 在开始前我们必须先把环境建立起来,我知道很多人会使用webpack,但这边我是使...

Linux网络诊断工具 mtr

MTR是Linux平台上一款非常好用的网络诊断工具,或者说网络连通性判断工具,集成了tracerou...

Extra04 - Git - 程序码版本控制

此篇为番外,未收入在本篇的原因是 Git 是个复杂但很基础的工具,因此大部分的人都已经有个初步的认...

NIST SP 800-53A(附录E:渗透测试)

企业通常会进行渗透测试,以验证现有的安全和隐私控制,并通过发现漏洞和利用漏洞,彻底记录测试期间执行的...