第四章 系統實作
4.2 使用者介面
4.2.1 Board Panel
4.2.1.2 Drawing Customization
棋盤上除了需要繪製棋盤和棋子之外,為了使用者操作和瀏覽的 方便,也會在棋盤上繪製一些提示符號或是圖案來輔助說明。由於各 遊戲對這部分的需求不一,在這裡我們同樣是使用 Property 檔來處 理。我們將這類的繪圖功能,分成標記、下子順序及提示圖案等三個 部分來討論。
4.2.1.2.1 標記
有時為了註解說明方便起見,我們會需要在棋盤格或棋子上用一 個符號表示目前所說明的位置,一般我們將這類符號稱做「標記」。
例如圖 4-3 中的 a b c 三個字母即為標記的一種。
註解:
吳清源[17]:
黑 19 是搶先手的下法。
此棋如要忍耐,則在 a 長,白 b,黑 c,
白拿到先手。
圖 4-3、標記使用範例
由於不同的遊戲所需要的標記種類可能會不一樣,因此現在就讓 我們來看看如何透過 property 的設定來解決這樣的問題:
Property 屬性說明 屬性值
(以五子棋為例)
EDITER_MARK_SYMBOL 標記符號
(以|作間隔)
○|●|△|▲|□|■
EDITER_IMG_MARK 標記圖檔 marks.gif
EDITER_CUT_MARK 標記圖檔的標記個數 6
EDITER_MARK_MENU_TOTAL 功能表選單個數 3
EDITER_MARK_MENU_0 選單名稱 添加圓形標記
EDITER_MARK_MENU_1 選單名稱 添加三角形標記
EDITER_MARK_MENU_2 選單名稱 添加正方形標記
EDITER_MARK_BUTTON_0 工具列按鈕文字 ○
EDITER_MARK_BUTTON_1 工具列按鈕文字 △
EDITER_MARK_BUTTON_2 工具列按鈕文字 □
表 4-3 、標記相關 Property 設定項目
對應於標記圖檔中的順序,在 EDITER_MARK_SYMBOL 中為每一 個 標 記 設 定 一 個 代 表 符 號 , 用 來 在 棋 譜 列 表 中 表 示 標 記 。
EDITER_IMG_MARK 設定標記圖檔的路徑,同時,與棋子圖檔的設計
相同,需要透過 EDITER_CUT_MARK設定內含的標記個數。另外,由 於標記功能需要由功能表或工具列提供功能選單或按鈕方能使用,而 各 個 遊 戲 的 標 記 項 目 又 不 相 同 , 因 此 在 這 裡 使 用
EDITER_MARK_MENU_TOTAL 指 定 標 記 項 目 個 數 , 以 及 以
EDITER_MARK_MENU_x 和 EDITER_MARK_BUTTON_x(x 為從 0 開始的 數字),依序指定在功能選單中的文字與工具列按鈕上的文字。以上 例而言,呈現的結果如圖4-4:
圖 4-4、標記 Property 設定結果範例
當使用者按下其中一個功能表選單時,其相對應的工具列按鈕也 會呈現選取狀態,反之亦然,此時使用者在棋盤上可以點選欲新增標 記的位置,當使用者點選時,平台會告知遊戲目前是第幾個功能表選 單被點選,遊戲可以透過這個值來決定目前是添加哪一個標記。
4.2.1.2.2 下子順序
某些棋類遊戲如五子棋、圍棋等,需要在棋子上標明下子的順序
(又稱手順),如圖 4-5 中黑白兩子上的數字:
圖 4-5、手順使用範例
平台內部提供函式讓遊戲可以取得手順數字,但是手順數字的顯 示顏色往往隨著棋子的顏色不同而跟著改變,同時顯示的位置和大小 也會需要做調整,因此我們設計相關的 Property 如下:
Property 屬性說明 屬性值
(以五子棋為例)
EDITER_PIECE_PLY_COLOR 數字顏色 FFFFFF|000000
EDITER_PIECE_PLY_FONT_SIZE 數字大小 14
EDITER_PIECE_PLY_OFFSETX_0 10
EDITER_PIECE_PLY_OFFSETY_0
數 字 為 0~9 時的
顯示位置調整 17
EDITER_PIECE_PLY_OFFSETX_1 7
EDITER_PIECE_PLY_OFFSETY_1
數 字 為 10~99 時
的顯示位置調整 17
EDITER_PIECE_PLY_OFFSETX_2 4
EDITER_PIECE_PLY_OFFSETY_2
數 字 為 100~999 時的顯示位置調整 17 表 4-4 、手順相關 Property 設定項目
我們透過 EDITER_PIECE_PLY_COLOR 屬性來設定手順的數字顏
色,使用十六進位數字依序指定 00~FF 的紅、綠、藍色彩值。顏色的 順 序 對 應 於 棋 子 的 順 序 , 同 代 碼 的 棋 子 會 使 用 同 樣 的 顏 色 。
EDITER_PIECE_PLY_FONT_SIZE設定顯示的數字大小,單位為 pt,其他
屬性則用來調整數字顯示顯示的位置。
對於這類的繪圖,我們使用下列 Property 設定:
Property 屬性說明 屬性值
(以象棋為例)
EDITER_IMG_HIGH_LIGHT 提示圖案圖檔 highLight.gif
EDITER_CUT_HIGH_LIGHT 圖檔中的圖案個數 3
EDITER_IMG_INDEX_CURSOR 游標移動圖案索引值 0
EDITER_IMG_INDEX_CLICK 點選棋子圖案索引值 1
EDITER_IMG_INDEX_SRC 標示棋子來源位置
索引值
2
EDITER_IMG_INDEX_DES 標示棋子目的地位置
索引值 的圖檔都放置在 EDITER_IMG_HIGH_LIGHT 中,平台中亦提供函式 setHighLight(int x,int y,int index)來讓遊戲繪製指定的提示圖案。