修 平 技 術 學 院 電 機 工 程 系 DEPARTMENT OF ELECTRICAL ENGINEERING HSIU-PING INSTITUTE OF TECHNOLOGY 實 務 專 題 報 告 書 電 玩 軟 體 設 計 指 導 老 師 : 陳 文 豪 專 題 製 作 學 生 : 四 技 電 四 甲 柯 冠 廷 BD96010 四 技 電 四 甲 王 明 正 BD96044 中 華 民 國 九 十 九 年 十 二 月 一 日
摘 要 Visual Basic 為 本 組 設 計 遊 戲 的 最 主 要 語 言, 以 Flash 為 輔 助 語 言, 將 此 兩 種 語 言 結 合 設 計 出 同 時 具 有 好 畫 面 與 深 度 的 遊 戲 本 組 因 是 第 一 次 製 作 遊 戲 所 以 主 要 著 重 於 小 遊 戲 的 製 作, 所 製 作 出 的 遊 戲 有 猴 子 兵 團 2D 猜 數 字 遊 戲 方 程 式 遊 戲 修 平 大 富 翁 遊 戲 跳 舞 機 遊 戲 不 管 是 人 物 或 圖 案 都 是 上 網 找 或 是 自 己 畫 的, 應 用 到 的 軟 體 有 Visual Basic 6.0 Flash5 photoimpact 小 畫 家 等
目 錄 摘 要 I 目 錄 II 圖 目 錄 III 第 一 章 前 言 1 第 二 章 遊 戲 流 程 與 架 構 2 2-1 使 用 程 式 及 元 件 介 紹 2 2-2 遊 戲 說 明 及 程 式 架 構 4 2-2.1 猴 子 兵 團 4 2-2.2 2D 猜 數 字 遊 戲 5 2-2.3 方 程 式 遊 戲 6 2-2.4 修 平 大 富 翁 遊 戲 8 2-2.5 跳 舞 機 遊 戲 9 2-3 遊 戲 動 作 流 程 方 塊 圖 11 2-4 遊 戲 程 式 碼 16 參 考 文 獻 26 遊 戲 製 作 心 得 2 7 作 者 簡 介 3 0
圖 目 錄 圖 1-1 為 VB6.0 之 工 作 環 境 2 圖 1-2 為 VB 元 件 的 介 紹 3 圖 1-3 猴 子 兵 團 遊 戲 介 面 圖 4 圖 1-4 2D 猜 數 字 遊 戲 介 面 圖 5 圖 1-5 方 程 式 遊 戲 介 面 圖 6 圖 1-6 修 平 大 富 翁 遊 戲 介 面 圖 8 圖 1-7 跳 舞 機 遊 戲 介 面 圖 9
第 一 章 前 言 隨 著 電 腦 科 技 發 展, 現 在 幾 乎 每 個 家 庭 都 有 一 台 電 腦, 而 電 腦 的 功 能 不 外 乎 玩 GAME 與 上 網, 隨 著 時 代 的 進 步 玩 遊 戲 的 年 齡 層 也 越 來 越 多, 不 管 是 大 人 還 是 小 孩, 因 此 遊 戲 軟 體 的 發 展 是 不 可 或 缺 的, 像 韓 國 就 是 一 個 以 遊 戲 開 發 為 主 的 國 家 而 遊 戲 設 計 正 是 目 前 最 受 歡 迎 的 新 潮 流 Visual Basic 語 言 是 一 個 用 來 設 計 視 窗 的 程 式 語 言 若 以 遊 戲 設 計 的 觀 點 來 看,Flash 語 言 是 最 容 易 也 是 最 適 合 設 計 遊 戲 的 選 擇, 不 僅 畫 面 好 音 效 好 且 程 式 碼 又 少, 但 Flash 的 缺 點 是 做 出 來 的 遊 戲 太 簡 單 且 功 能 有 限 ; 而 如 果 要 做 出 跟 市 面 上 的 3D 遊 戲 一 樣 就 必 須 要 用 C 語 言 來 撰 寫, 不 僅 程 式 過 於 複 雜, 過 程 中 所 需 應 用 的 軟 體 也 不 少, 因 此 Visual Basic 就 成 為 本 組 設 計 的 應 用 語 言
第 二 章 遊 戲 流 程 與 架 構 2-1 使 用 程 式 及 元 件 介 紹 Visual Basic 語 言 是 一 個 用 來 設 計 視 窗 的 程 式 語 言 若 以 遊 戲 設 計 的 觀 點 來 看,Flash 語 言 是 最 容 易 也 是 最 適 合 設 計 遊 戲 的 選 擇 圖 1-1 為 VB6.0 之 工 作 環 境 不 僅 畫 面 好 音 效 好 且 程 式 碼 又 少, 但 Flash 的 缺 點 是 做 出 來 的 遊 戲 太 簡 單 且 功 能 有 限 ; 而 如 果 要 做 出 跟 市 面 上 的 3D 遊 戲 一 樣 就 必 須 要 用 C 語 言 來 撰 寫, 不 僅 程 式 過 於 複 雜, 過 程 中 所 需 應 用 的 軟 體 也 不
少, 因 此 Visual Basic 就 成 為 本 組 設 計 遊 戲 的 最 主 要 語 言, 以 Flash 為 輔 助 語 言, 將 此 兩 種 語 言 結 合 設 計 出 同 時 具 有 好 畫 面 與 深 度 的 遊 戲 圖 1-2 為 VB 元 件 的 介 紹 本 組 的 遊 戲 設 計 專 題 是 以 Visual Basic 6.0 配 合 一 些 繪 圖 軟 體 如 : photoimpact 小 畫 家 等 還 有 些 圖 是 網 路 上 找 的, 以 此 來 設 計 出 好 玩 的 遊 戲
2-2 遊 戲 說 明 及 程 式 架 構 遊 戲 一 開 始, 分 成 三 個 選 擇, 一 是 開 始 遊 戲 另 一 個 則 是 組 員 介 紹 另 一 個 則 是 遊 戲 說 明, 點 選 開 始 遊 戲 進 入 到 遊 戲 之 中, 會 看 到 5 個 遊 戲 的 按 鈕 點 選 你 所 喜 歡 的 遊 戲 進 入 到 遊 戲 之 中,5 個 遊 戲 分 別 為 猴 子 兵 團 2D 猜 數 字 遊 戲 方 程 式 遊 戲 修 平 大 富 翁 遊 戲 跳 舞 機 遊 戲 以 下 為 6 個 遊 戲 的 遊 戲 介 紹 及 程 式 架 構 : 2-2.1 2.1 猴 子 兵 團 : 圖 1-3 猴 子 兵 團 遊 戲 介 面 圖 遊 戲 的 設 計 方 式 是 使 用 Time 時 間 控 制 項 來 控 制 表 單 上 物 件 的 變 化, 利 用 時 間 控 制 項 Time 來 控 制 猴 子 丟 西 瓜 的 時 間, 時 間 單 位 為 千 分 之 一 秒, 在 屬 性 視 窗 中 可 以 設 定 Intervel 的 值, 若 設 定 為 500, 則 每 1/2 秒 觸 發 一 次
這 個 遊 戲 規 則 是 右 方 的 猴 子 會 不 斷 向 左 邊 丟 出 子 彈, 操 作 者 必 須 移 動 滑 鼠 指 標 上 下 移 動 來 控 制 小 鳥 的 位 置, 以 躲 開 子 彈 的 攻 擊, 每 躲 過 一 顆 子 彈 可 獲 得 10 分 ; 當 小 鳥 被 打 中 時 生 命 會 少 一 個, 每 次 遊 戲 會 有 三 個 生 命 機 會 2-2.2 2.2 2D 猜 數 字 遊 戲 : 圖 1-4 2D 猜 數 字 遊 戲 介 面 圖 遊 戲 的 設 計 方 式 是 使 用 亂 數 來 分 別 產 生 四 個 數 字, 若 所 猜 數 字 正 確 且 位 置 也 正 確 則 顯 示 1A 若 數 字 正 確 位 置 不 正 確 則 顯 示 1B 如 : 正 確 猜 謎 數 字 為 9271, 猜 數 字 為 9316, 則 為 1A1B, 不 過 使 用 此 種 方 式
來 建 立 猜 謎 數 字 有 個 缺 點 : 那 就 是 可 能 會 有 重 複 的 現 象, 因 此 若 使 用 此 種 方 式 來 產 生 猜 謎 數 字, 就 必 須 不 斷 的 檢 查 是 否 有 重 複 的 數 字 出 現, 若 有 則 必 須 再 來 一 次 使 用 亂 數 產 生, 直 到 不 再 出 現 重 複 為 止, 如 此 會 不 斷 浪 費 時 間 實 務 程 式 規 劃 時, 使 用 一 個 更 先 進 的 作 法 : <1> 使 用 兩 個 陣 列, 陣 列 元 素 都 設 定 為 0 至 10 項 <2> 第 1 個 陣 列, 元 素 由 1 至 10 項 分 別 填 入 0-9 等 10 個 數 字 <3> 第 2 個 陣 列, 元 素 由 1 至 10 項 分 別 1 個 亂 數 <4> 將 第 2 個 陣 列 依 亂 數 來 從 小 到 大 排 序, 排 序 時, 同 時 重 排 第 1 個 陣 列 的 順 序, 如 此, 即 可 模 擬 為 隨 機 排 列, 同 時 不 會 有 重 複 的 現 象 發 生 2-2.3 2.3 方 程 式 遊 戲 : 圖 1-5 方 程 式 遊 戲 介 面 圖 方 程 式 遊 戲 是 使 用 逆 向 步 驟 規 劃 設 計 手 法, 所 謂 逆 向 步 驟
規 劃 設 計 手 法 是 使 用 正 向 運 算 步 驟 規 劃 相 反 的 設 計 手 法 來 設 計! 也 就 是 說 從 數 學 運 算 式 的 右 邊 為 最 先 處 理 步 驟, 再 規 劃 處 理 左 邊 的 運 算 式 這 種 由 右 到 左 的 運 算 設 計 手 法 即 稱 逆 向 步 驟 規 劃 方 程 式 遊 戲 操 作 方 法 : 當 答 題 者 將 全 部 答 案 輸 入 完 成 後, 即 可 按 下 顯 示 答 案 按 鈕, 同 時 按 鈕 將 設 定 為 不 可 重 設 狀 態, 等 待 玩 家 按 下 開 始 出 題, 即 可 設 定 為 可 執 行 狀 態, 等 待 玩 家 或 操 作 者 再 玩 一 次 此 遊 戲 在 程 式 設 計 時, 使 用 VB6 的 視 覺 化 元 件 來 顯 示 二 元 一 次 方 程 式 的 出 題 資 訊 與 作 答 輸 入 元 件, 因 此 程 式 實 作 時, 使 用 : <1>Picture 元 件 做 為 二 元 一 次 方 程 式 出 題 答 題 處 理 方 框 設 計 時, 使 用 Picture 元 件 陣 列 來 塑 造 多 框 處 理 <2> 使 用 Label 元 件 來 顯 示 題 目 輸 出 與 其 他 訊 息,Label 元 件 在 設 計 上, 同 樣 使 用 陣 列 方 式 設 計 <3> 使 用 TextBox 元 件 來 設 計 答 題 輸 入 處 理, 與 Picture Label 元 件 相 同, 設 計 上 同 樣 使 用 陣 列 方 式 設 計
2-2.4 2.4 修 平 大 富 翁 遊 戲 : 圖 1-6 修 平 大 富 翁 遊 戲 介 面 圖 我 們 設 計 的 小 遊 戲 裡, 有 類 似 大 富 翁 遊 戲, 關 於 這 類 遊 戲 裡 就 會 出 現 一 些 不 確 定 的 變 數, 例 如 骰 子.. 等, 由 於 我 們 電 腦 是 你 叫 他 做 一 樣 他 就 執 行 一 樣 的 機 器, 所 以 我 們 必 須 在 程 式 語 言 內, 增 加 變 數 事 件 出 現 的 機 率 = 事 件 可 能 結 果 數 目 / 樣 本 空 間 可 能 結 果 數 目 Randomize[number] Number 引 述 可 以 是 任 何 的 數 值 運 算 式 功 能 是 初 始 化 亂 數 產 生 器 Rnd 函 式 公 式 : 亂 數 =Int(Rnd*( 上 限 - 下 限 +1)+ 下 限 ) 就 拿 大 富 翁 來 說, 投 擲 骰 子 會 有 1-6 的 亂 數, 其 上 限 值 =1: 下 限 值 =6 則 我 們 用 公 式 可 以 得 到 point_num=int(rnd*(6-1+1)+1) 可 化 簡 為 : point_num=int(rnd*6+1) 遊 戲 的 設 計 方 式 是 使 用 觸 發 元 件 來 執 行 遇 到 突 發 狀 況, 當 玩 家 或 電 腦 擲 骰 子 走 到 土 地 時, 如 果 土 地 沒 被 買 走, 就 會 顯 現 是 否 買 下 的 視
窗 反 之 如 果 土 地 被 買 走, 就 必 須 付 錢 給 土 地 的 買 方 玩 家 或 電 腦 遊 戲 一 開 始 的 起 始 金 錢 是 30000 元, 哪 方 先 把 錢 花 光 即 為 輸 家 2-2.5 2.5 跳 舞 機 遊 戲 : 圖 1-8 跳 舞 機 遊 戲 介 面 圖 跳 舞 機 遊 戲 在 程 式 設 計 上, 有 二 個 設 計 重 點 : <1> 使 用 滑 鼠 (Mouse) 做 為 遊 戲 介 面 操 控 裝 置 利 用 Button_Click() 觸 發 事 件 來 處 理 <2> 使 用 計 時 器 Timer 元 件 來 定 時 與 循 環 處 理 遊 戲 的 進 行 跳 舞 機 遊 戲 程 式 規 劃 設 計 時, 使 用 層 疊 的 設 計 技 術 來 設 計 主 遊 戲 顯 示 介 面 : 使 用 兩 個 Picture 元 件 來 設 計 舞 步 顯 示 與 處 理, 實 務 設 計 上, 使 用 元 件 陣 列 來 規 劃 : Picture1(0) 與 Picture1(1) 元 件 其 中 Picture1(0) 為 主 元 件,Picture1(1) 為 層 疊 副 元 件 另 外 使 用 一 個 計 時 器 元 件 做 為 遊 戲 開 始 後 的 主 控 制 元 件 跳 舞 機 遊 戲 操
作 方 法 : 遊 戲 開 始 舞 步 共 有 120 步, 左 右 2 ㄍ 視 窗 的 英 文 字 母 都 輸 入 正 確 的 話 則 得 到 2 分 反 之, 如 果 只 有 一 方 對 則 得 到 1 分, 舞 步 產 生 的 方 式 是 隨 機 產 生
1-3 遊 戲 動 作 流 程 方 塊 圖 猴 子 兵 團 : 遊 戲 初 始 化 設 定 點 擊 Start 進 行 遊 戲 啟 動 遊 戲 計 時 器 判 斷 小 鳥 是 否 被 西 瓜 打 中 被 西 瓜 打 中 沒 被 西 瓜 打 中 損 失 一 條 命 得 到 10 分
2D 猜 數 字 遊 戲 : 遊 戲 初 始 設 定 電 腦 使 用 亂 數 排 列 方 式 產 生 猜 謎 所 需 要 的 四 位 數 字 玩 家 輸 入 所 猜 的 四 位 數 字 Call 檢 核 處 理 Method( ) 答 案 框 顯 示 4A4B 所 猜 數 字 是 否 正 確? 顯 示 答 案 訊 息 顯 示 答 案 1A1B 訊 息
方 程 式 遊 戲 : 遊 戲 初 始 設 定 先 產 生 二 元 一 次 方 程 式 的 解 ( 使 用 亂 數 來 建 立 X 與 Y 之 值 ) 使 用 亂 數 來 建 立 二 元 一 次 方 程 式 使 用 VB6 視 覺 化 元 件 來 顯 示 二 元 一 次 方 程 式 按 下 顯 示 答 案 得 解
修 平 大 富 翁 遊 戲 : 遊 戲 初 始 設 定 擲 骰 子 決 定 走 的 步 數 根 據 停 留 的 地 點 判 斷 是 否 買 下 或 罰 錢 如 要 買 下 則 扣 錢 玩 家 和 電 腦 雙 方 誰 先 破 產 遊 戲 結 束
跳 舞 機 遊 戲 : 遊 戲 初 始 化 設 定 是 否 開 始 遊 戲? 啟 動 遊 戲 計 時 器 進 入 計 時 器 事 件 顯 示 遊 戲 結 果 使 用 亂 數 隨 機 產 生 點 擊 字 元 N 舞 步 總 步 數 是 否 已 為 0? YES 停 止 計 時 器 螢 幕 介 面 顯 示 卡 等 待 遊 戲 者 按 鍵? 按 鍵 是 否 正 確? 正 確 分 數 加 1
1-4 遊 戲 程 式 碼 猴 子 兵 團 : 發 射 子 彈 的 時 間 事 件 程 式 ( 每 0.5 秒 ) Private Sub Timer1_Timer() If game_status = 1 Then Call duplicate_weapon End If End Sub 移 動 子 彈 的 時 間 事 件 程 式 ( 每 0.1 秒 ) Private Sub Timer2_Timer() Dim i, offset, px, py, px2, py2 If game_status = 1 Then offset = 500 For i = 0 To 29 If weapon_flag(i) = 1 Then weapon(i).left = weapon(i).left - offset DoEvents px = weapon(i).left + weapon(i).width / 2 py = weapon(i).top + weapon(i).height / 2 px2 = fb.left + fb.width / 2 py2 = fb.top + fb.height / 2 檢 查 是 否 打 中 If py > py2-400 And py < py2 + 400 And _ px > px2-400 And px < px2 + 400 Then 重 設 遊 戲 狀 態 Sub reset_status() Dim i 建 立 小 鳥 新 生 命 副 程 式 Sub get_life() p_life = p_life - 1
b(p_life).visible = False game_status = 1 End Sub 2D 猜 數 字 遊 戲 : Private Frm_StrGuestNumberCreateDATA(10) As String Private Frm_LngGuestNumberRandomDATA(10) As Long Private Frm_boolNowGameAnswerIsRight As Boolean 開 始 玩 猜 數 字 遊 戲 Private Sub Command1_Click() Dim intiiiww As Long Dim boolreturnvalues As Boolean * 步 驟 1 List1.Clear Picture1(0).Enabled = True Picture1(1).Enabled = True 步 驟 2: 產 生 電 腦 猜 數 字 的 本 次 讓 使 用 者 猜 的 數 字 boolreturnvalues = boolreturnvalues + 1 INITIAL_GuestNumberGameToRUN 步 驟 3 For intiiiww = 0 To 3 Label2(intIIIww).Caption = " " 使 用 亂 數 來 建 立 猜 謎 的 數 字 Private Function INITIAL_GuestNumberGameToRUN() As Boolean Randomize Dim intiiiww As Long Dim intjjjww As Long Dim inttempnumberkey As Long Dim strtemp As String For intiiiww = 1 To 10
Frm_StrGuestNumberCreateDATA(intIIIww) = Trim(CStr(intIIIww - 1)) Frm_LngGuestNumberRandomDATA(intIIIww) = Rnd() * 100000 Next 答 案 核 對 處 理 數 字 與 位 置 都 正 確, 則 A 總 數 加 1 If Trim(Mid(strGuestNumberToString, intiiiww, 1)) = Trim(Frm_StrGuestNumberCreateDATA(intIIIww)) Then inta_total_count = inta_total_count + 1 '* 數 字 與 位 置 都 正 確, 則 A 總 數 加 1 Else 數 字 正 確 但 位 不 正 確, 則 B 總 數 加 1 For intjjjww = 1 To 4 If Trim(Mid(strGuestNumberToString, intiiiww, 1)) = Trim(Frm_StrGuestNumberCreateDATA(intJJJww)) Then intb_total_count = intb_total_count + 1 數 字 正 確 但 位 不 正 確, 則 B 總 數 加 1 End If 都 沒 猜 中 則 顯 示 NONE If inta_total_count = 0 And intb_total_count = 0 Then Label2(4).Caption = "NONE" End If 在 ListBox 中 填 入 猜 數 字 結 果 List1.AddItem strguestnumbertostring & "-->" & Label2(4).Caption 當 出 現 4A 時, 傳 回 True, 表 示 正 確 答 案 If inta_total_count >= 4 Then GuestNumberIsRightProcess = True 當 出 現 4A 時 傳 回 True 表 示 正 確 答
案 方 程 式 遊 戲 : 按 下 開 始 出 題 按 鈕 - 執 行 出 題 Private Sub Command1_Click() Dim intiiiww As Integer For intiiiww = 0 To 5 Text1(intIIIww).Text = "" Next 先 產 生 二 元 一 次 方 程 式 中 X 與 Y 的 答 案 CreatXYSolutionValues 先 執 行 電 腦 出 二 元 一 次 方 程 式 題 目 BuildLinearSubjectToreate 二 元 一 次 方 程 式 遊 戲 初 始 化 設 定 Private Function GameVarINITIAL_Setting() As Boolean Dim intiiiww As Integer For intiiiww = 1 To 3 frm_lngsolution_x_values(intiiiww) = 0 frm_lngsolution_y_values(intiiiww) = 0 Next For intiiiww = 0 To 5 Text1(intIIIww).Text = "" Text2(intIIIww).Text = "" Text2(intIIIww).Visible = False Next Command1.Enabled = True Command2.Enabled = False GameVarINITIAL_Setting = True 電 腦 出 二 元 一 次 方 程 式 題 目 Private Function BuildLinearSubjectToreate() As Boolean Randomize
Dim intsolutionvaluesset(6) As Long Dim intsetsubjectvalues(9) As Long Dim intiiiww As Integer For intiiiww = 1 To 9 intsetsubjectvalues(intiiiww) = CLng(Rnd() * 10) + 1 Next 先 將 產 生 的 答 案 設 定 到 Text2 視 覺 化 元 件 Text2(0).Text = frm_lngsolution_x_values(1) Text2(1).Text = frm_lngsolution_y_values(1) Text2(2).Text = frm_lngsolution_x_values(2) Text2(3).Text = frm_lngsolution_y_values(2) Text2(4).Text = frm_lngsolution_x_values(3) Text2(5).Text = frm_lngsolution_y_values(3) '* 第 一 題 題 目 *' intsolutionvaluesset(1) = frm_lngsolution_x_values(1) + frm_lngsolution_y_values(1) intsolutionvaluesset(2) = intsetsubjectvalues(1) * frm_lngsolution_x_values(1) + intsetsubjectvalues(2) * frm_lngsolution_y_values(1) + intsetsubjectvalues(3) '* 第 二 題 題 目 *' intsolutionvaluesset(3) = frm_lngsolution_x_values(2) - frm_lngsolution_y_values(2) intsolutionvaluesset(4) = intsetsubjectvalues(4) * frm_lngsolution_x_values(2) - intsetsubjectvalues(5) * frm_lngsolution_y_values(2) + intsetsubjectvalues(6) '* 第 三 題 題 目 *' intsolutionvaluesset(5) = frm_lngsolution_x_values(3) + frm_lngsolution_y_values(3) intsolutionvaluesset(6) = intsetsubjectvalues(7) * frm_lngsolution_x_values(3) - intsetsubjectvalues(8) * frm_lngsolution_y_values(3) + intsetsubjectvalues(9)
修 平 大 富 翁 遊 戲 : Dim PlayerMoney As Long Dim ComputerMoney As Long Dim PlayerPos As Byte Dim ComputerPos As Byte Private Sub CmdPlay_Click() CmdPlay.Enabled = False Command1.Enabled = False Randomize 玩 家 PlayerPos = PlayerPos + Int(Rnd * 4) + 1 If PlayerPos = 20 Then PlayerPos = 0 End If If PlayerPos > 20 Then PlayerPos = PlayerPos - 20 MsgBox " 經 過 由 此 去, 玩 家 得 2000", 64 PlayerMoney = PlayerMoney + 2000 End If CmdPlayer.Move Shape1(PlayerPos).Left, Shape1(PlayerPos).Top If Shape1(PlayerPos).Tag = "" And Val(Label1(PlayerPos).Tag) > 100 Then R = MsgBox(" 請 問 玩 家! 你 要 買 下 " & Label1(PlayerPos).Caption & " 嗎?", vbquestion + vbyesno) If R = vbyes Then Shape1(PlayerPos).Tag = "p" PlayerMoney = PlayerMoney - Val(Label1(PlayerPos).Tag) End If End If If Shape1(PlayerPos).Tag = "c" Then MsgBox Label1(PlayerPos).Caption & " 是 電 腦 的, 所 以 玩 家 要 付 錢 給
電 腦 " ' 電 腦 ComputerPos = ComputerPos + Int(Rnd * 5) + 1 If ComputerPos = 20 Then ComputerPos = 0 End If If ComputerPos > 20 Then MsgBox " 經 過 由 此 去, 電 腦 得 2000", 48 ComputerPos = ComputerPos - 20 ComputerMoney = ComputerMoney + 2000 End If CmdComputer.Move Shape1(ComputerPos).Left + Shape1(ComputerPos).Width - CmdComputer.Width, Shape1(ComputerPos).Top If Shape1(ComputerPos).Tag = "" And Val(Label1(ComputerPos).Tag) > 100 Then If ComputerMoney >= 4000 Then Shape1(ComputerPos).Tag = "c" ComputerMoney = ComputerMoney - Val(Label1(ComputerPos).Tag) MsgBox " 電 腦 買 下 " & Label1(ComputerPos).Caption, 48 End If If Shape1(ComputerPos).Tag = "p" Then MsgBox Label1(ComputerPos).Caption & " 是 玩 家 的, 所 以 電 腦 要 付 錢 給 玩 家 " Label2.Caption = " 玩 家 資 金 :" & PlayerMoney Label3.Caption = " 電 腦 資 金 :" & ComputerMoney If ComputerMoney < 0 Then MsgBox " 電 腦 破 產, 玩 家 獲 勝!", 64
Exit Sub 跳 舞 機 遊 戲 : 遊 戲 初 始 設 定 FRM_boolAnswerThisTimesPlay(1) = False FRM_boolAnswerThisTimesPlay(2) = False For intiiiww = 0 To 19 Label1(intIIIww).Enabled = False Next Picture1(0).Visible = False Picture1(1).Visible = True Picture1(2).Visible = False FRM_intChangeKeyNextTimes = 2000 StartGameKeyTime.Interval = FRM_intChangeKeyNextTimes StartGameKeyTime.Enabled = False Command1.Enabled = True Command2.Enabled = False Label2(2).Caption = "" FRM_intThisTimePlayGameScores = 0 Label2(0).Caption = Trim(CStr(FRM_intThisTimePlayGameScores)) Case 2 遊 戲 開 始 時, 設 定 FRM_boolAnswerThisTimesPlay(1) = False FRM_boolAnswerThisTimesPlay(2) = False For intiiiww = 0 To 19 Label1(intIIIww).Enabled = False Next Picture1(0).Visible = True Picture1(1).Visible = False Picture1(2).Visible = True StartGameKeyTime.Enabled = True FRM_intChangeKeyNextTimes = 2000 Command1.Enabled = False
Command2.Enabled = True StartGameKeyTime.Interval = FRM_intChangeKeyNextTimes StartGameKeyTime.Enabled = True StartGameKeyTime_Timer FRM_intThisTimePlayGameScores = 0 Label2(0).Caption = Trim(CStr(FRM_intThisTimePlayGameScores)) Case Else End Select GameInitialSetting = True End Function Private Sub Command1_Click() GameInitialSetting 2 End Sub Private Sub Command2_Click() GameInitialSetting 1 End Sub Private Sub Command4_Click() Form7.Hide Form1.Show End Sub Private Sub Form_Load() FRM_intThisTimeStepDancingTotal = 120 '* 遊 戲 跳 舞 步 總 數 FRM_intChangeKeyNextTimes = 2000 StartGameKeyTime.Interval = FRM_intChangeKeyNextTimes StartGameKeyTime.Enabled = False GameInitialSetting 1 End Sub Private Sub Picture1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) If Index > 0 Then Exit Sub End If 兩 格 位 回 答 正 確, 本 循 環 則 不 在 處 理 If FRM_boolAnswerThisTimesPlay(1) And FRM_boolAnswerThisTimesPlay(2) Then
Exit Sub End If 遊 戲 跳 舞 步 總 數 到 0 時, 則 遊 戲 結 束 If FRM_intThisTimeStepDancingTotal <= 0 Then Exit Sub End If 遊 戲 跳 舞 步 總 數 到 0 時, 則 遊 戲 結 束, 依 分 數 顯 示 評 語 Select Case FRM_intThisTimePlayGameScores Case Is <= 45 Label2(2).Caption = " 您 的 反 應 速 度 待 加 強, 再 接 再 厲!!!" Case Is <= 90 Label2(2).Caption = " 您 的 反 應 速 度 還 可 以, 再 接 再 厲!!!" Case Is <= 150 Label2(2).Caption = " 您 的 反 應 速 度 滿 快 的, OK!!!" Case Else Label2(2).Caption = " 您 的 反 應 速 度 超 快 的, GOOD!!!" End Select Exit Sub End If
參 考 文 獻 <1>VB 研 究 小 站 : 初 學 者 必 來 的 網 站, 裡 頭 提 供 很 多 作 遊 戲 會 用 到 的 原 始 碼 還 有 元 件 可 供 下 載 另 外 還 有 範 例 指 導 如 何 做 遊 戲 <2>Visual Basic 6 遊 戲 設 計 ( 松 崗 ): 裡 頭 提 供 很 多 復 古 跟 前 衛 遊 戲 設 計 的 手 法 教 導 讀 者 如 何 設 計 有 趣 的 電 腦 遊 戲, 同 時 教 導 如 何 規 劃 設 計 2D 3D 與 網 路 連 線 對 戰 有 趣 的 書 籍 <3> Visual Basic 6.0 程 式 設 計 ( 網 奕 資 訊 ): 此 書 提 供 了 很 多 VB6.0 的 程 式 設 計 基 本 概 念, 並 以 實 際 的 程 式 碼 介 紹 各 種 程 式 碼 的 撰 寫 技 巧 本 書 分 為 Visual Basic 操 作 程 式 設 計 基 礎 應 用 與 進 階 專 題 設 計 等 四 篇
遊 戲 製 作 心 得 王 明 正 同 學 製 作 專 題 心 得 : 我 會 選 擇 這 個 專 題, 是 因 為 我 本 身 對 遊 戲 設 計 方 面 有 興 趣, 所 以 當 初 看 到 有 這 個 選 項 時, 便 直 接 去 問 對 這 個 遊 戲 設 計 有 研 究 的 老 師, 也 就 是 陳 文 豪 老 師 拉 ~ 還 有 其 中 一 個 原 因 就 是 設 計 遊 戲 不 用 花 錢 拉 ~ 一 開 始 老 師 問 我 們 要 用 什 麼 的 語 言 去 寫 遊 戲, 我 們 啥 都 不 懂 就 問 老 師, 哪 個 語 言 可 能 會 比 較 好 寫, 有 FLASH C++ 等 等 的... 後 來 我 們 決 定 用 BASIC(VB6),VB 簡 單. 易 操 作. 很 人 性 化. 即 使 有 些 小 錯 誤 他 也 會 自 行 更 正. 剛 開 始 學 可 能 會 有 一 點 不 好 進 入 狀 況. 可 是 多 做 例 題. 多 看 例 子. 跟 著 做. 就 會 慢 慢 有 基 礎 概 念, 加 上 過 去 學 長 也 是 用 這 個 語 言 去 撰 寫, 畢 竟 我 們 是 初 學 者, 對 這 個 語 言 其 實 是 一 點 基 礎 都 沒 有, 想 說 不 會 至 少 可 以 參 考 學 長 的 再 慢 慢 的 去 學 習, 我 們 利 用 下 課 時 間 暑 假 多 翻 一 些 有 關 VB6 的 書 去 學 習, 上 網 多 參 考 遊 戲 的 參 考 範 例 去 想 怎 麼 改, 由 於 學 長 做 的 範 例 不 見 了, 所 以 我 們 就 上 網 找 一 些 範 例 來 參 考, 我 們 有 看 到 之 前 學 長 做 的 覺 得 學 長 也 太 厲 害 了 吧! 所 以 一 開 始 當 然 是 先 學 會 它 的 元 件 裡, 各 有 什 麼 的 功 能, 接 下 來 就 進 階 的 學 語 法 代 表 的 意 思, 不 過 這 真 的 好 難, 對 於 這 個 我 們 花 了 很 多 時 間 去 弄, 先
慢 慢 弄 運 算 式 子 寫 出 向 計 算 機 等 等 的 功 能, 例 如 像 有 骰 子 功 能 的 或 隨 機 出 現 的 東 西, 這 時 就 要 用 到 亂 數 的 功 能, 等 等 的 語 法. 老 師 要 我 們 盡 量 做 到 跟 外 面 的 遊 戲 有 一 些 可 以 比 較, 但 是 我 們 覺 得 太 難 了, 所 以 我 們 所 做 的 遊 戲 是 朝 著 比 較 簡 單 的 方 式 去 寫, 像 林 助 訓 老 師 給 我 們 推 薦 是 可 以 寫 一 些 像 電 機 那 種 方 程 式 的 答 案 等 等 對 我 們 這 個 科 系 也 比 較 有 相 關, 我 們 就 朝 著 這 方 面 去 弄, 裡 面 有 方 程 式 的 遊 戲 柯 冠 廷 同 學 製 作 專 題 心 得 : 當 初 會 選 擇 這 個 遊 戲 來 製 作 專 題 是 因 為 想 說 製 作 遊 戲 應 該 比 較 簡 單, 但 實 際 在 做 遊 戲 時 卻 發 現 不 是 那 麼 容 易 於 是 我 們 就 去 問 專 題 老 師 陳 文 豪, 因 為 我 們 之 前 有 修 過 c 語 言 的 課 程 而 且 那 時 候 的 導 師 也 是 陳 文 豪 老 師 於 是 老 師 就 建 議 我 們 已 c++ 來 設 計 遊 戲, 但 之 後 發 現 c++ 對 我 們 第 一 次 製 作 遊 戲 來 說 太 困 難 了 加 上 學 長 前 幾 年 是 以 Visual Basic 6.0 來 製 作 專 題 遊 戲, 所 以 老 師 就 乾 脆 建 議 我 們 跟 學 長 一 樣 用 Visual Basic 6.0 來 製 作 老 師 本 來 想 把 學 長 的 專 題 檔 案 給 我 們 參 考, 但 是 因 為 那 是 88 年 二 技 學 長 作 的 遊 戲, 專 題 檔 案 早 已 不 見 了 於 是 陳 文 豪 老 師 給 了 我 們 很 多 專 題 製 作 的 方 向, 還 把 很 多 有 關 專 題 的 書 跟 學 長 前 幾 年 做 的 遊 戲 專 題 借 給 我 們 回 家 看 由 於 前 幾 年
學 長 做 的 遊 戲 專 題 是 以 Visual Basic 6.0 來 製 作, 因 此 老 師 就 建 議 我 們 以 VB 為 主 要 語 言 Flash 為 輔 助 語 言, 並 要 我 們 配 合 網 路 看 能 不 能 做 出 對 打 之 類 的 遊 戲, 於 是 我 們 就 到 圖 書 館 去 收 集 資 料 便 借 書 回 家 看 實 際 做 遊 戲 時 才 發 現 要 設 計 出 像 市 面 上 那 種 網 路 連 線 對 打 的 遊 戲, 對 初 學 者 來 說 難 了 一 點 加 上 專 題 口 試 時, 專 題 老 師 給 了 我 們 許 多 方 向 例 如 : 林 助 訓 老 師 建 議 我 們 可 以 製 作 出 一 些 例 如 電 機 類 的 問 答 遊 戲, 這 樣 跟 電 機 系 也 比 較 有 關 於 是 我 們 就 朝 著 此 方 向 去 撰 寫 遊 戲 的 程 式, 裡 面 有 許 多 的 程 式 都 是 參 考 許 多 書 籍 所 撰 寫 而 成 的, 因 為 我 們 之 前 有 修 過 c 語 言 的 課 程 所 以 c 語 言 對 我 麼 來 說 還 好, 重 點 是 如 何 利 用 Visual Basic 6.0 來 製 作 出 實 用 又 好 玩 的 遊 戲
作 者 簡 介 姓 名 : 柯 冠 廷 出 生 地 : 台 灣 省 台 中 市 出 生 日 期 :78/1/13 學 歷 : 大 勇 國 民 小 學 崇 倫 國 中 宜 寧 中 學 修 平 技 術 學 院 證 照 : 工 業 配 線 ( 丙 級 ) 電 子 郵 件 :kcd6we2009 @ yahoo.com.tw 電 話 :0988-311492
姓 名 : 王 明 正 出 生 地 : 台 中 縣 太 平 市 出 生 日 期 : 77/11/07 學 歷 : 東 平 國 小 太 平 國 中 宜 寧 高 中 修 平 技 術 學 院 證 照 : 無 電 子 郵 件 : qoo12345669@yahoo.com.tw 電 話 : 0963-141921