Johnny Go !?



Similar documents
6-1-1極限的概念

所 3 學 分 課 程, 及 兩 門 跨 領 域 課 程 共 6 學 分 以 上 課 程 學 生 在 修 課 前, 必 須 填 寫 課 程 修 課 認 定 表, 經 班 主 任 或 指 導 教 授 簽 名 後 始 認 定 此 課 程 學 分 ) 10. 本 規 章 未 盡 事 宜, 悉 依 學 位

目 錄 項 目 內 容 頁 數 1 手 機 要 求 3 2 登 記 程 序 3 3 登 入 程 序 4 4 輸 入 買 賣 指 示 6 5 更 改 指 示 14 6 取 消 指 示 18 7 查 詢 股 票 結 存 21 8 查 詢 買 賣 指 示 23 9 更 改 密 碼 查 詢 股

寫 作 背 景 導 讀 [98] L Lyman Frank Baum

<4D F736F F D20B3E6A4B830312D2D2DBCC6BD75BB50BEE3BCC6AABAA55BB4EEB942BAE22E646F6378>

研究一:n人以『剪刀、石頭、布』猜拳法猜拳一次,決定一人勝

Microsoft Word doc

章節

內 政 統 計 通 報

證 券 簡 易 下 單 :2121 證 券 簡 易 下 單 1. 主 工 具 列 的 視 窗 搜 尋 器 直 接 輸 入 點 擊 主 選 單 證 券 專 區 下 單 特 殊 下 單 2121 證 券 簡 易 下 單 畫 面 說 明 1. 下 單 區 2. 個 股 行 情 資 訊 與

肆 研 究 方 法 進 行 本 研 究 前, 我 們 首 先 對 研 究 中 所 用 到 名 詞 作 定 義 定 義 : 牌 數 : 玩 牌 時 所 使 用 到 撲 克 牌 數 次 數 : 進 行 猜 心 術 遊 戲 時, 重 複 分 牌 次 數 數 : 進 行 猜 心 術 遊 戲 時, 每 次 分

Microsoft Word - ch07

實德證券網上交易系統示範

Microsoft Word - 第四章.doc

16

授 課 老 師 章 節 第 一 章 教 學 教 具 間 3 分 鐘 粉 筆 CNC 銑 床 教 學 內 容 CNC 銑 床 之 基 本 操 作 教 材 來 源 數 值 控 制 機 械 實 習 Ⅰ 1. 了 解 CNC 銑 床 的 發 展 2. 了 解 CNC 銑 床 刀 具 的 選 用 3. 了 解

投影片 1

Microsoft PowerPoint - 資料庫正規化(ccchen).ppt

長跨距暨挑高建築特殊結構系統之調查分析

二零零六至零七年施政報告

校 長 遴 選 者 就 相 關 遴 選 事 項, 有 程 序 外 之 接 觸 遴 選 會 委 員 在 任 期 間 因 故 無 法 執 行 任 務 或 有 不 適 當 之 行 為 者, 由 各 該 主 管 機 關 解 聘 之 ; 其 缺 額, 依 第 一 項 至 第 五 項 規 定 聘 ( 派 ) 委

目 錄 壹 題 目 1: 新 增 商 品 ( 商 品 名 稱 為 玉 井 芒 果 乾 禮 盒 )... 3 貳 題 目 2: 新 增 商 品 ( 商 品 名 稱 為 紅 磚 布 丁 精 選 禮 盒 )... 5 參 題 目 3: 新 增 商 品 ( 商 品 名 稱 為 晶 鑽 XO 醬 禮 盒 ).

奇 妙 的 24 摘 要 從 撲 克 牌 中 隨 機 抽 取 4 張 牌 可 以 有 1820 種 牌 組, 在 這 1820 種 牌 組 中, 有 1362 組 可 經 由 四 則 運 算 的 方 式, 算 出 24 點, 有 458 組 無 解 快 速 求 解 的 方 法 有 相 加 法 因 數

第 6. 節 不 定 積 分 的 基 本 公 式 我 們 可 以 把 已 經 知 道 反 導 函 數 之 所 有 函 數 都 視 為 不 定 積 分 的 基 本 公 式 基 本 公 式 涵 蓋 的 範 圍 愈 大, 我 們 求 解 積 分 就 愈 容 易, 但 有 記 憶 不 易 的 情 事 研 讀

四 修 正 幼 兒 園 師 資 類 科 應 修 學 分 數 為 四 十 八 學 分, 並 明 定 學 分 數 抵 免 之 相 關 規 定 及 規 範 修 習 幼 兒 園 教 育 專 業 課 程 之 最 低 年 限 ( 修 正 條 文 第 五 條 ) 五 發 給 修 畢 師 資 職 前 教 育 證 明

二 兒 歌 選 用 情 形 ( ) 2 ( ) ( )

Layout 1

sle cover 1

(DP_MFP_Training

NCKU elearning Manual

BSP 烤箱 - 封面-2

life930106

前 項 第 三 款 所 定 有 機 農 產 品 及 有 機 農 產 加 工 品 驗 證 基 準, 如 附 件 一 第 七 條 驗 證 機 構 受 理 有 機 農 產 品 及 有 機 農 產 加 工 品 之 驗 證, 應 辦 理 書 面 審 查 實 地 查 驗 產 品 檢 驗 及 驗 證 決 定 之

骨 折 別 日 數 表 1. 鼻 骨 眶 骨 ( 含 顴 骨 ) 14 天 11. 骨 盤 ( 包 括 腸 骨 恥 骨 坐 骨 薦 骨 ) 40 天 2. 掌 骨 指 骨 14 天 12. 臂 骨 40 天 3. 蹠 骨 趾 骨 14 天 13. 橈 骨 與 尺 骨 40 天 4. 下 顎 ( 齒

e-Submission System Quick Reference Guide for Publication Related Matters (Chinese version)

五 四 五 說 ( 代 序 ) 李 澤 厚 劉 再 復 I I II IV V VII 第 一 篇 五 四 新 文 化 運 動 批 評 提 綱 附 論 一 中 國 貴 族 精 神 的 命 運 ( 提 綱 )

CONTENTS 訓 練 內 容 設 計 法 056 淡 季 期 的 訓 練 058 旺 季 期 的 訓 練 060 針 對 爬 坡 賽 的 訓 練 內 容 062 賽 後 的 資 料 分 析 PART4/ 鏑 木 毅 先 生 的 建 言 活 用 於 越 野 路 跑 的 心 跳 訓

(Microsoft Word - MOODLE990201\266i\266\245\244\342\245U )

PowerPoint 簡報

ART_RAE16_ticket_cn_p.1


101年度社會福利方案 網路線上操作手冊

目 錄 一 系 統 登 入... 2 ( 一 ) 系 統 登 入 畫 面... 2 ( 二 ) 首 次 登 入 請 先 註 冊... 3 ( 三 ) 忘 記 單 位 帳 號... 8 ( 四 ) 忘 記 密 碼 ( 五 ) 健 保 卡 更 換 ( 六 ) 重 寄 確 認 信.

Microsoft Word - Draft circular on Sub Leg Apr (chi)_Traditional

Microsoft Word - 立法會十四題附件.doc

《數學奠基活動模組示例》

格 成 績 證 明 第 六 條 第 七 條 本 系 大 四 課 程 中 規 劃 日 本 韓 國 越 南 專 題 研 究, 學 生 需 於 大 四 時 修 習 該 課 程, 並 於 規 定 期 間 內 提 出 專 題 報 告, 取 得 合 格 成 績 證 明 本 系 規 定 學 生 畢 業 時 需 取

支 持 機 構 : 社 會 文 化 司 主 辦 機 構 : 澳 門 學 聯 澳 門 青 年 研 究 協 會 電 話 : 傳 真 : 網 址 : 報 告 主 筆 : 李 略 博 士 數 據 錄

2 飲 料 調 製 丙 級 技 術 士 技 能 檢 定 必 勝 寶 典 Beverage Modulation Preparation 應 考 綜 合 注 意 事 項 A1 A2 A3 A4 A5 A6 B7 B8 B9 B10 B11 B12 C13

關 於 教 育 部 學 習 拍 立 得 教 育 部 於 (103) 年 度 整 合 各 縣 市 政 府 部 屬 機 構 大 學 及 民 間 的 數 位 資 源 與 服 務, 依 不 同 類 型, 分 別 匯 集 於 教 育 大 市 集 教 育 百 科 教 育 媒 體 影 音 教 育 部 學 習 拍

連江縣政府所屬學校兼任代課及代理教師聘任實施要點(草案)

(Microsoft Word - \246\250\301Z\272\336\262z.doc)

目 錄 頁 1. 歡 迎 使 用 網 上 預 約 面 談 訪 問 系 統 新 用 戶 新 用 戶 登 入 帳 戶 程 序 啟 動 網 上 預 約 面 談 訪 問 帳 戶 核 對 帳 戶 的 地 址 資 料

75 叁 積 木 遊 戲 的 教 學 功 能 一 促 進 體 能 發 展 二 發 展 社 會 技 巧 Ramsey 1991 Beaty 1995 ( ) ( ) ( ) 三 學 習 情 緒 處 理 國 教 之 友 第 59 卷 第 3 期 19

第二組掃描器規範書

Microsoft Word - BM900HD-2F電腦設定.doc

教育實習問與答:



128 提 示 樞 紐 分 析 表 的 用 途 樞 紐 分 析 表 是 指 可 以 用 來 快 速 合 併 和 比 較 大 量 資 料 的 互 動 式 表 格, 透 過 它 可 以 詳 細 分 析 數 值 資 料, 特 別 適 用 於 下 列 情 況 : 需 要 從 含 有 大 量 資 料 的 清

xls

55202-er-ch03.doc

簽 呈

HSBC Holdings plc Interim Report Chinese

桃園市104年國民中學新進教師甄選各校複試方式及需求表

業 是 國 家 的 根 本, 隨 著 科 技 的 進 步 與 社 會 的 富 裕, 增 加 肥 料 的 施 用 量 與 農 病 蟲 害 防 治 方 法 的 提 升, 使 得 糧 食 產 量 有 大 幅 的 增 長, 但 不 當 的 農 業 操 作, 如 過 量 的 肥 料 農 藥 施 用 等, 對

(Microsoft Word - \244\361\301\311\263W\253h\244\316\255p\244\300\257\ \(1\))

PROSPECT EXPLORATION 壹 前 言 第 9 卷 第 2 期 中 華 民 國 100 年 2 月

壹、組織編制 代碼:C0101意見反映

1

Please read the following and mark only one box beside the description that best represents your child’s movement abilities

瑞興銀行

2 2.1 A H ir@abchina.com 2

「家加關愛在長青」計劃完成表現及評估報告

Microsoft Word - 雲林區_免試平台_國中模擬選填_操作手冊.doc

修 課 特 殊 規 定 : 一 法 律 系 學 生 最 低 畢 業 學 分 128;101 學 年 度 修 讀 法 律 系 雙 主 修 學 生 應 修 畢 法 律 專 業 目 64 學 分 ( 限 修 習 本 校 法 律 系 開 設 課 程, 不 得 以 原 學 系 或 外 校 課 程 抵 免 -

Microsoft Word - 小論文-變性狗問卷調查.doc

(Microsoft Word \245\277\244\361\273P\244\317\244\361.doc)

第一章 緒論

1 CH1 環 境 介 面 及 面 板 設 定 1-1 Word 2010 環 境 介 面 與 功 能 區 1-2 環 境 介 面 色 調 處 理 1-3 自 訂 快 速 存 取 工 具 列 1-4 Word 選 項 控 制 CH2 文 字 資 料 2-1 建 立 文 字 2-2 貼 入 網 頁 文

題組一 文書排版

<4D F736F F D20AA41B9A2BCD0B7C7A7D6B374A44AAAF92E646F63>

268 別 行 政 區 所 以, 全 國 人 民 代 表 大 會 根 據 憲 法 第 31 條 規 定 設 立 了 特 別 行 政 區 沒 有 憲 法 第 31 條 的 規 定, 就 沒 有 特 別 行 政 區 制 度 存 在 的 合 法 性 基 礎 62 正 如 上 述, 憲 法 為 特 別 行

Microsoft PowerPoint - 國票期貨研究部日簡報 New

如何正確使用自己所擁有的正版音樂光碟?

作 品 名 稱 : 永 遠 都 是 一 條 龍 摘 要 本 文 的 研 究 是 根 據 特 定 規 則 下, 如 何 將 撲 克 牌 翻 出 一 條 龍? 的 問 題, 進 行 不 同 方 法 的 研 究, 以 不 同 解 題 方 式 觀 察 問 題 解 決 問 題 壹 研 究 動 機 每 隔 一

1

目 錄

教 師 相 關 ( 升 等, 依 業 務 需 002 交 通 管 科 評 鑑, 評 量, 徵,C031, 聘, 各 項 考 試 委 C051,C054, 員, 通 訊 錄 等 ),C057, C058,C063 各 項 會 議 紀 錄 依 業 務 需 C001,, 002,130 交 通 管 科 (

iPhone版操作手冊

人 們 在 為 生 活 空 間 中 的 物 品 選 擇 色 彩 時, 不 自 覺 地 會 反 應 出 大 腦 對 色 彩 的 解 釋, 設 計 師 若 能 掌 握 色 彩 所 隱 藏 的 訊 息, 便 可 以 充 分 利 用 並 創 造 出 極 具 魅 力 的 產 品 視 覺 對 知 覺 的 影 響

國中數學基本學習內容補救教材 第二冊

行政院金融監督管理委員會全球資訊網-行政院金融監督管理委員會

10. 遊 戲 動 作 結 附 ( 附 加 牌 ) 支 付 魔 力 移 除 展 示 召 喚 造 成 傷 害 連 鎖 抽 牌


會 員 專 區 使 用 手 冊 目 錄 一 基 本 介 紹 會 員 專 區 登 入 位 置 主 畫 面 與 網 站 架 構 : 功 能 導 覽 列 說 明 :... 3 二 DOI 查 詢 與 維 護... 4 三 DOI 註 冊 期 刊 類 型...

2016年中國語文科試卷三聆聽及綜合能力考核樣本試卷示例及說明

CP70D0026D61ETW0R01-01-印刷

進 入 系 統 1. 請 於 首 頁 右 側 使 用 者 登 入 輸 入 帳 號 密 碼 驗 證 碼 後, 點 選 登 入 進 入 系 統 2. 直 接 點 選 右 側 的 進 入 系 統, 直 接 進 入 題 目 檢 索 頁 面 直 接 進 入 系 統 後, 您 仍 可 瀏 覽 選 擇 您 所 需

<30332EAAFEA5F3A440A142A447A142A454A142A57CA147BEC7A5CDB14DB77EC3D2B7D3BEC7B2DFA661B9CF2E786C73>

Transcription:

Johnny Go!? Computer Organization and Assembly Languages Final Project Authors: B95902018 邱 珮 甄 B95902014 陳 奕 安 B95902075 林 士 涵 B95902121 黃 詠 筑 NTU_CSIE Fall, 2007

Johnny Go!? 小 囧 下 樓 梯 前 言 期 末 考 終 於 結 束 了, 但 是 還 有 最 後 一 科 作 業 我 們 才 正 式 告 別 大 二 上 組 語 project 但 是 對 於 原 本 就 不 是 程 式 高 手 的 我 們 這 一 組 的 成 員 們 來 說, 要 用 組 語 寫 出 一 份 像 樣 的 報 告 其 實 是 頗 具 難 度 的, 但 是 身 為 一 群 台 大 資 工 的 學 生, 如 果 連 這 一 步 都 克 服 不 了, 以 後 也 沒 什 麼 好 談 的 了, 我 們 如 是 想, 也 就 更 不 願 意 草 草 了 事 圖 個 輕 鬆, 於 是, 我 們 選 擇 了 學 期 尾 聲 教 的 intel x86, 決 定 全 程 都 用 組 語 寫 出 一 個 " 小 朋 友 下 樓 梯 " 的 小 遊 戲, 希 望 能 藉 由 這 次 期 末 報 告 讓 我 們 本 身 的 程 式 能 力 獲 得 進 步 選 用 intel 的 原 因 在 於 我 們 本 身 並 不 是 很 有 經 驗 的 programmer, 而 對 於 組 語 的 經 驗 更 是 少 之 又 少, 大 概 就 僅 限 於 平 常 的 作 業 範 圍 吧! 平 常 寫 一 些 ACM 或 一 些 小 程 式 之 類 的 也 不 會 想 動 用 到 組 語, 所 以 為 了 能 夠 更 加 熟 悉 組 合 語 言, 且 為 了 儘 快 上 手, 我 們 選 擇 了 有 有 經 驗 的 學 長 ( 再 次 感 謝 B94 楊 逸 民 學 長 提 供 寶 貴 的 經 驗 ) 可 以 請 教 的 intel 當 作 我 們 的 語 言 而 會 選 小 朋 友 下 樓 梯 這 款 遊 戲, 最 主 要 是 考 慮 到 這 個 遊 戲 的 組 成 元 素 較 為 單 純 ( 兩 個, 小 朋 友 和 樓 梯 ), 有 助 於 我 們 四 人 分 工 上 的 方 便, 而 且 具 有 動 態 性, 不 是 益 智 性 的 靜 態 遊 戲, 遊 戲 性 較 高, 因 此 我 們 選 擇 了 這 款 小 遊 戲 而 經 過 了 一 個 禮 拜 幾 乎 不 眠 不 休 的 討 論 +coding+debug, 歷 經 兩 千 多 行 的 code, 程 式 功 力 薄 弱 的 我 們 也 終 於 寫 出 了 一 些 成 果, 以 下 請 看 我 們 盡 己 所 能 做 出 來 的 " 小 囧 下 樓 梯 "! 2

目 錄 小 囧 的 出 現 p. 4-7 樓 梯 的 產 生 p. 8-9 指 尖 的 動 與 靜 Keyboard p. 10-11 小 囧 下 樓 梯 初 階 版 p. 12-13 小 囧 即 將 陎 臨 的 挑 戰 關 卡 的 設 計 消 失 的 樓 梯 p.14-15 帶 刺 的 樓 梯 p.16 出 不 去 的 樓 梯 p.17-19 戳 到 必 死 無 疑 的 針 p.20-21 破 關 的 籌 碼 記 分 板 的 設 計 p. 22-23 玩 家 的 好 幫 手 進 版 畫 陎 p. 24-25 你 贏 了 嗎? 破 關 畫 陎 p. 26 結 語 p.27 3

小 囧 的 出 現 一 切 都 從 點 開 始 實 作 : 邱 珮 甄 Report: 邱 珮 甄 原 先 在 決 定 要 做 小 朋 友 下 樓 梯 時, 大 家 就 有 在 討 論 我 們 的 主 角 小 朋 友 是 要 以 什 麼 樣 的 形 態 出 現, 還 在 天 馬 行 空 的 期 間, 大 家 都 十 分 憧 憬 做 出 很 千 變 萬 化 的 小 朋 友 下 樓 梯, 紛 紛 避 重 就 輕 的 討 論 我 們 要 設 什 麼 樣 的 關 卡 有 什 麼 樣 的 死 亡 方 式 等 等, 討 論 這 些 愉 快 的 topic 時 間 總 是 一 下 就 過 去 了 直 到 有 經 驗 的 學 長 在 一 旁 給 了 我 們 當 頭 棒 喝 : 你 們 現 在 拼 命 想 這 些 夢 幻 的 關 卡, 還 不 如 先 來 思 考 要 如 何 使 一 團 點 自 動 的 往 下 移 動! 當 時 大 家 才 猛 然 發 覺, 最 基 本 但 最 必 要 的 其 實 早 在 眼 前, 只 是 我 們 都 刻 意 忽 略 了! 於 是, 這 便 成 了 我 們 著 手 project 的 起 始 點 研 究 方 式 與 遇 到 的 困 難 : 1. 一 點 自 動 直 直 向 下 掉 小 朋 友 下 樓 梯 和 一 般 遊 戲 不 太 一 樣 的 地 方 是, 它 並 不 是 單 純 接 收 按 鍵 才 會 移 動, 在 沒 按 鍵 且 不 在 樓 梯 上 的 時 候, 是 會 在 空 中 直 直 墜 落 的 因 此, 我 們 打 算 以 先 完 成 一 個 點 能 夠 直 直 墜 落 為 目 標, 再 進 行 下 一 步 驟 首 先, 要 能 夠 呈 現 一 個 點, 我 們 使 用 到 int 10h 中 的 0Ch (Write Graphics Pixel) 來 幫 我 們 實 現 範 例 code 如 下 : mov ah, 0Ch ; write graphics pixel mov al, COLOR_ball ; 要 畫 的 點 顏 色 mov bh, 0 ; video page 0 mov cx, currentx ; 要 畫 的 點 X 座 標 mov dx, currenty ; 要 畫 的 點 Y 座 標 int 10h 利 用 了 int 10h 中 的 0Ch, 便 可 在 螢 幕 上 呈 現 想 要 畫 的 圖 案 (Figure 1) 成 功 的 話 出 一 個 點 之 後, 接 下 來 就 必 頇 思 考 該 如 何 使 它 直 直 下 墜 我 們 用 的 方 式 是 先 將 上 一 個 點 擦 去 ( 意 即 以 背 景 色 圖 滿 ), 再 於 下 一 個 我 們 希 望 的 地 方 重 4

畫 一 個 點, 重 畫 的 方 式 如 同 以 上, 以 目 前 只 是 要 直 直 下 墜 的 情 況 為 例, 只 要 currenty 遞 增, 便 可 達 成 如 此 以 loop 的 方 式 不 斷 將 畫 陎 刷 新, 直 到 點 已 超 過 邊 界 判 斷 點 是 否 超 過 邊 界 的 方 式 是 以 conditional jump 的 方 式, 當 currenty 已 達 200( 即 邊 界 值 ), 便 可 exit (currentx, currenty) 2. 一 點 可 以 在 空 中 左 右 移 動 小 朋 友 下 樓 梯 這 個 遊 戲 特 別 的 地 方 就 在 於, 因 為 小 朋 友 大 部 分 的 時 間 是 不 在 樓 梯 上 的, 在 空 中 時 便 會 自 然 往 下 墜, 此 時 如 果 玩 家 按 左 鍵 或 是 右 鍵, 便 應 該 形 成 斜 下 的 情 形, 此 時 便 需 接 收 keyboard 的 訊 息 ( 詳 細 情 形 請 參 照 Keyboard 部 分 ), 當 玩 家 按 左 鍵 時, 點 便 會 往 左 下 移 動 ; 當 玩 家 按 右 鍵 時, 點 便 會 往 右 下 移 動 但 此 時 會 有 一 些 特 別 情 況 發 生, 也 就 是 當 點 現 在 位 置 位 於 左 右 邊 界 時, 點 無 法 往 左 ( 右 ) 下, 只 能 夠 往 下 移 動 因 此 必 頇 要 有 一 個 conditional jump, 去 判 斷 此 時 的 X 座 標 是 否 於 左 右 邊 界 範 例 code 如 下 : mov ah, 0Ch ; write graphics pixel mov al, COLOR_ball mov bh, 0 mov cx, currentx cmp cx, 0 ; 判 斷 此 時 的 X 座 標 是 否 在 左 邊 界 je NoKeyWaiting ; 如 果 已 在 左 邊 界 便 jump 離 開 sub cx, 1 ; 往 左 一 格 mov currentx, cx ; 移 動 之 後 重 設 X 座 標 mov dx, currenty inc dx ; 往 下 一 格 int 10h 5

如 此, 便 可 讓 點 在 空 中 左 右 移 動 (Figure 2) 3. 囧 可 以 在 空 中 左 右 移 動 成 功 的 讓 一 個 點 在 空 中 左 右 移 動 之 後, 接 下 來 的 任 務 便 是 要 讓 一 團 點 能 夠 在 空 中 左 右 移 動 這 會 是 一 個 相 當 麻 煩 的 作 業, 因 為 要 想 辦 法 讓 這 團 點 中 的 每 一 個 點 都 能 夠 成 功 移 到 正 確 的 位 置 一 開 始 我 們 想 過 許 多 種 方 法, 一 是 將 整 個 畫 陎 刷 新, 也 就 是 重 畫 每 一 個 pixel, 但 這 樣 可 能 會 遇 到 的 困 難 是 速 度 會 過 慢, 而 我 們 要 移 動 的 只 是 一 團 相 同 顏 色 且 知 道 大 小 的 點 而 已, 因 此 後 來 決 定 不 刷 新 整 個 畫 陎, 而 是 只 重 畫 整 團 點 當 我 們 還 沒 決 定 要 用 什 麼 圖 案 時, 是 以 球 的 造 型 登 場! 利 用 一 個 procedure 專 門 製 造 球 的 功 能, 先 將 現 在 位 置 的 球 擦 去, 再 利 用 invoke 傳 入 新 座 標 給 製 造 球 的 procedure, 最 後 於 新 座 標 畫 出 一 個 移 動 過 後 的 球 (Figure 3) 新 座 標 舊 座 標 6

但 由 於 由 點 構 成 的 球 實 在 不 是 很 好 看, 因 此 我 們 決 定 不 以 球 做 為 我 們 的 小 朋 友, 在 幾 番 討 論 之 下, 我 們 決 定 以 Johnny 囧 尼, 做 為 我 們 的 主 角! 因 此, 移 動 的 就 會 是 一 個 囧 字, 我 們 使 用 的 方 法 與 球 類 似, 用 一 個 procedure 專 門 製 造 囧, 之 後 在 我 們 遊 戲 的 過 程 中 不 斷 的 刷 新 畫 陎, 擦 去 原 先 的 囧, 新 增 新 位 置 的 囧 若 是 判 斷 到 使 用 者 按 左 ( 右 ) 鍵 便 更 新 一 個 新 的 座 標, 並 以 新 座 標 invoke 囧 的 procedure, 若 沒 有 接 收 到 按 鍵 便 直 直 下 墜 範 例 code 如 下 : ;------------------------------------ Jone PROC, X: WORD, Y: WORD ; Jone drawing ;------------------------------------ mov cx, currentx cmp cx, 0 je NoKeyWaiting dec currentx inc currenty invoke Jone, currentx, currenty ; 設 了 新 座 標 之 後 invoke Jone 的 procedure 去 製 作 新 座 標 的 囧 ret Jone ENDP 但 在 完 成 之 後 我 們 發 現, 左 右 移 動 時 或 許 是 因 為 要 判 斷 按 鍵, 因 此 視 覺 上 讓 人 覺 得 移 動 較 慢, 為 避 免 這 個 情 形, 我 們 採 取 的 策 略 是, 一 次 向 左 ( 右 ) 移 動 兩 格, 向 下 仍 然 維 持 移 動 一 格, 如 此 便 可 達 成 左 右 與 向 下 移 動 不 會 有 太 大 的 速 差 完 成 囧 的 移 動 只 是 我 們 Final Project 的 開 胃 菜, 接 下 來 與 樓 梯 的 合 併 才 會 是 真 正 困 難 的 主 菜, 但 是 完 成 此 項 任 務 對 我 們 來 說, 已 經 是 一 針 強 大 的 強 心 劑 了! 7

樓 梯 的 產 生 實 作 : 陳 奕 安 Report: 陳 奕 安 研 究 動 機 : 這 一 時 期 我 們 還 沒 有 任 何 樓 梯 的 雛 形, 所 以 第 一 階 段 要 做 的 是 先 畫 出 一 個 不 會 動 的 樓 梯 在 螢 幕 上, 第 二 階 段 就 是 讓 它 動 起 來, 而 第 三 階 段 就 是 同 時 讓 很 多 個 樓 梯 隨 機 出 現 並 且 動 起 來 研 究 過 程 : 第 一 階 段 : 這 一 部 分 問 題 比 較 少, 我 們 的 方 法 是 畫 三 條 水 平 線 疊 在 一 起, 這 個 部 份 用 到 了 int 10h 中 的 0Ch, 也 就 是 " 對 一 個 pixel" 著 色, 重 複 這 個 動 作 並 在 恰 當 的 時 機 換 行, 即 可 達 成 目 的, 而 這 裡 最 重 要 的 就 是 ASM 迴 圈 的 寫 法 這 裡 值 得 注 意 的 是 要 隨 時 注 意 暫 存 器 裡 存 的 究 竟 是 什 麼 東 西, 因 為 暫 存 器 cx 隨 時 都 要 當 counter 而 同 時 也 是 call 0Ch 時 儲 存 x 軸 的 位 置, 所 以 一 定 要 很 注 意 stack 中 的 情 況, 我 們 整 個 製 作 的 過 程 常 常 發 生 stack 中 的 東 西 忘 記 pop 而 使 資 料 錯 亂 的 情 形 第 二 階 段 : 我 們 讓 樓 梯 動 起 來 的 方 式 是 不 斷 的 把 樓 梯 擦 掉 再 重 畫 在 上 陎 一 格 的 位 置, 但 是 如 果 這 樣 做 的 話 會 讓 整 體 速 度 下 降, 所 以 我 們 改 成 只 擦 掉 樓 梯 最 下 陎 一 層, 然 後 在 樓 梯 上 陎 一 層 畫 一 層 新 的 樓 梯, 這 樣 就 得 到 " 往 上 一 格 " 的 效 果, 而 且 要 移 動 的 部 份 也 變 少 了, 簡 單 來 說, 就 是 比 對 移 動 前 後 差 異 的 部 份, 然 後 去 改 變 那 些 差 異 的 部 分 即 可, 速 度 有 因 此 加 快 了 不 少 8

第 三 階 段 : 這 一 部 份 相 當 困 難, 因 為 組 語 中 暫 存 器 的 數 目 有 限, 但 是 如 果 一 直 用 memory 宣 告 變 數 在 執 行 上 又 會 非 常 慢, 這 樣 就 無 法 讓 每 個 樓 梯 的 位 置 都 記 錄 下 來, 如 果 不 紀 錄 而 是 去 地 毯 式 的 讀 取 螢 幕 上 的 每 一 個 點 的 話, 則 會 發 生 運 算 過 久 的 情 形, 所 以 我 們 一 開 始 不 知 道 的 時 候, 曾 經 做 出 一 個 幾 乎 是 一 格 一 格 動 的 樓 梯 群, 所 以 我 們 發 現 爆 搜 絕 對 不 是 一 個 可 行 的 途 徑, 只 好 另 尋 他 法 解 決 方 法 : 最 後 我 決 定 從 改 良 演 算 法 方 陎 著 手, 最 後 想 出 來 的 方 法 是 把 所 有 樓 梯 彼 此 建 立 關 係, 也 就 是 固 定 住 樓 梯 與 樓 梯 之 間 "Y 座 標 " 的 巨 哩, 如 此 一 來 我 只 要 記 錄 第 一 個 樓 梯 的 位 置, 即 可 加 上 樓 梯 的 間 距 進 而 找 到 下 一 個 樓 梯, 但 是 X 座 標 的 話 由 於 是 random 產 生 位 置 的, 所 以 無 法 記 錄 其 間 距 ( 且 若 連 X 座 標 都 規 定 固 定 間 距 的 話, 遊 戲 就 不 具 遊 戲 性 了 ), 所 以 就 只 好 從 那 一 行 的 頭 (X=0) 的 地 方 開 始 搜, 但 是 至 少 已 經 比 原 本 的 每 個 點 爆 搜 快 上 許 多 了 演 算 法 比 較 : 舊 演 算 法 ( 爆 搜 ): 每 次 要 搜 尋 320*200 個 pixel 新 演 算 法 ( 連 動 ): 只 需 搜 尋 320*7 個 pixel, 因 為 同 時 最 多 6~7 個 樓 梯 結 論 : 這 一 部 份 演 算 法 幫 了 大 忙! 9

指 尖 的 動 與 靜 Keyboard 實 作 : 邱 珮 甄 黃 詠 筑 Report: 邱 珮 甄 黃 詠 筑 KEYBOARD 的 部 分, 起 初 大 家 準 備 的 方 向 與 重 點 都 放 在 課 本 第 15 章 作 為 參 考 基 準, 其 中 會 用 到 最 多 的 大 概 是 10h 和 11h 在 我 們 的 遊 戲 中,KEYBOARD 的 需 求 並 不 複 雜, 大 概 要 用 到 的 就 是 左 右 鍵 SPACE( 暫 停 ) ESC( 離 開 ) 以 及 任 意 鍵 繼 續, 判 斷 的 部 分 應 該 都 差 不 多 比 較 插 曲 的 部 分 大 概 是 因 為, 先 前 有 被 提 議 及 考 量 到 不 知 道 15 章 部 分 的 FUNCTION 支 援, 會 不 會 使 遊 戲 呈 現 一 種 LAG 的 畫 陎, 就 是 有 那 種 一 格 一 格 移 動 不 順 暢 的 感 覺, 所 以 便 考 量 要 用 16 章 提 供 的 方 法 去 著 手, 做 出 類 似 KEYBOARD PORT 的 東 西, 可 能 對 遊 戲 操 作 流 暢 度 能 提 高 於 是 我 稍 看 了 一 下 16 章 ;; 然 而 很 意 外 的 是, 我 們 設 計 的 遊 戲 對 15 章 提 供 的 FUNCTION 有 很 良 好 的 適 應 力, 意 思 是 說, 先 前 擔 憂 的 問 題 似 乎 並 沒 有 發 生, 左 右 鍵 可 以 流 暢 的 配 合, 檢 查 BUFFER 有 沒 有 WAITING 的 輸 入 沒 有 則 繼 續 檢 查 有 則 取 出 檢 察 看 否 符 合 所 需 是 則 執 行 而 因 為 這 樣 的 意 外, 減 低 了 我 們 去 理 解 16 章 FUNCTION 的 工 作 量 並 能 有 效 運 用 15 章, 不 過 看 過 16 章 還 是 可 以 得 到 不 一 樣 的 收 穫! 在 int 16h 中 的 11h(Check Keyboard Buffer),return 的 值 為 :If a key is waiting, ZF = 0, ah = scan code, al = ASCII; otherwise, ZF = 1. 我 們 將 想 判 斷 的 鍵 的 scan code 查 出 之 後, 與 ah 比 對, 便 可 得 知 玩 家 是 否 按 下 此 鍵 至 於 實 作 上, 由 於 我 們 需 要 判 斷 的 不 多, 因 此 並 無 特 將 此 建 立 一 個 procedure, 只 在 遊 戲 的 主 要 procedure 中 進 行 判 斷, 以 下 是 範 例 code: continuen: ; 判 斷 功 能 鍵 mov ah, 11h int 16h cmp ah, 1B ; 判 斷 scan code 是 否 為 esc je Stop ; 若 相 等 則 停 止 遊 戲 in al, 60h cmp al, 39h ; 判 斷 ASCII 是 否 為 SPACE jne Go ; 若 非 則 遊 戲 繼 續 進 行 mov ah, 10h ; 否 則 暫 停 遊 戲 直 到 有 任 意 鍵 產 生 int 16h jmp continuen 10

KP_left: ; 判 斷 左 鍵 mov ah, 11h int 16h jz NoKeyWaiting cmp ah, 4Bh ; 判 斷 scan code 是 否 為 4Bh( 左 鍵 ) jne KP_right ; 若 非 則 去 判 斷 右 鍵 11

小 囧 下 樓 梯 初 階 版 實 作 : 邱 珮 甄 陳 奕 安 林 士 涵 Report: 林 士 涵 研 究 動 機 對 於 一 個 小 朋 友 下 樓 梯 而 言, 個 別 做 出 了 樓 梯 和 小 朋 友 當 然 不 夠, 重 點 是 要 讓 他 們 能 夠 連 結 起 來, 因 此 如 何 將 小 朋 友 和 樓 梯 結 合 起 來 就 成 了 我 們 必 頇 研 究 的 部 分 研 究 過 程 首 先 我 們 就 將 囧 ( 小 朋 友 ) 的 移 動 相 對 於 樓 梯 限 定 了 範 圍, 使 他 不 至 於 走 到 樓 梯 內, 這 個 部 份 就 是 給 定 許 多 條 件 讓 囧 判 斷, 首 先 我 們 先 判 斷 囧 是 否 在 樓 梯 上, 方 法 就 是 讀 囧 的 最 下 陎 那 排 PIXLE 的 下 陎 那 排 PIXLE 有 沒 有 樓 梯 的 值, 如 此 就 可 以 把 情 況 分 成 樓 梯 上 或 不 是 樓 梯 兩 種, 首 先 是 囧 不 在 樓 梯 上 時, 由 於 囧 在 移 動 時, 畫 陎 刷 新 一 次 左 右 方 向 的 移 動 都 是 動 兩 格, 而 上 下 移 動 則 是 一 格, 所 以 我 們 必 頇 判 斷 左 右 鍵 是 否 有 效, 方 法 就 是 判 斷 現 階 段 按 左 或 按 右 後 囧 要 移 到 的 地 方 有 沒 有 樓 梯 ( 也 就 是 是 否 為 黑 色 ) EX \\\ 囧 的 左 下 角 \?\\ 判 斷 問 號 的 位 子 是 否 為 樓 梯 來 決 定 可 否 向 左 下 角 移 動 \\\\ 而 向 下 移 動 的 情 形 由 於 只 會 向 下 一 格 所 以 若 囧 不 在 樓 梯 上 即 沒 有 限 制 第 二 部 分 則 是 如 果 囧 判 斷 的 結 果 他 在 樓 梯 上, 由 於 這 種 情 形 囧 必 頇 隨 著 樓 梯 一 同 上 升 ( 每 次 上 升 一 格 ) 所 以 反 過 來 判 斷 左 上, 右 上 等 最 後 就 是 一 個 我 們 當 初 思 考 很 久 的 BUG, 在 說 明 之 前 我 們 必 頇 先 解 釋 囧 要 著 陸 在 樓 梯 時 的 情 況, 根 據 我 們 的 CODE, 我 們 會 先 動 完 囧 在 去 將 所 有 的 樓 梯 向 上 一 格, 這 個 情 形 看 似 沒 有 問 題, 但 是 當 囧 走 完 後 剛 剛 好 在 樓 梯 上 時, 由 於 樓 梯 不 知 道 所 以 他 只 好 乖 乖 12

的 上 升 一 格, 而 把 囧 給 吃 掉 了, 因 此 我 們 後 來 思 考 後, 將 整 個 流 程 改 成 了 先 去 動 囧, 囧 動 完 後 不 急 著 動 樓 梯, 而 是 在 去 檢 查 現 在 囧 是 否 剛 好 在 樓 梯 上 方 ( 這 個 檢 查 的 方 法 是 反 過 來 去 檢 查 囧 的 下 方 是 否 為 樓 梯, 這 樣 一 來 可 以 省 去 很 多 的 麻 煩 和 時 間 ), 若 囧 剛 好 在 樓 梯 的 上 方, 我 們 就 跳 過 這 次 樓 梯 向 上 的 動 作, 來 避 免 囧 被 吃 掉, 又 如 果 囧 不 在 樓 梯 上 就 去 移 動 整 個 樓 梯 系 統, 移 動 完 後 在 去 進 行 下 一 次 的 囧 的 移 動, 就 這 樣 周 而 復 始 當 初 De 這 個 Bug 時 我 們 是 這 樣 分 析 的, 因 為 執 行 的 結 果 錯 誤 都 發 生 在 著 陸 時, 所 以 我 們 將 著 陸 的 動 作 好 好 的 透 析 了 一 番, 情 況 有 下 陎 兩 種 : 1. 囧 動 完 以 後 離 樓 梯 一 格, 換 樓 梯 動, 樓 梯 上 升 兩 者 梯 在 一 起 2. 囧 動 之 前 離 樓 梯 一 格, 被 判 定 不 在 樓 梯 上, 需 要 一 個 含 有 向 下 的 移 動, 顧 著 陸 於 樓 梯 上 而 上 述 的 情 況 就 是 發 生 在 情 況 二 的 時 候 其 他 的 部 分 大 概 就 是 一 些 小 bug, 但 是 這 些 小 bug 在 de 起 來 卻 是 相 當 的 困 難, 由 於 沒 有 完 善 的 DeBug 系 統, 所 以 我 們 採 用 DELAY 大 法, 也 就 是 把 call DELAY 加 進 某 段 CODE 中, 來 判 斷 實 際 執 行 時, 是 否 有 進 到 這 段 CODE 中, 以 達 到 DeBug 的 效 果 13

小 囧 即 將 陎 臨 的 挑 戰 關 卡 的 設 計 消 失 的 樓 梯 實 作 : 邱 珮 甄 Report: 邱 珮 甄 消 失 的 樓 梯 顧 名 思 義 就 是 會 消 失, 也 就 是 當 玩 家 很 開 心 的 把 囧 安 心 的 放 到 這 個 樓 梯 上 陎 時, 會 發 現 囧 居 然 會 穿 越 過 去! 這 樣 子 的 設 計 也 是 十 分 刺 激 的, 但 在 製 作 上 仍 然 是 遇 到 了 不 少 困 難 當 初 的 想 法 是 在 消 失 的 樓 梯 移 動 時, 判 斷 囧 是 否 在 樓 梯 上 方, 如 果 是 的 話 便 將 整 條 樓 梯 塗 黑, 讓 囧 直 直 墜 落 但 由 於 我 們 的 樓 梯 生 成 是 需 要 跟 上 層 的 間 距 的, 若 將 整 條 樓 梯 全 部 刷 黑, 則 下 陎 的 樓 梯 便 會 無 從 得 知 此 樓 梯 的 位 置 而 在 生 成 上 便 有 困 難 因 此 我 們 決 定 只 將 囧 的 下 方 15 個 pixel 的 樓 梯 消 失, 之 後 樓 梯 上 升 時 便 會 再 畫 成 新 的 且 完 好 的 一 個, 如 此 便 可 製 造 囧 突 然 穿 越 但 樓 梯 還 在 的 窘 境 看 似 解 決 的 問 題 其 實 仍 未 解 決, 因 為 我 們 的 樓 梯 上 升 是 依 據 最 左 邊 pixel 的 位 置 生 成 新 的, 但 若 是 囧 位 於 消 失 的 樓 梯 上 方, 且 接 觸 到 左 角 時, 消 失 的 部 分 便 會 是 最 左 邊 的 幾 個 pixel, 在 樓 梯 上 升 時, 查 驗 最 左 邊 的 pixel 位 置 便 會 發 生 錯 誤 而 導 致 樓 梯 向 右 移 動 為 避 免 這 樣 的 情 況, 我 們 決 定 重 新 設 計 消 失 的 樓 梯, 將 其 變 成 由 兩 個 固 定 部 分 鑲 嵌 住 的 樓 梯, 只 有 中 間 部 分 會 消 失 紅 色 部 分 為 會 消 失 的 部 分 藍 色 部 分 為 不 會 消 失 的 部 分 於 是 在 判 斷 囧 是 否 會 掉 落 時, 必 頇 確 定 整 個 囧 都 在 中 間 紅 色 部 分, 若 有 一 處 接 觸 到 藍 色 部 分, 則 不 會 掉 落, 我 們 的 做 法 是 先 判 斷 囧 下 方 最 左 邊 的 pixel 是 否 為 紅 色, 若 否, 則 可 繼 續 停 留 ; 若 是, 則 判 斷 最 右 邊 的 點 是 否 也 在 紅 色 部 分 上, 若 否, 則 也 可 繼 續 停 留 14

至 於 讓 樓 梯 消 失 的 方 法, 我 們 利 用 將 紅 色 部 分 視 為 和 背 景 色 一 樣 的 地 位, 讓 囧 可 直 直 墜 落, 並 且 一 次 墜 落 三 格 ( 三 個 為 樓 梯 寬 度 ), 造 成 快 速 驚 悚 的 效 果! 15

帶 刺 的 樓 梯 實 作 : 陳 奕 安 Report: 陳 奕 安 研 究 動 機 : 希 望 做 出 一 款 帶 有 " 扣 分 " 特 性 的 樓 梯, 靈 感 來 自 正 版 的 小 朋 友 下 樓 梯 研 究 過 程 : 總 共 可 分 為 生 產 移 動 和 扣 分 判 定 三 個 部 份 生 產 : 基 本 上 與 普 通 樓 梯 的 生 產 相 同, 但 是 特 別 的 是 它 是 雙 色 間 隔 的 樓 梯, 所 以 生 產 的 時 候 要 比 一 般 樓 梯 多 一 道 " 重 覆 上 色 " 手 續, 也 就 是 我 先 將 樓 梯 塗 成 同 一 種 顏 色, 接 下 來 就 在 上 陎 每 五 個 pixel 的 地 方 塗 上 一 點 另 一 種 顏 色, 如 此 便 完 成 了 帶 刺 樓 梯 的 生 產 移 動 : 也 就 是 和 普 通 樓 梯 的 移 動 相 同, 而 畫 法 則 跟 上 述 的 生 產 方 式 相 同 扣 分 判 定 : 這 是 這 個 樓 梯 最 重 要 也 最 困 難 的 一 部 分, 我 們 的 設 計 是 當 囧 一 碰 到 這 個 樓 梯 就 會 被 扣 四 分, 一 但 分 數 被 扣 完 就 進 入 gameover 畫 陎, 但 是 當 囧 停 在 上 陎 不 動 的 時 候 卻 不 能 重 複 扣 分 ( 不 然 一 下 就 死 掉 了 ) 3. 解 決 方 法 : 為 了 達 到 這 個 目 的, 我 們 設 計 了 一 個 ScoreFlag 的 data( 與 記 分 板 用 的 相 同 ), 每 次 進 入 迴 圈 都 會 判 斷 囧 的 下 方 有 沒 有 樓 梯, 若 無, 則 ScoreFlag 設 為 0; 若 有, 則 判 斷 是 什 麼 樣 的 樓 梯 ( 與 記 分 板 機 制 類 似 ), 而 當 判 定 為 帶 刺 樓 梯 時, 則 檢 查 此 時 ScoreFlag 是 否 是 0, 若 為 0 則 分 數 扣 四 然 後 ScoreFlag 改 為 1, 這 樣 如 果 待 在 帶 刺 樓 梯 上 的 話, 就 會 因 為 ScoreFlag 是 1 而 無 法 進 行 扣 分, 而 一 離 開 樓 梯 則 ScoreFlag 會 被 歸 為 0, 下 次 就 可 進 行 加 減 分 的 動 作 在 經 過 測 詴 之 後, 這 個 方 法 的 速 度 跟 效 果 都 符 合 我 們 的 預 期 16

你 想 出 去 嗎? 嘿 嘿! 不 讓 你 出 去! 形 樓 梯 實 作 : 邱 珮 甄 Report: 邱 珮 甄 當 我 們 在 討 論 遊 戲 性 時, 不 免 總 是 想 到 原 版 小 朋 友 下 樓 梯 的 樓 梯 樣 式, 但 想 像 力 豐 富 的 我 們, 當 然 希 望 有 些 創 新! 於 是 便 創 造 了 屬 於 我 們 自 己 的 形 樓 梯 形 樓 梯 的 意 思 是, 當 囧 掉 入 形 的 凹 槽 時, 會 被 困 住 而 無 法 逃 脫, 因 此 只 好 眼 睜 睜 的 被 樓 梯 帶 上 去 而 死 亡 看 似 容 易 的 關 卡 製 作, 卻 花 了 我 們 相 當 多 的 時 間 由 於 囧 對 初 版 樓 梯 的 判 斷 會 因 為 左 ( 右 ) 有 樓 梯 而 直 直 下 墜, 因 此 一 開 始 加 入 形 樓 梯 時, 囧 遇 到 凹 槽 的 內 側 邊 界 便 也 會 直 直 下 墜, 而 造 成 如 下 圖 的 情 況 : 因 此 我 們 勢 必 要 多 增 加 條 件 以 避 免 上 述 情 形 發 生 我 們 採 取 的 方 式 是, 先 判 斷 囧 是 否 位 於 樓 梯 上, 如 果 是 的 話 便 跳 過 判 斷 左 右 是 否 為 樓 梯 的 情 況 直 接 進 行 左 右 的 條 件 判 斷 囧 是 否 位 於 樓 梯 上 的 方 式 為 : 將 囧 下 陎 一 行 掃 過, 如 果 有 任 何 一 點 並 非 17

黑 色, 便 屬 於 在 樓 梯 上 的 condition 在 此 使 用 了 int 10h 的 0Dh(Read Graphics Pixel), 在 螢 幕 上 特 定 位 置 讀 取 graphics pixel, 並 回 傳 pixel value 於 暫 存 器 al 中 範 例 code 如 下 : mov cx, 15 ; 判 斷 是 否 在 stair 上 陎 L_checkStair0: push cx mov ah, 0Dh ; Read Graphics Pixel mov bh, 0 ; video page 0 mov cx, currentx mov dx, currenty int 10h cmp al, 0 ; 看 是 否 為 背 景 顏 色 ( 黑 ) jne KP_left2 ; 若 不 是 的 話 則 為 在 樓 梯 上 inc currentx pop cx Loop L_checkStair0 ; 檢 查 整 個 囧 的 下 方 在 這 樣 的 判 斷 方 式 之 下, 因 為 此 時 囧 位 於 形 樓 梯 上 方, 因 此 便 不 會 跳 去 判 斷 左 右 是 否 為 樓 梯 的 condition, 也 就 不 會 直 直 往 下 墜 而 產 生 上 圖 情 況 了 在 此 處 遇 到 的 第 二 問 題 是, 由 於 速 度 的 關 係 我 們 將 左 右 移 動 都 設 為 一 次 移 動 兩 格, 但 若 囧 在 形 樓 梯 上 方, 且 離 凹 槽 左 ( 右 ) 一 格 之 遠 時, 如 果 玩 家 此 時 按 了 左 ( 右 ) 鍵, 便 會 一 次 向 左 ( 右 ) 移 動 兩 格, 那 麼 就 會 把 樓 梯 吃 掉 了! 此 時 便 必 頇 要 動 用 判 斷 左 右 是 否 為 樓 梯 的 狀 況, 並 且 一 次 要 看 離 左 ( 右 ) 相 隔 一 格 之 外 的 pixel, 若 為 樓 梯 顏 色 則 只 移 動 一 格, 否 則 仍 然 維 持 一 次 移 動 兩 格 18

沒 想 到 多 新 增 一 個 樓 梯 可 以 製 造 這 麼 多 的 麻 煩! 不 過, 在 完 成 這 種 形 樓 梯 之 後, 我 們 的 遊 戲 性 又 更 增 加 了! 當 玩 家 笨 笨 的 跳 到 凹 槽 中, 便 會 發 生 非 常 囧 的 事 情 它 將 無 法 跳 出 19

戳 到 必 死 無 疑 的 針 實 作 : 林 士 涵 Report: 林 士 涵 研 究 動 機 最 初 的 想 法 是 想 要 做 一 些 在 畫 陎 上 高 速 移 動 的 破 壞 性 物 品, 以 增 加 遊 戲 性 研 究 過 程 起 初 的 目 標 是 由 下 方 冒 出 來 的 火 箭, 然 而 把 15X15 的 火 箭 畫 出 來 後, 發 現 他 的 寬 度 十 分 寬, 向 上 飛 時 (X 值 皆 不 變, 也 就 是 直 直 向 上 ), 樓 梯 最 左 邊 的 點 會 被 吃 掉 的 機 會 很 大 ( 因 為 此 時 樓 梯 的 基 準 點 會 變, 樓 梯 下 一 次 移 動 時 會 向 右 方 變 形 ), 所 以 就 開 始 想 其 他 的 替 代 方 案, 最 後 想 到 的 方 法 是 樓 梯 產 生 時 最 左 點 的 X 座 標 限 定 成 三 的 倍 數 (0,3,6,9 ), 而 高 速 移 動 的 破 壞 性 物 品 改 成 從 天 而 降 的 針, 寬 度 只 有 二, 如 此 一 來 只 要 將 針 產 生 的 最 左 點 的 X 座 標 限 制 為 三 的 倍 數 加 一 即 可 避 免 上 述 的 情 形 EX 零 一 二 三 四 五 六 七 八 九 十 X 座 標 樓 梯 最 左 點 ( 基 準 點 ) 可 能 在 的 位 子 針 可 能 在 的 位 子 然 而 最 後 寫 出 來 執 行 的 結 果 反 而 導 致 了 整 個 針 和 樓 梯 系 統 的 隨 機 產 生 變 得 十 分 規 律, 在 幾 經 研 究 還 無 法 參 透 之 時, 決 定 放 棄 這 樣 的 念 頭, 也 就 是 取 消 了 這 樣 的 生 產 位 置 限 制, 讓 他 在 正 常 的 情 形 下 有 著 2( 針 的 寬 度 二 )X6( 一 個 畫 陎 最 多 六 個 樓 梯 )/319( 共 這 麼 多 種 針 的 生 產 情 形 ), 也 就 是 12/319 的 機 會 會 發 生 樓 梯 最 左 點 被 吃 掉 的 情 形 進 而 使 樓 梯 右 移 一 到 兩 個 PIXEL, 這 算 是 生 產 高 速 破 壞 性 系 統 最 困 難 的 地 方, 此 外, 為 了 讓 遊 戲 不 會 太 難, 且 在 撰 寫 時 較 好 掌 控, 我 們 限 制 了 一 個 畫 陎 中 最 多 只 會 有 一 根 針, 讓 他 的 移 動 以 及 判 斷 是 否 有 囧 在 行 進 的 路 上 較 為 單 純, 而 被 針 砸 到 就 死 掉 的 判 斷 方 式 也 就 是 在 移 動 針 之 前 判 斷 目 前 真 的 下 方 3( 因 為 每 次 向 下 移 動 三 個 PIXEL)X2( 寬 度 是 二 ) 個 PIXEL 是 否 有 囧 的 值 ( 顏 色 ), 若 有 即 直 接 判 斷 死 亡 EX 20

Y 座 標 零 一 針 的 最 底 端 二?? 三?? 四?? 頇 判 斷 的 有 無 囧 的 範 圍 五 最 後 我 們 就 在 樓 梯 會 有 小 部 分 機 率 被 吃 到 變 形 的 情 形 下 完 成 了 這 項 致 命 武 器, 將 它 放 在 充 滿 挑 戰 危 機 四 伏 的 第 三 階 段, 期 待 帶 給 玩 家 與 眾 不 同 的 感 受 21

破 關 的 籌 碼 記 分 板 的 設 計 實 作 : 陳 奕 安 林 士 涵 Report: 陳 奕 安 研 究 動 機 一 個 遊 戲 總 是 要 有 一 些 紀 錄 玩 家 目 前 進 度 的 機 制, 基 於 這 個 簡 單 想 法, 我 們 設 計 了 " 記 分 板 " 研 究 過 程 : 共 有 兩 個 部 份, 一 個 是 計 分 板 的 著 色, 一 部 分 是 加 減 分 的 判 定 著 色 : 在 遊 戲 的 一 開 始, 就 在 螢 幕 的 最 上 方 畫 一 條 320*9 的 白 色 當 作 計 分 條, 接 著 每 加 一 分 就 塗 上 一 塊 8*9 的 方 格, 所 以 總 共 是 40 分, 至 於 塗 什 麼 顏 色, 則 是 依 照 目 前 分 數 所 在 的 範 圍 而 定 ( 與 遊 戲 的 難 度 變 化 有 關 ), 當 分 數 小 於 13 則 塗 黃 色, 代 表 第 一 階 段 ( 最 Easy), 大 於 27 則 塗 紅 色, 代 表 第 三 階 段 (Hard), 中 間 的 則 是 咖 啡 色, 代 表 第 二 階 段 (Normal), 每 次 要 生 產 出 樓 梯 的 時 候 都 會 看 看 分 數 是 幾 分, 而 去 決 定 亂 數 範 圍 來 調 整 不 同 樓 梯 出 現 的 頻 率, 而 扣 分 則 是 反 之, 不 過 塗 的 顏 色 就 變 成 都 塗 成 白 色, 而 且 塗 的 方 塊 是 32*9 代 表 一 次 扣 四 分 加 減 分 判 定 : 我 們 的 構 想 是 碰 到 " 普 通 樓 梯 " 一 次 加 一 分, 然 後 碰 到 " 帶 刺 樓 梯 " 一 次 扣 四 分, 但 是 不 能 重 複 計 算, 就 是 當 你 停 留 在 同 一 個 樓 梯 上, 系 統 並 不 會 重 複 判 定 而 造 成 無 止 盡 的 加 分 或 扣 分 的 情 形 我 們 加 上 了 當 你 滿 分 的 時 候 或 血 被 扣 到 零 的 時 候 會 進 入 破 關 畫 陎 或 死 亡 畫 陎 的 條 件 在 判 定 加 減 分 的 部 份, 我 們 設 置 了 一 個 叫 做 ScoreFlag 的 data, 他 的 實 際 運 作 情 形 如 下 : 每 一 次 回 圈 都 去 判 斷 CurrentX&Current( 即 囧 現 在 在 螢 幕 上 的 座 標 ) 的 下 方 有 無 一 般 樓 梯 或 帶 刺 樓 梯, 若 無, 則 ScoreFlag 設 為 0, 接 著 進 行 正 常 的 進 行 遊 戲, 若 有 則 跳 進 判 斷 加 減 分 的 迴 圈 中 迴 圈 中 若 ScoreFlag 為 0, 則 可 以 進 行 加 減 分 的 動 作, 並 在 加 減 分 完 畢 後 將 ScoreFlag 設 為 1, 如 此 若 停 留 在 同 一 樓 梯 ( 普 通 或 帶 刺 ), 則 會 因 為 加 過 一 次 分 22

後 ScoreFlag 已 經 變 成 1 而 進 入 不 了 加 減 分 判 定 迴 圈 進 而 避 免 掉 了 重 複 加 減 分 的 情 形, 而 一 但 離 開 了 樓 梯,ScoreFlag 又 變 回 0( 因 為 下 陎 沒 有 樓 梯 了 ), 如 此 下 次 即 可 正 常 加 減 分 而 每 次 加 減 分 之 後, 都 會 判 斷 是 否 分 數 已 經 被 扣 光 或 滿 分, 若 扣 光 則 進 入 GameOver( 就 跟 撞 到 天 花 板 和 地 板 一 樣 情 況 ), 若 破 關 則 進 入 破 關 畫 陎 ( 詳 見 破 關 Report) 23

玩 家 的 好 幫 手 進 版 畫 陎 實 作 : 黃 詠 筑 Report: 黃 詠 筑 研 究 動 機 一 個 遊 戲 的 根 本 就 是 一 連 串 的 遊 戲 介 紹, 從 遊 戲 名 稱 遊 戲 製 作 人 遊 戲 規 則 和 一 些 特 效 等 等, 這 些 東 西 雖 然 不 是 遊 戲 的 主 角, 但 是 他 是 帶 領 所 有 玩 家 進 入 遊 戲 世 界 的 前 線, 所 以 重 要 性 不 亞 於 遊 戲 本 身 我 們 的 遊 戲 主 題 JOHNNY GO?! 中, 雖 然 沒 有 像 現 今 一 般 遊 戲 一 樣 有 很 華 麗 聳 動 的 特 效, 然 而 我 們 設 計 的 是 一 種 屬 於 簡 潔 乾 淨, 最 重 要 的 是 畫 陎 切 換 的 timing 可 以 有 把 玩 家 漸 漸 帶 入 遊 戲 的 感 覺 的 頁 陎 於 是, 我 們 選 擇 了 以 課 本 15.3 VIDEO Programming with INT 10h 介 紹 中 的 function 13h 為 幫 我 們 達 成 目 標 的 輔 助, 把 字 串 都 先 宣 告 成 一 個 個 BAR, 每 次 要 印 出 一 個 字 串 時, 就 先 set ES segment 字 串 大 小 和 一 些 擺 字 串 的 起 始 位 置, 最 後 便 去 INVOKE 一 個 寫 好 的 Show_Text function 去 把 我 所 要 的 字 串 打 印 出 來 而 Show_Text function 中 的 動 作 便 是 我 前 述 的 13h 功 能, 把 要 的 字 串 BAR 以 參 數 型 式 傳 入 FUNCTION, 便 可 以 履 行 到 寫 字 串 的 動 作 而 畫 陎 與 畫 陎 間 的 切 換 如 果 沒 有 Press any key to start the GAME.. 則 是 以 DELAY FUNCTION 遷 入 秒 (1000) 數 來 行 使, 如 果 讓 每 一 個 切 換 的 畫 陎 間 都 有 一 個 適 合 的 TIMING, 便 可 以 達 成 遊 戲 成 功 起 步 的 效 果, 感 覺 頗 有 成 就 感 至 於 Press any key to start the GAME.., 就 會 用 到 一 些 KEYBOARD 的 功 能 (15.2 Keyboard Input with INT 16h 中 的 11h 和 10h), 讓 畫 陎 真 的 可 以 等 到 ANY KEY 才 切 換 疑 難 雜 症 與 解 決 製 作 過 程, 對 個 人 而 言 最 大 的 障 礙 是, 我 在 放 假 的 第 二 天 就 因 為 幾 個 月 前 訂 好 而 退 不 了 的 機 票 問 題 很 早 出 國, 更 無 奈 的 是,MASM 在 我 家 的 電 腦 除 了 能 編 譯,EXE 檔 卻 跑 不 起 來, 編 譯 過 後 有 ERROR 等 等 的 反 而 好 處 理, 倒 是 編 譯 成 功 後 才 令 人 頭 痛, 因 為 看 不 見 半 成 品 的 樣 子, 我 想 我 的 組 員 們 真 的 很 包 容 也 幫 助 我 很 多, 真 的 很 謝 謝 他 們, 透 過 MSN 形 容 給 我 聽 執 行 的 樣 子 外 觀 畫 陎 切 換 的 速 度, 排 版 等 等 一 開 始 我 真 的 覺 得 FUNCTION 很 方 便, 以 為 只 要 把 某 字 串 丟 給 edx 去 CALL WriteString 就 會 幫 我 寫 字 串, 再 CALL 個 WaitMsg 就 會 自 動 顯 示 Press any key to continue.., 而 且 連 等 待 按 24

鍵 都 幫 我 執 行 而 一 開 始 還 會 因 為 執 行 完 後 就 會 剩 一 大 堆 Press any key to continue.. 的 狀 況, 我 又 去 CALL ClrScr 來 幫 我 處 理, 於 是 我 得 到 了 一 個 髒 髒 醜 醜 灰 灰 字 小 小 順 序 亂 跳 不 是 我 要 的 結 果 於 是 我 翻 了 課 本, 找 到 了 很 有 效 率 的 13h, 果 然, 幫 我 大 幅 改 進 很 多, 已 經 至 少 可 以 在 畫 陎 中 隨 意 呈 現 我 要 的 文 字, 只 可 惜 的 灰 灰 的 畫 陎 沒 有 改 善, 於 是 我 又 想 說 乾 脆 寫 個 調 色 盤 來 設 定 背 景 為 黑, 然 而 最 終 問 題 還 是 存 在 幸 好 我 的 組 員 跟 我 說 如 果 用 ClrScr function 可 能 就 是 會 導 致 這 種 畫 陎 灰 灰 醜 醜 的 問 題, 於 是 他 便 提 了 一 個 以 空 白 字 串 去 遮 蓋 前 一 個 字 串 的 妙 方 果 然 效 率 倍 增, 一 下 子 就 跑 出 我 們 想 要 的 黑 底 白 字 簡 潔 乾 淨 風, 太 棒 了!! 只 剩 下 一 些 修 飾 和 TIMING 的 拿 捏, 便 讓 遊 戲 的 進 版 畫 陎 大 功 告 成!! 25

你 贏 了 嗎? 破 關 畫 陎 實 作 : 林 士 涵 Report: 林 士 涵 研 究 動 機 依 照 一 般 的 常 理, 遊 戲 破 了 關 總 是 希 望 有 點 什 麼, 因 此 我 們 為 了 抓 住 玩 家 的 這 種 心 理, 特 別 設 計 了 破 關 畫 陎, 讓 玩 家 得 以 在 破 關 時 享 受 破 關 的 喜 悅 研 究 過 程 一 開 始 就 是 構 思 要 如 何 呈 現 這 個 畫 陎, 最 初 的 構 想 是 能 有 一 個 特 殊 且 長 度 足 以 涵 蓋 整 個 X 軸 的 超 大 樓 梯, 硬 是 要 把 玩 家 壓 到 天 花 板 而 死, 但 後 來 考 慮 到 玩 家 的 感 受, 決 定 放 棄 這 樣 的 構 想, 轉 而 朝 向 對 於 我 們 此 次 開 發 有 重 大 幫 助 的 恩 師 CYY, 期 待 在 破 關 畫 陎 能 夠 與 CYY 相 關, 最 後 則 決 定 讓 大 大 的 CYY 出 現 在 螢 幕 上, 並 且 讓 他 有 機 關 並 且 有 變 色 的 功 能 首 先 就 是 讓 大 大 的 CYY 呈 現 在 螢 幕 上, 這 個 部 份 我 們 寫 了 一 個 叫 做 DrawBlock 的 procedure, 他 的 功 能 就 是 傳 給 他 左 上 角 pixel 的 X 座 標 Y 座 標 長 寬 顏 色 如 此 它 就 會 幫 你 畫 出 一 個 想 要 的 方 塊, 如 此 一 來 只 要 將 CYY 分 解 成 多 個 方 塊, 分 別 找 出 他 們 對 應 的 五 個 值 即 可 完 成 接 著 在 機 關 的 部 分 就 是 讓 囧 剛 好 可 以 卡 在 中 間 那 個 Y 的 上 方 岔 口 內, 使 他 無 法 動 彈, 進 而 進 入 變 色 狀 態, 而 最 後 就 是 變 色 的 設 定, 起 初 我 們 是 以 整 個 CYY 如 同 第 一 次 化 的 方 法 在 換 個 顏 色 畫 上 去 把 舊 的 顏 色 蓋 掉, 然 而 這 樣 的 做 法 卻 無 法 讓 我 們 的 變 色 自 燃, 產 生 了 不 同 步 的 情 形 ( 一 塊 一 塊 變, 先 後 很 明 顯 ), 所 以 後 來 就 改 成 從 CYY 這 個 圖 的 左 上 角 開 始 一 個 點 一 個 點 讀 值 如 果 不 是 背 景 的 黑 色 也 不 是 囧 的 紫 色 時, 就 換 成 下 一 種 顏 色 ( 當 然 不 能 是 換 成 黑 色 和 紫 色 ), 就 這 樣 把 整 個 CYY 掃 完 也 就 換 完 了 顏 色, 如 此 一 來, 換 色 就 順 利 多 了, 不 但 很 自 然 還 有 由 上 往 下 換 的 效 果, 對 於 一 個 破 關 畫 陎 來 說 應 該 是 相 當 賞 心 悅 目 的 了 26

結 語 感 謝 看 完 了 我 們 的 作 品 的 您, 因 為 這 次 的 作 業, 讓 我 們 付 出 了 很 多, 然 而, 我 們 得 到 的 更 多 這 是 我 們 第 一 次 由 一 個 團 隊 共 同 寫 一 個 code, 不 像 很 多 常 常 比 賽 經 驗 豐 富 的 同 學, 一 切 對 我 們 而 言 都 是 相 當 陌 生 的, 所 以 我 們 也 遇 到 了 很 多 的 困 難, 其 中 我 們 學 到 最 深 刻 的 經 驗 就 是 " 程 式 不 能 寫 死 " 這 件 事, 因 為 常 常 是 一 個 人 負 責 一 部 份, 而 每 個 人 的 思 考 邏 輯 都 不 盡 相 同, 如 果 自 己 的 code 一 點 彈 性 都 沒 有, 那 很 容 易 在 要 合 併 的 時 候 就 爛 掉 了, 這 點 對 於 大 一 大 部 分 時 間 都 是 孤 軍 奮 戰 的 我 們 ( 無 論 是 鋼 彈 或 是 使 徒 ) 而 言, 是 很 缺 乏 的, 因 為 以 前 都 只 要 不 計 手 段 達 成 目 的 就 好 了, 現 在 要 考 慮 的 因 素 多 太 多 了, 有 和 其 他 組 員 的 配 合 度 遊 戲 的 流 暢 度 畫 陎 的 美 觀 使 用 者 的 角 度 等 等 很 多 新 的 觀 念, 真 的 讓 我 們 吃 盡 了 苦 頭! 再 來 就 是 演 算 法 的 重 要 性 這 份 遊 戲 能 夠 變 流 暢 的 最 大 關 鍵 就 是 我 們 最 後 想 出 了 讓 所 有 樓 梯 一 起 隨 機 出 現 並 移 動 的 演 算 法, 不 然 依 照 原 本 的 爆 搜, 那 小 囧 就 真 的 可 以 體 會 到 什 麼 叫 " 寸 步 難 行 " 了 還 有 最 重 要 的 一 點, 就 是 身 為 一 個 程 式 設 計 者, 應 該 要 隨 時 隨 地 用 電 腦 用 邏 輯 的 角 度 去 思 考 問 題 和 分 析 情 況, 我 們 常 常 寫 出 一 些 自 己 怎 麼 想 都 對, 但 是 電 腦 看 起 來 就 跟 我 們 完 全 是 兩 回 是 的 code, 應 該 說 是 被 C 寵 壞 了 吧? 我 們 的 code 總 是 充 滿 著 想 當 然 爾 不 確 定 性 等 致 命 的 因 素, 如 總 是 忘 記 檢 查 stack 現 在 是 否 應 該 是 我 們 要 的 樣 子, 也 常 忘 記 某 些 暫 存 器 在 這 個 function 中 扮 演 的 角 色, 進 而 對 它 做 出 一 些 錯 誤 的 判 斷 但 是 這 些 別 人 看 起 來 很 可 笑 的 錯 誤, 當 由 我 們 親 手 寫 出 來 的 時 候, 可 以 說 是 完 全 陷 入 盲 點 而 不 自 知 的 因 為 我 們 早 就 被 自 己 " 理 所 當 然 " 的 錯 誤 邏 輯 所 蒙 蔽 了, 但 是 相 對 的, 再 我 們 de 出 bug 的 那 一 瞬 間, 我 們 確 實 感 到 我 們 的 實 力 又 往 上 提 升 了! 總 的 而 言, 這 次 的 組 語 Final Project 對 我 們 的 幫 助 真 的 不 小, 而 且 又 很 有 成 就 感, 因 為 這 是 我 們 生 平 寫 出 的 第 一 個 加 入 自 主 創 意 的 小 遊 戲, 也 是 第 一 個 完 全 以 Assembly Language 寫 出 來 的 程 式, 以 前 就 算 有 寫 過 一 些 類 似 遊 戲 的 " 作 業 ", 也 都 只 是 將 教 授 要 求 的 條 件 一 一 加 入, 程 式 本 身 是 不 具 有 programmer 的 意 志 的, 但 是 這 次 作 業 卻 讓 我 們 做 出 了 一 個 " 活 蹦 亂 跳 " 的 小 囧, 看 到 我 們 自 己 辛 苦 設 計 的 創 意 一 一 被 實 現, 那 份 感 動 真 的 不 可 言 喻, 如 果 每 份 作 業 都 那 麼 好 玩 的 話, 那 寫 作 業 這 件 事 就 真 的 一 點 都 不 覺 得 辛 苦 了! 27

Johnny Go!? 作 者 : 邱 珮 甄 (chiuma) 陳 奕 安 (ilcvmy) 林 士 涵 (hotlin1224) 黃 詠 筑 (clairhyc) 策 畫 : 台 大 資 訊 工 程 系 莊 永 裕 教 授 (cyy) 編 輯 / 美 術 : 邱 珮 甄 感 謝 名 單 : 莊 永 裕 教 授 Fall, 2007 ASM TAs 楊 逸 民 (asurada0207) 28