投稿類別 : 資訊類 篇名 : 作者 : 陳識宇 暨大附中 高三 10 班吳宗益 暨大附中 高三 9 班 指導老師 : 楊智欽
壹 前言 一 研究動機 我們的英文不是很好, 希望透過高中的遊戲製作專題, 可以做出一款學習英文的遊戲, 我們想到透過記憶翻牌的遊戲來學習英文, 在玩遊戲的過程讓學英文更有趣, 而且不會枯燥乏味, 即使對英文沒興趣也能慢慢喜歡上它 二 研究目的 製作一個記憶翻牌遊戲, 並將把動物的英文單字融入遊戲中 三 研究方法 ( 一 ) 文獻分析法 試玩網路上的記憶遊戲, 擷取所要元素融入我們遊戲中 ( 二 ) 實作研究法 以 MediBang Paint 及 PhotoImpactX3 繪製角色, 並用 Visual Basic 設計遊戲 四 研究流程圖 主題確認收集資料繪製角色撰寫程式遊戲測試遊戲完成 圖 1 研究流程圖 ( 資料來源 : 本組自行繪製 ) 1
貳 正文 一 遊戲流程 遊戲開始 遊戲說明 答案顯示 5 秒 計時 60 秒 翻牌第 1 次 翻牌第 2 次 秒數減 1 否 否 檢查 2 次翻牌是否正確 扣血 10 點 秒數 =0 是 是是否答 Z 對 8 否 血量 =0 是 否 是 進入下一關 遊戲結束 圖 2 遊戲流程 2
二 遊戲物件說明 表 1 遊戲物件說明物件 1- 青蛙物件 2- 青蛙文字物件 3- 鴨子物件 4- 鴨子文字 物件 5- 熊物件 6- 熊文字物件 7- 企鵝物件 8- 企鵝文字 物件 9- 河馬物件 10- 河馬文字物件 11- 狗物件 12- 狗文字 物件 13- 海豹物件 14- 海豹文字物件 15- 烏龜物件 16- 烏龜文字 物件 17- 章魚物件 18- 章魚文字物件 19- 野豬物件 20- 野豬文字 物件 21- 猩猩物件 22 猩猩文字物件 23- 駱駝物件 24- 駱駝文字 ( 表資料來源 : 本組自行繪製 ) 3
四 遊戲成果 遊戲開始前的說明, 接下遊戲說明鈕即可開始遊玩 圖 3 遊戲說明 一進遊戲會有 5 秒的時間記憶牌的位置 圖 4 遊戲開始停 5 秒 5 秒的時間結束, 牌就會蓋上, 遊戲就開始了 圖 5 遊戲蓋牌 4
選擇相同圖案與文字的牌卡配對, 左圖已配對完成 3 組, 完成 8 組即可破關進第下一關 圖 6 配對 3 組 每進入下一關時間會減少 10 秒的翻牌時間, 翻牌的速度要愈來愈快 圖 7 破關畫面 牌翻錯太多次, 左上方的血量會減少, 血扣光了遊戲就結束 圖 8 闖關失敗畫面 ( 圖片資料來源 : 本組自行設計 ) 5
四 遊戲程式碼 ( 一 ) 隨機抽題 (RandomQuestion 副程式 ) 隨機從 12 組牌卡中抽出 8 組不重覆的牌卡 Private Sub RandomQuestion() Dim i, n, m As Integer Dim t As String i = 1 Dim f(num) As Boolean ' 紀錄該編號的動物是否已被抽過,true 表示抽過 Do Until i > 16 Randomize() n = Int(Rnd() * num) + 1 If f(n) = False Then ' 如果 f(n) 還沒被抽過 f(n) = True ' 將 f(n) 設為 true b(i).tag = Format(n, "000") & "-1" ' 紀錄動物編號在按鈕的標籤 b(i + 1).Tag = Format(n, "000") & "-2" ' 紀錄動物名稱在按鈕的標籤 i += 2 ' 數量 +2, 在抽下 2 個 End If Loop For i = 1 To 99 ' 將抽中的動物換位置 Randomize() m = Int(Rnd() * 16) + 1 ' 隨機從 16 個檔中抽 m 號 n = Int(Rnd() * 16) + 1 ' 隨機從 16 個檔中抽 n 號 t = b(m).tag : b(m).tag = b(n).tag : b(n).tag = t ' 將 b(m) 及 b(n) 標籤交換 Next i End Sub ( 二 ) 翻牌 (btn 按鈕 -Click 事件 ) 依據玩家的翻牌, 判斷牌翻的結果是否正確, 如果正確顯示牌卡, 如果不正確蓋上 2 張牌卡並扣血 Private Sub btn_click(sender As Object, e As EventArgs) If sender.backcolor = Color.Gray Then ' 判斷此按鈕是否被翻過 n += 1 ' 翻牌次數 +1 sender.backgroundimage = Image.FromFile("..\..\Resources\" & sender.tag & ".jpg") If n Mod 2 = 0 Then ' 代表翻了偶數次, 檢查是否正確 6
s2 = sender.tag ' 紀錄偶數次翻牌的動物資訊 If Strings.Left(s1, 3) = Strings.Left(s2, 3) Then sender.enabled = False right_num += 2 ' 答對按鈕數 +2 My.Computer.Audio.Play("right.wav") ' 播放答對音效 If right_num >= 16 Then Call GameOver(1) Else My.Computer.Audio.Play("wrong.wav") ' 播放答錯音效 Delay(500) ' 答錯的牌停留 0.5 秒 tmp.backcolor = Color.Gray sender.backcolor = Color.Gray tmp.backgroundimage = Nothing ' 答錯把偶數次圖清空 sender.backgroundimage = Nothing ' 答錯把奇數次圖清空 tmp.enabled = True ' 偶數次打開 sender.enabled = True ' 奇數次打開 pbvalue.value = IIf(pbValue.Value - 10 < 0, 0, pbvalue.value - 10) If pbvalue.value = 0 Then Call GameOver(2) End If Else ' 代表翻了奇數次 s1 = sender.tag ' 紀錄奇數次翻牌的動物資訊 tmp = sender ' 紀錄奇數次翻牌的按鈕 sender.enabled = False End If End If End Sub ( 三 ) 倒數計時 (tmtime 計時器 -Tick 事件 ) 遊戲時間每 1 秒減 1, 直到時間為 0, 遊戲結束 Private Sub tmtimer_tick(sender As Object, e As EventArgs) Handles tmtimer.tick lbltime.text -= 1 ' 秒數 -1 If Val(lblTime.Text) <= 0 Then ' 秒數 <=0 時 Call GameOver(3) ' 呼叫遊戲結束副程式 End If End Sub ( 四 ) 遊戲結束 (GameOver 副程式 ) 7
遊戲一共有 3 種結果, 一種是破關, 一種是時間到闖關失敗, 另一種是血量為 0 闖關失敗 Private Sub GameOver(s) tmtimer.enabled = False ' 關閉計時器 Select Case s Case 1 tmtimer.enabled = False msg = " 你一共花了 " & (60 - Val(lblTime.Text)) & " 秒破關 " & vbcrlf & " 可以挑戰下一關!" ' 顯示遊戲通關訊息 SuccessMsg.Show() success += 1 ' 通關 +1 Case 2 msg = " 你已經沒血了!" ' 遊戲血條 =0 FailureMsg.Show() Case 3 msg = " 時間已經到了!" ' 遊戲時間 =0 FailureMsg.Show() End Select End Sub ( 五 ) 畫面停留 (Delay 副程式 ) 此程式用來在遊戲開始前停留 5 秒使用 Sub Delay(timelast As Integer) Dim start As Integer = Environment.TickCount() Do If Environment.TickCount - start > timelast Then Exit Do Application.DoEvents() Loop End Sub 8
參 結論 透過這款遊戲的製作讓我們更加了解 Visual Basic 的語法, 也讓我們想更深入遊戲製作, 終於開始較能了解網路上的大神是如何製作出精美的遊戲 這一款翻牌遊戲, 雖然還不夠精緻, 但是我們想只要朝者這條路持續努力邁進, 一定可以做出很棒的遊戲 美工的部分畫一張圖, 都會花上許久的時間, 花個一節課或是更久, 但是將畫出來的成果放到遊戲中很有成就感 未來希望能增加更多的題目與圖片, 從原本的 12 組增加至 48 組圖片 另外, 也可以設定每一關的牌卡數, 讓遊戲可以依個人喜好選擇難易度 肆 引註資料 1. 巧虎記憶翻牌 2019 年 6 月 5 日, 取自 http://www.7k7k.com/flash/158038.htm 2. Onet Connect Animal 2019 年 6 月 5 日, 取自 https://www.facebook.com/games/instantgames 3. 孫惠民 (2009) Visual Basic 6 創意遊戲設計 臺北市 : 統一元氣 4. 施威銘 (2010) 新觀念 Microsoft Visual Basic 2008 程式設計 台北市 : 旗標 5. 吳明哲 何嘉益 張志成 周家旬 (2011) Visual Basic 2010 學習範本 新北市 : 松岡資產管理股份有限公司 9