260 likes | 721 Views
計算機程式及實習 期末報告 PPT 製作. 題目 : 記憶大 考驗地獄版 南台科技大學 機械工程學系 車輛一乙 學號 :4A115063 姓名 : 蔡朝翔 教師 : 謝慶存. 記憶大考驗地獄版 主題說明與背景. 記憶大考驗遊戲是常見的多媒體小遊戲。 玩家必須在一定的時間內記住所有卡片的位置,接著圖片會覆蓋,玩家使用滑鼠點擊翻開圖片,當翻開兩張相同圖片牌時會發出 CHIMES.WAV 聲音,若兩張不同時,會顯示答錯訊息,則圖片會重新覆蓋,當所有牌答對翻開時會撥放 APPLAUSE.WAV 鼓掌聲表示過關。. 實際程式撰寫 ~ 開啟檔案. 表單設計 ~ 建立介面.
E N D
計算機程式及實習期末報告PPT製作 題目:記憶大考驗地獄版 南台科技大學 機械工程學系 車輛一乙 學號:4A115063 姓名:蔡朝翔 教師:謝慶存
記憶大考驗地獄版主題說明與背景 • 記憶大考驗遊戲是常見的多媒體小遊戲。 • 玩家必須在一定的時間內記住所有卡片的位置,接著圖片會覆蓋,玩家使用滑鼠點擊翻開圖片,當翻開兩張相同圖片牌時會發出CHIMES.WAV聲音,若兩張不同時,會顯示答錯訊息,則圖片會重新覆蓋,當所有牌答對翻開時會撥放APPLAUSE.WAV鼓掌聲表示過關。
表單設計~建立介面 btn1 btn2 btn3 pic1 pic2 pic3 pic4 pic8 pic5 pic6 pic7 Timer1/Timer2
Pic1、pic2、pic3、pic4、pic5、pic6、pic7、pic8的圖片方塊控制項,用來當作記憶大考驗遊戲的8個圖示。Pic1、pic2、pic3、pic4、pic5、pic6、pic7、pic8的圖片方塊控制項,用來當作記憶大考驗遊戲的8個圖示。 • bnt1、btn2、btn3鈕,來選擇記憶大考驗等級。 • lblShow標籤控制項,用來顯示遊戲開始時之前玩家可以檢視的時間。 • lblTime標籤控制項,用來顯示目前記憶大考驗所花費的遊戲時間。 • Time1計時器控制項,用來計算遊戲開始時之前玩家可以檢視的時間。 • Time2計時器控制項,用來計算目前記憶大考驗所花費的遊戲時間。
1.jpg 2.jpg 3.jpg 4.jpg CHIMES.WAV APPLAUSE.WAV q.jpg 將檔案放置到Bin/Debug資料夾下
程式碼撰寫部分~語言操作實作 • Public Class Form1 • Dim n() As Integer = {0, 1, 2, 4, 3, 3, 1, 4, 2} 宣告n(0)~n(8)整數陣列,用來表示8個圖片方塊所表示的值 • Dim p(8) As PictureBox 宣告p(0)~p(8)圖片方塊控制項陣列,p(0)省略不用,p(1)~p(8)用來代表pic1~pic8 • Dim hitPic1, hitPic2 As PictureBox 宣告hitPic表示第一次翻牌的圖片方塊、hitPic2表示第二次翻牌的圖片方塊 • Dim t1, t2 As String t1 、t2字串存放第一、二次翻牌圖片所取得的值 • Dim isFirst As Boolean = True isFirst表示第一次按下圖片的旗標 • Dim timer1Tot As Integer 表示timer1計時器執行的次數 • Dim timer2Tot As Integer 表示timer2計時器執行的次數 • Dim level As Integer 表示等級,2為高級,5為中級,10為初級 • Dim tot As Integer 答對的組數,若tot為4表示過關
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadMe.AutoSizeMode = Windows.Forms.AutoSizeMode.GrowAndShrink Form1表單載入時,即觸發Form1_Load事件處理函式 • lblShow.Text = “請按【開始】鈕進行遊戲” • lblTime.Text = "“ • Timer1.Interval = 1000 指定Timer1每一秒執行Timer1_Tick事件處理程序一次 • Timer2.Interval = 1000 指定Timer2每一秒執行Timer2_Tick事件處理程序一次 • p(1) = pic1 • p(2) = pic2 • p(3) = pic3 • p(4) = pic4 • p(5) = pic5分別將pic1~pic8指定給p(1)~p(8),表示p(1)~p(8)可以操作pic1~pic8控制項 • p(6) = pic6 • p(7) = pic7 • p(8) = pic8 • For i = 1 To n.GetUpperBound(0) • p(i).Image = New Bitmap(“q.jpg”)使pic1~pic8顯示q.jpg • p(i).Tag = n(i)pic1~pic8的Tag屬性皆設為n(1)~n(8) • p(i).SizeMode = PictureBoxSizeMode.StretchImage使圖片隨pic1~pic8的大小做縮放 • p(i).BorderStyle = BorderStyle.Fixed3D使pic1~pic8的框線樣式以3D框線顯示 • p(i).Enabled = Falsepic1~pic8屬性失效 • Next • End Sub
Private Sub pic1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pic8.Click, pic7.Click, pic6.Click, pic5.Click, pic4.Click, pic3.Click, pic2.Click, pic1.Click 定義pic1_Click事件處理函式,以提供給pic1~pic8的Click事件使用 • If isFirstThen第一次翻牌 • hitPic1 = CType(sender, PictureBox)將第一次翻牌的圖片方塊指定給hitPic1 • t1 = hitPic1.Tag.ToString將目前翻牌圖片的值指定給t1 • hitPic1.Image = New Bitmap(hitPic1.Tag.ToString & “.jpg”)顯示目前翻牌的圖示 • isFirst = False將isFirst設為False表示目前己結束第二次翻牌 • Else第二次翻牌 • hitPic2 = CType(sender, PictureBox)將第二次翻牌的圖片方塊指定給hitPic • t2 = hitPic2.Tag.ToString將目前翻牌圖片的值指定給t2 • hitPic2.Image = New Bitmap(hitPic2.Tag.ToString & “.jpg”)顯示目前翻牌的圖示 • isFirst = True將isFirst設為True表示目前已結束第二次翻牌 • If t1 = t2 Then若t1等於t2,表示所翻牌兩個圖片的Tag屬性相同,即兩者的圖示相同 • hitPic1.Enabled = False使目前翻牌兩個圖片失效 • hitPic2.Enabled = False • tot += 1答對組數加1 • My.Computer.Audio.Play("CHIMES.WAV", AudioPlayMode.Background) • End If • If t1 <> t2 Then若t1不等於t2,表示所翻牌兩個圖片的Tag屬性不同,即兩者的圖示不相同
MsgBox("答錯了^_|||") • hitPic1.Image = New Bitmap("q.jpg") • hitPic2.Image = New Bitmap(“q.jpg”)將第一次和第二次翻牌的圖示以q.jpg顯示 • End If • If tot = 4 Then 若答對組數為4,即表示過關 • btn1.Enabled = True • btn2.Enabled = Truebtn1. btn2. btn3鈕啟用 • btn3.Enabled = True • Timer1.Enabled = FalseTimer1、2計時器停止 • Timer2.Enabled = False • If level = 2 Then • MsgBox("過關了...果然是記憶高手") • ElseIf level = 5 Then • MsgBox("過關了...你的記憶力還不錯") • ElseIf level = 10 Then • MsgBox("過關了...你的記憶力還馬馬乎乎") • End If • y.Computer.Audio.Play(“APPLAUSE.WAV”, AudioPlayMode.Background)播放股掌聲 • End If • End If • End Sub
Private Sub GameStart()進行遊戲的GameStart()程序 • My.Computer.Audio.Stop()停止播放聲音 • level = timer1Tot • btn1.Enabled = False • btn2.Enabled = Falsebtn1、2、3鈕失效 • btn3.Enabled = False • Timer1.Enabled = True啟動Timer1計時器 • timer2Tot = 0timer2Tot的計時遊戲時間 • t1 = "" • t2 = “”將t1、t2第一、二次翻牌圖片所取得的值設為空白 • tot = 0將答對的組數設為0,若tot為4表示過關 • hitPic1 = Nothing將hitPic1第一次翻牌的圖片方塊設為Nothing • hitPic2 = Nothing將hitPic2第二次翻牌的圖片方塊設為Nothing • lblShow.Text = "你可以檢視的時間還有"& timer1Tot & "秒" • lblTime.Text = "" • For i = 1 To n.GetUpperBound(0)使pic1~pic8顯示1~4.jpg四個圖示 • p(i).Image = New Bitmap(n(i) & ".jpg") • Next • End Sub
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click • timer1Tot = 2設定timer1Tot的倒數時間為2秒 • GameStart() • End Sub • Private Sub btn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn2.Click • timer1Tot = 5設定timer1Tot的倒數時間為5秒 • GameStart() • End Sub • Private Sub btn3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn3.Click • timer1Tot = 10設定timer1Tot的倒數時間為10秒 • GameStart() • End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick • Timer1計時器啟動時會觸發Timer1_Tick事件 • timer1Tot -= 1timer1Tot減1即倒數秒數 • lblShow.Text = "你可以檢視的時間還有"& timer1Tot & "秒" • If timer1Tot = 0 Then若timer1Tot倒數秒數為0則執行下面敘述 • Timer1.Enabled = FalseTimer1失效 • lblShow.Text = "" • Timer2.Enabled = TrueTimer2啟動 • For i = 1 To n.GetUpperBound(0) • p(i).Image = New Bitmap(“q.jpg”)pic1~pic8顯示q.jpg • p(i).Enabled = Truepic1~pic8圖片啟用 • Next • End If • End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick Timer2計時器啟動時會觸發Timer2_Tick事件 • timer2Tot += 1 timer2Tot加1即遊戲時間加1 • lblTime.Text = "遊戲時間:" & timer2Tot & " 秒“ • If timer2Tot = 30 Thentimer2Tot遊戲時間到30時,即執行下面敘述馬上停止遊戲 • Timer2.Enabled = FalseTimer2失效 • btn1.Enabled = True • btn2.Enabled = Truebtn1, btn2, btm3啟用 • btn3.Enabled = True • MsgBox("時間到,闖關失敗") • lblShow.Text = "請按【開始】鈕進行遊戲” • lblTime.Text = "“ • For i = 1 To n.GetUpperBound(0) • p(i).Image = New Bitmap(“q.jpg”)pic1~pic8顯示q.jpg • p(i).Enabled = Falsepic1~pic8圖片失效 • Next • End If • End Sub • End Class
實際執行程式(開始遊玩) 進入畫面之後選擇初級、中級、高級難度
初級過關會顯示:過關了...你的記憶力還馬馬乎乎初級過關會顯示:過關了...你的記憶力還馬馬乎乎 中級過關會顯示:你的記憶力還不錯 高級過關會顯示:過關了...果然是記憶高手
30秒到會顯示:時間到,闖關失敗 圖案選錯會顯示:答錯了
全部答對會撥放 鼓掌聲
卡片造型圖示 你想整人嗎? 這誰記得住阿! 你是在記憶甚麼啦!
心得感言 • 這一學期VB課程,教了許多跟製作遊戲相關的程式編寫,許多遊戲要透過很多上學期學的程式來完成,一個這麼簡單的遊戲中,程式卻要寫個幾百行,真是讓人覺得又累又煩,可是在按下啟動的那瞬間我覺得非常的興奮,第一次自己做出遊戲,隨然粗糙但是我有花時間在他上面理解要如何製作,就有所謂的成就感,不管它多麼的無聊,只要是你親手去做的你就會感覺到它的趣味,雖然不知道VB在對我往後會不會用到,但是我至少有學到東西,也許我不是電腦設計方面的人,但我可以知道電腦方便的程式是如和製作出來的,人人常說要學會一件事,就得透析他了解他!!
參考文獻 • 1.Visual Basic2010 基礎必修課 碁峰 林義証.蔡文龍、張傑瑞.何叡.吳明哲著 • 2.Visual Basic2010 基礎必修課 CH15教學範例題目