南台科技大學 機械工程系 車輛一甲 學號:4A115029 學生:黃信成 老師:謝慶存 計算機程式及實習 題目:拉霸遊戲機 南台科技大學 機械工程系 車輛一甲 學號:4A115029 學生:黃信成 老師:謝慶存
拉霸遊戲機 拉霸遊戲機,是以投注籌碼至遊戲機中進行的小遊戲,一般市面上的拉霸機多為九個圖示的,但由於九個圖示的拉霸機製作上較為三個圖式的複雜,因此我自製了一個三個圖示的簡易拉霸機。
系統功能說明 拉霸遊戲機遊戲規則: 1. 開始時需先設定本次投注數量,按拉桿圖示即開始玩拉霸機。若投注量為0或投注量超過你擁有的總數量,即顯示對話方塊,告知您「投注有誤」無法玩拉霸機。 2. 若允許投注時,此時拉霸機開始轉動且表單上的三個圖片方塊控制項中,每個控制項會以亂數方式由四張圖中任選一張顯示。
中獎條件如下: 若得到3個 圖,則投注量得到20倍。 若得到3個 圖,則投注量得到10倍。 若得到3個 圖,則投注量得到5倍。 若得到3個 圖,則投注量不增加,但 可獲得鎮店之寶,『寫真集乙本』。
系統分析 1.此遊戲機需要先設計一張背景圖當表單背景,在表單建立三個圖片方塊,一個標籤控制項用來顯示目前可投注總數量和一個數字按鈕控制項。 2. 建立拉霸機上的三個圖示時,為方便用迴圈來讀取圖片,需將表單的三個圖片方塊設成控制項陣列,將圖片檔的檔名改成連續的數字。建立一個PictureBox圖片方塊,元素為p(0)、p(1)、p(2)、p(3),將pic1~pic3三個圖片控制項指定給p(1)~p(3),即可透過p(1)~p(3)來操作pic1~pic3三個圖片方塊控制項的相關屬性。
3. 當拉霸機啟動時,Timer1 計時器的Tick事件即開始計時,在指定時間內pic1~pic3 三張圖片控制項分別以亂數方式由 0~3 3.當拉霸機啟動時,Timer1 計時器的Tick事件即開始計時,在指定時間內pic1~pic3 三張圖片控制項分別以亂數方式由 0~3.jpg 四張圖片中任意選取一張來顯示。為讓拉霸機上的三張圖片有滾動感覺,因此設定每隔 0.1 秒重新亂數取圖一次,連續20次才停止計時,必須宣告t成員變數,當計時器執行一次時t變數累加1,當 t=20,計時器即停止且t變數馬上還原為 0。
介面設計 三個編輯圖示: Pic1 Pic2 pic3 按鍵: picBtn 總數量: lblSum 投注量: nudQty
遊戲介紹、說明 若抽到777,即顯示『您中獎了!投注量X 20』,此時若你的投注量為1則你的總數量將會而外增加20 (1 x 20 =20)。
若抽到3個錢袋,系統即顯示『您中獎了!投注量X 10』,此時若你的投注量為1則你的總數量將會而外增加10 (1 x 10 =10)。
若抽到3個爆炸的圖案,系統即顯示『您中獎了!投注量X 5』,此時若你的投注量為1則你的總數量將會而外增加5 (1 x 5 =5)。
若抽到3張 圖,系統即顯示『恭喜您!!獲得鎮店之寶寫真集乙本 』,此時若你的總數量並不會因為投注量的多寡而做任何改變。
程式碼設計、解說 Dim p(3) As PictureBox 宣告p(0)~p(3)的PictureBox陣列,可用來存放0.jpg~3.jpg Dim num(3) As Integer 宣告num(0)~num(3)的整數陣列,用來存放0~3的數值 Dim t As Integer 宣告t用來計算Timer1共執行幾次 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 表單載入時執行Form1_Load事件處理程序 Me.AutoSizeMode = Windows.Forms.AutoSizeMode.GrowAndShrink 使表單無法被調整大小 picBtn.Image = New Bitmap("up.jpg") 使picBtn顯示up.jpg picBtn.SizeMode = PictureBoxSizeMode.StretchImage 使載入的圖片隨picBtn大小伸縮
p(1) = pic1 將pic1指定給p(1) p(2) = pic2 將pic2指定給p(2) p(3) = pic3 將pic3指定給p(3) For i As Integer = 1 To p.GetUpperBound(0) p(i).Image = Image.FromFile("0.jpg") p(i).SizeMode = PictureBoxSizeMode.Zoom Next 使用迴圈使pic1~pic3顯示0.jpg圖 Timer1.Interval = 100 使Timer1計時器每0.1秒執行一次 LblSum.Text = 100 可投注的總數量lblSum為100 End Sub Private Sub picBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picBtn.Click 按下picBtn鈕時會執行picBtn_Click事件處理函式
If nudQty. Value > 0 And nudQty. Value <= lblSum If nudQty.Value > 0 And nudQty.Value <= lblSum.Text Then 判斷 投注量nudQty.Value是否大於0,且投注量nudQty.Value是否大於可投注總數量lblSum.Text Timer1.Enabled = True 計時器Timer1啟動 lblSum.Text = Val(lblSum.Text) - nudQty.Value 可投注量減掉本次的的投注題 nudQty.Enabled = False 無法投注 picBtn.Image = New Bitmap("down.jpg") 使picBtn顯示down.jpg picBtn.Enabled = False picBtn圖片按鈕失效 Else MsgBox("投注有誤") 若投注量小於0且投注量大於可投注的總數量,則顯示『投注有誤』 End If End Sub
Private Sub Timer1_Tick(ByVal sender As System Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 當Timer1啟動時,每0.1秒皆會執行Timer1_Tick事件處理程序一次 Dim r As New Random 建立亂數物件r For i As Integer = 1 To p.GetUpperBound(0) 使用迴圈讓pic1~pic3每次執行皆亂數的方式顯示0.jpg~3.jpg num(i) = r.Next(0, 4) 產生 0~3 的亂數並指定給 n(1)~n(3) p(i).Image = Image.FromFile(num(i).ToString & ".jpg") 使pic1~pic3以亂數的方式顯示 0.jpg~3.jpg Next t += 1 If t = 20 Then 當計時器執行20次時,即馬上判斷是否中獎 Timer1.Enabled = False 計時器Timer1停止 nudQty.Enabled = True 可以開始投注
picBtn.Enabled = True picBtn圖形按鈕可啟用 If num(1) = 0 And num(2) = 0 And num(3) = 0 Then lblSum.Text = (Val(lblSum.Text) + (nudQty.Value * 5)).ToString MsgBox("中獎了! 投注量*20") 當num(1)=0且num(2)=0且num(3)=0表示pic1~pic3三個圖示皆是7的圖案,MsgBox顯示『您中獎了! 投注量 X 20』 ElseIf num(1) = 1 And num(2) = 1 And num(3) = 1 Then MsgBox("您中獎了! 投注量 X 5") 當num(1)=0且num(2)=0且num(3)=1表示pic1~pic3三個圖示皆是爆炸的圖案,MsgBox顯示『您中獎了! 投注量 X 5』 ElseIf num(1) = 2 And num(2) = 2 And num(3) = 2 Then lblSum.Text = (Val(lblSum.Text) + (nudQty.Value * 10)).ToString MsgBox("您中獎了! 投注量 X 10") 當num(1)=0且num(2)=0且num(3)=2表示pic1~pic3三個圖示皆是錢袋的圖案,MsgBox顯示『您中獎了! 投注量 X 10』
ElseIf num(1) = 3 And num(2) = 3 And num(3) = 3 Then lblSum ElseIf num(1) = 3 And num(2) = 3 And num(3) = 3 Then lblSum.Text = (Val(lblSum.Text) + (nudQty.Value * 0)).ToString MsgBox("恭喜您!! 獲得鎮店之寶寫真集乙本") 當num(1)=0且num(2)=0且num(3)=3表示pic1~pic3三個圖示皆是女生的圖案,MsgBox顯示『恭喜您!! 獲得鎮店之寶寫真集乙本』 End If picBtn.Image = New Bitmap("up.jpg") 使picBtn顯示up.jpg t = 0 End Sub End Class
心得感言 以前從來沒有自己寫過完整的程式,尤其是自己做一個遊戲!這對我來說真的會要了我的命,在做之前一直覺得自己肯定做不出來,可能要找個人代工之類的,但後來想想,閒著也是閒著不如來做做看,如果真的做不出來再找人代工就好啦,所以就開始試著自己摸索,剛開始真的會有些困擾,主題、程式編寫甚至是自製拉霸機的背景……等都讓我傷透了腦筋,不過還好網路發達,讓我找到了許多的資料供我參
考,不然我想我肯定做不出來的。 這次能自己成功設計出這個遊戲真的要感謝幫我助我的同學,讓我知道我的程式在哪些地方出了問題,也要謝謝老師在這一學期教了我們許多程式的寫法,說真的如果認真的上這門課,你會發現其實這門課也是挺有趣的。
參考資料 Yahoo奇摩-圖片 Yahoo奇摩-知識家 Visual Basic 2010基礎必修課 認真上課的自己、幫助我的同學