iT邦幫忙

1

如何設計一個具有各階段的程序(不是程式)

各位好

最近在製作一個小遊戲,主要的功能都已經完成了
目前卡在階段結算的部份
遊戲有四個階段,每個階段結算後才會到下一個階段,第四階段結束後會回到第一階段
如此直到遊戲結束
(類似大老二或大富翁那樣所有玩家這輪都有做事或跳過後才會到下一輪直到遊戲結束)

想請問這種情況會怎麼設計程式的架構?
原本是想說使用物件(目前已經有玩家跟整個遊戲整體的物件)
設計一個具有四個階段的物件,當每一輪開始就建立新物件,本輪結束後就建立新物件並放入上一輪結束後的玩家跟遊戲本體,舊的物件就垃圾回收掉

這樣每輪之間過程就會一致,並且不會互相干擾,只有遊戲狀態跟玩家狀態會延續到下一輪

或是使用queue,pop出來的物件立刻清空並push進原本的queue內

只是在想是不是有更好的資料結構可以使用
如果有其他需要補充的資訊請不吝提出

感謝各位

看更多先前的討論...收起先前的討論...
好問題,追蹤看高手回答
fillano iT邦超人 1 級 ‧ 2020-06-24 09:24:30 檢舉
狀態機?
資料架構呢,一個循環制的遊戲鐵定會有一些基本資料
所謂的階段,不過變動這些基本資料的數值的過程
讀取資料 => 賦予物件數值 => 進入階段運算 => 將物件數值回存
應該是這樣的程序吧,你有物件流,那資料流呢 ?
skycover iT邦新手 5 級 ‧ 2020-06-24 09:38:58 檢舉
> 你有物件流,那資料流呢 ?
抱歉,不太清楚兩者的差異,能否稍微說明一下
謝謝

> 狀態機?
這個是指用一個物件或參數紀錄現在的狀態嗎?
fillano iT邦超人 1 級 ‧ 2020-06-24 09:57:37 檢舉
https://www.google.com/search?q=%E7%8B%80%E6%85%8B%E6%A9%9F&oq=%E7%8B%80%E6%85%8B%E6%A9%9F&aqs=chrome..69i57j0l7.4114j0j7&sourceid=chrome&ie=UTF-8

1 個回答

0
浩瀚星空
iT邦超人 1 級 ‧ 2020-06-24 09:52:17
最佳解答

其實如果是遊戲設計上。
並不會像你說真所有的東西都放在一個物件的模式。

如果依你的例子。我會先區分
「用戶」「地圖」「行為」基本的三種出來。

「行為」這個容器,就是來建立你所謂的回合制動作行為。
「用戶」則是單純存用戶的資料
「地圖」則是記錄目前地圖上所有的資料。

由「行為」來決定觸發目前哪一個「用戶」,並將其資料記錄到「地圖」
由於「行為」為單一獨立運行庫,「用戶」「地圖」為搭配元件。
並不需要有所謂生成新物件的方式。

其實你可以去找找一些私服來玩玩。以上的觀念都是我從玩私服學過來的。

它是將對應的容器各別分開。只做事件觸發處理應用。

skycover iT邦新手 5 級 ‧ 2020-06-24 11:45:18 檢舉

「用戶」目前有這個物件,依照玩家人數存放在一個全域的Player陣列中,用來儲存玩家的手牌,身上的BUFF等等

「地圖」 目前已經有做出這個物件了,用來記錄現在遊戲內的所有資料(場面上的牌,牌庫內尚未抽出的牌等等)

「行為」 這個一般來說也會做成物件嗎?
所以前端真正溝通的對象應該是這個容器,由這個容器去分配用戶與地圖各自的任務
我的理解正確嗎?

是的。
理解才這樣算不錯了。

「行為」這個容器,你也可以將其視為一種控制器。
可以單純的去記錄步進動作。

我要發表回答

立即登入回答