大 家 來 看 看 鬥 獸 棋 棋 盤 的 樣 子: ![]()
我 們 來 歸 納 一 下 幾 個 重 點:
- 這 個 地 圖 是 3D 的
- 這 個 地 圖 有 水 有 草
電 腦 是 怎 麼 畫 (顯 示)出 來 的?
要 電 腦 畫 出 如 上的地 圖, 你 必 須 先 教 電 腦 怎 麼 看 座 標, 基 本 上 座 標 是 一 個 很 簡 單 的 空 間 概 念, 它 用 來 表 示 一 個 物 件 (object) 在 方 格 圖 上 的 位 置...
地 形 雖 然 是 三 度 空 間 的, 但 仍 可 以 座 標 來 指 定 物 件 所 在. 我 們 所 使 用 的 順 序 是 以 最 上 的 一 角 為 起 點, 座 標 從 (1,1) 開 始, 至 於 座 標 終 點 並 不 固 定, 依 地 圖 大 小 而 有 所 調 整.
以 下 是 9 x 7 大 小 (標 準 的 遊 戲 棋 盤 大 小) 的 座 標 參 考 圖: ![]()
在 9 x 7 的 布 局 下, 每 一 個 方 格 不 單 止 設 有 座 標 (我 們 用 row 及 col 的 排 法) 之 外, 也 有 地 形 的 屬 性. 因 為 地 形 在 鬥 獸 棋 遊 戲 中 有 舉 足 輕 重 的 影 響...(玩 過 的 朋 友 們 一 定 知 道)
這 套 棋 盤 實 際 上 並 不 存 在 於 程 式 中, 而 是 由 片 段 的 地 形 所 形 成 的, 你 如 果 搜 括 過 civilization II 的 CD, 你 也 會 發 現 怎 麼 有 一 些 在 遊 戲 中 看 到 的 圖 形 會 零 碎 擺 在 一堆 , 但 你 怎 麼 找 都 沒 有 完 整 的 地 圖...
我 們 製 作 圖 形 也 是 這 樣, 程 式 本 身 不 儲 存 圖 形 的 資 料. 地 圖 是 run-time 產 生 的, 是 由 一 大 堆 圖 樣 (pattern) 所 組 成 的.
為 什 麼 呢?
目 的 只 有 二 個:
- 方 便 我 們 製 作 地 圖: 大 致 上 遊 戲 的 地 圖 不 會 有 太 複 雜 的 地 形 變 化, 即 是 說 pattern 不 多, 我 們 就 可 以 用 這 些 pattern 來 拼 湊 成 變 化 多 端 的 地 圖...
- 方 便 我 們 擴 充(expand):在 未 來 的 版 本 的 地 圖 將 不 會 侷 限 於 9 X 7 的 方 格 內, 而 且 玩 家 們 將 可 依 他 們 的 要 求 透 過 網 路 修 改 鬥 獸 棋 棋 盤...
於 是 我 們 討 論 下 終 於 採 用 一 種 內 碼 地 圖 影 射 (mapping) 方 法. 影 射 即 是 說 不 是 直 接 去 表 達 一 樣 物 件 而 利 用 替 代 的 方 法 去 表 達. 在 資 訊 工 程 ��, 這 種 方 法 常 常 被 用 上. 在 鬥 獸 棋 中, 我 們 利 用 A 代 表 草 原, B 代 表 獸 穴, C 代 表 陷 阱, E 代 表 森 林 ...
| |
|
|
|
|
|
|
|
以 下 是 目 前 地 圖 中 地 形 所 用 的 內 碼 敘 述: land 1:AACBCAA 2:AAACAAA 3:AAAAAAA 4:AQOEQOA 5:ARNERNA 6:AKMEKMA 7:AAAAAAA 8:AAACAAA 9:AACBCAA
這 行 敘 述 很 簡 單 的 說 明 了 這 是 9 x 7 大 小 的 地 圖, 每 一 個 座 標 的 地 形 也 有 包 含 在 內. 在 這 行 敘 述 中, 一 開 始 你 先 看 到 land 這 個 英 文 字, 然 後 是 九 個 不 同 字 串, 分 別 是:
其 實 你 用 這 樣 的 方 法 順 序 排 列 下 來, 你 會 發 現 這 �� 似 乎 存 在 著 某 種 結 構, 那 就 是 每 一 列 的 字 母 數 目 都 一 樣, 都 是 7 個! 沒 錯! 這 個 地 圖 便 是 9 x 7 的 大 小.
1:AACBCAA 表 示 座 標 第 一 個 row 的 地 形 分 布, AACBCAA 其 實 就 是:
|
|
|
|
|
|
|
但 是 因 為 我 們 要 做 的 是 立 體 的 地 圖, 所 以 經 過 ABC 調 整 之 後 應 該 是 這 樣 子 的:

我 們 再 看 第 二 列 的 地 形 分 布 2:AAACAAA
|
|
|
|
|
|
|
在 螢 幕 面 前 就 是 這 樣 子 (第 一 列 及 第 二 列 的 樣 本):

顯 示 地 圖 只 是 一 項 微 不 足 道 的 工 作, 它 最 終 的 目 的 只 是 畫 出 背 景 罷 了.
然 後 任 由 雙 方 的 動 物 糟 塌.
同 樣 地, 為 了 方 便 修 改 容 易, 動 物 的 座 標 的 資 訊 也 用 plug-and-play 的 方 式 設 定.
我 們 以 存 檔 的 方 式 儲 存 雙 方 的 棋 子 座 標. 下 面 是 一 個 例 子:
player1 1(3,7) 2(2,7) 3(2,2) 4(3,3) 5(3,5) 6(1,1) 7(1,7) 8(3,1)
以 上 是 一 段 敘 述 第 一 個 玩 家 的 動 物 座 標, 其 格 式 如 下:
動物編號(row,column)
| 例 子 | 6(1,1) | 設 定 老 虎 的 位 置 於 (1,1) |
| 7(1,7) | 設 定 獅 子 的 位 置 於 (1,7) |
給 予 下 列 的 座 標 : player1 1(3,7) 2(2,7) 3(2,2) 4(3,3) 5(3,5) 6(1,1) 7(1,7) 8(3,1) player2 1(7,1) 2(8,2) 3(8,6) 4(7,5) 5(7,3) 6(9,7) 7(9,1) 8(7,9) 將 會 繪 出 如 下 的:
Written by Junior programmers