階段的類別說明如下:
階段階段
階段階段(Stage)
名稱 名稱
名稱名稱 型態型態型態型態 說明說明 說明說明
ID
Int 這個階段的唯一編號。name
String 這個階段的名稱。nextStage Stage
這個階段的下一個階段。actions
Action[] 這個階段裡要執行的所有動作。表 8:階段(Stage)類別的詳細說明
階段流程的部份,我們使用一個 while 迴圈在各個階段中不斷循 環,直到遊戲結束。每個階段都依序執行該階段裡的所有動作物件。
在這裡,會使用到遊戲物件裡的 isGameover 與 nowStage 屬性值。
相關的程序如下:
「階段」物件在程式建置、遊戲玩家尚未到齊、遊戲尚未開始的時 候就已經存在。
圖 6:動作系統相關設定的 class diagram
3.4 動作系統
triggerType
String 這個動作的觸發型態,這會在設定執行時機的時候用到。
Timings
Specification[] 這個動作的執行時機。Conditions
Condition[] 這個動作的執行條件。Effects
Operation[] 這個動作的執行效果。preActionList
Vector<Action> 這個動作的前置動作佇列。postActionList Vector<Action> 這個動作的後置動作佇列。
表 9:動作(Action)類別的詳細說明
行效果,接著再執行後置動作佇列裡的所有動作。一個動作物件的執
表 10:執行時機(Specification)類別的詳細說明
動作的執行時機有三種:
1. 階段流程直接使用
2. 玩家在某個階段可以使用
3. 由某個動作在執行前或執行後觸發
所以,我們將這些類別做分類,然後使用 type 與 parameter 這兩項
屬性值來做設定,詳細的設定方式如表 11:
說明 說明 說明
說明 type parameter
階段流程直接使用 系統呼叫 無
玩家於某階段可以使用 玩家使用 階段名稱
某種動作的前置動作 動作開始前觸發 觸發的動作類別
某種動作的後置動作 動作開始後觸發 觸發的動作類別
表 11:執行時機設定一覽表
如果我們要設定一個動作是某個動作的前置動作或後置動作,譬 如在「99 魔法牌」裡,我們想要設定『再出』這個動作是『減』這 個動作的後置動作,那我們就需要在『再出』這個動作的執行時機裡,
type 的地方設為「動作開始後觸發」,然後在 parameter 裡,填入『減』
這個動作的觸發類別,也就是『減』這個動作物件的 triggerType 這 個屬性值的值。
與「動作」物件相同,「執行時機」物件在程式建置、遊戲玩家 尚未到齊、遊戲尚未開始的時候尚未存在。這些物件需要在遊戲玩家 加入時讀入他們的牌組資訊之後才動態產生。
執行條件 執行條件
執行條件執行條件(Condition)
名稱名稱
執行效果 執行效果
執行效果執行效果(Operation)
名稱名稱
來設定,「執行效果」的參數(parameter)需要能被該文法所辨識,如 此我們就可以針對該文法所產生的所有執行效果格式一一做處理。關 於文法的部份,詳見附錄 A。
關於文法的部份,因為執行條件與執行效果都需要透過文法來產 生符合正確格式的設定參數,而這些設定參數又有可能會指向玩家所 設定的類別屬性值,譬如「牌卡.數字」這就是「99 魔法牌」這個遊 戲所需要用到的一個自定的屬性值,所以文法的部份亦需要在遊戲設 計師設定好自定的物件類別屬性值之後,才動態產生。