• 沒有找到結果。

階段流程

階段的類別說明如下:

階段階段

階段階段(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 魔法牌」這個遊 戲所需要用到的一個自定的屬性值,所以文法的部份亦需要在遊戲設 計師設定好自定的物件類別屬性值之後,才動態產生。

相關文件