iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0

上次我們講到,伺服器上的遊戲狀態會直接反應出遊戲的畫面。
而我們也需要隨著遊戲進行,依照動作與遊戲規則來改變遊戲狀態。
看起來我們要先把這個遊戲狀態的結構固定好。

遊戲狀態結構

痾...想到什麼就先加上去看看好了, 今天的應該比較像 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
}

最後這樣似乎合理很多...嗎? 雖然之後有可以會再改,甚至是明天我們把這些結構寫出來的時候就會後悔,但目前看起來是還可以接受的開始。

你會怎麼紀錄這個遊戲的資料呢?


上一篇
3 所以要長怎樣?
下一篇
5 開始把結構寫成程式吧!
系列文
連線網頁卡牌遊戲(Elixir, Phoenix, Liveview)32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言