[VB遊戲]滑鼠捕捉遊戲
你是否對你控制滑鼠的速度很有自信呢?
想要來挑戰滑鼠速度的極限嗎?
快來使用VB來實現理想吧!
範例檔
【遊戲名稱】滑鼠捕捉遊戲
【遊戲作者】幻嵐
【遊戲下載】
載點已掛,請參考下方程式碼。
製作教學
製作方法很簡單,我們需要的物件有:
- Form x1 :命名為Form1,並把以下物件放置進去。
- Image x1:命名為Image1,並製作控制項陣列(要多少的陣列都可以)。然後再放上小圖片。
- Timer x2:其中一個命名為Timer1,另一個命名為Timer2。Timer1為遊戲的速度(即難度),Timer2為倒數計時器。
- Label x3:其中一個命名為Label1,一個命名為Label2,另一個命名為Label3。它們都是單純顯示文字用的。
- Text x2:其中一個命名為Text1,另一個命名為Text2。Text1顯示遊戲的即時分數,Text2顯示目前遊戲的剩餘時間。
- Command x1:命名為Command1。讓使用者開始遊戲的按鈕。
- Option x3:其中一個命名為Option1,一個命名為Option2,另一個命名為Option3。它們是用來控制遊戲難度的,分別為易、中、難。
將物件都布置好後,就可以開始撰寫程式碼了,程式碼如下,不懂可以看程式註解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
'電腦不難-滑鼠捕捉遊戲1.1.1 'https://it-easy.tw '---請自行設定以下屬性Start--- 'Form1.BorderStyle = 1 'Form1.MinButton = True 'Form1.StartUpPosition = 2 '----請自行設定以下屬性End---- '其餘的表單顏色、圖片、按鈕大小,都請自行設定 '遊戲速度請設定Timer1.Interval的時間間隔,愈短愈快,也愈難,分數也愈高 Dim Score As Integer '紀錄抓到的圖片數量 Dim ClickNum As Integer '紀錄滑鼠點擊落空的次數,這是扣分項目 Private Sub Command1_Click() Command1.Enabled = False '鎖住Command1,讓它不能回應使用者產生的事件 Option1.Enabled = False '鎖住Option1,讓它不能回應使用者產生的事件 Option2.Enabled = False '鎖住Option2,讓它不能回應使用者產生的事件 Option3.Enabled = False '鎖住Option3,讓它不能回應使用者產生的事件 Dim I As Integer 'I為For迴圈的計次變數 For I = 0 To Image1.Count - 1 Image1(I).Visible = True '讓所有圖片都顯示 Image1(I).Enabled = True '讓所有圖片都可以回應使用者產生的事件 Next I Call RandSpot '呼叫RandSpot副程式,調整所有圖片隨機位置 Score = 0 '剛開始的抓到數量為0 ClickNum = 0 '剛開始的無效點擊次數為0 Text1.Text = "0" '將Text1.Text設為0,剛開始的分數為0 Text2.Text = "30" '將Text2.Text設為30,這將會是遊戲的限制時間(秒) If Option1.Value = True Then '難度為"易" Timer1.Interval = 1000 'Timer1時間設定為1000毫秒,此為圖片隨機跑位置的時間間隔,也可以說是遊戲難度(值愈小愈難),建議不要低於500 ElseIf Option2.Value = True Then '難度為"中" Timer1.Interval = 750 'Timer1時間設定為750毫秒,此為圖片隨機跑位置的時間間隔,也可以說是遊戲難度(值愈小愈難),建議不要低於500 Else '難度為"難" Timer1.Interval = 500 'Timer1時間設定為500毫秒,此為圖片隨機跑位置的時間間隔,也可以說是遊戲難度(值愈小愈難),建議不要低於500 End If Timer1.Enabled = True '讓Timer1開始動作 Timer2.Enabled = True '讓Timer2開始動作 End Sub Private Sub Form_Click() '對表單點擊(即捕捉圖片落空)時的事件程序 ClickNum = ClickNum + 1 '點擊次數+1 End Sub Private Sub Form_Load() 'Form1表單載入時的事件程序 '---表單起始設定Start--- Form1.Caption = "滑鼠捕捉遊戲" '表單標題名稱改為"滑鼠捕捉遊戲" Command1.Caption = "開始" '按鈕名稱改為"開始" Command1.ToolTipText = "按這裡開始遊戲" '按鈕註解氣泡文字改為"按這裡開始遊戲" Text1.Text = "0" '將Text1.Text設為0 Text1.Locked = True '鎖住Text1.Text的內容 Text1.Alignment = 2 '將Text1.Text置中對齊 Label1.BackStyle = 0 '將Label1設為透明 Label1.Caption = "分數:" '將Label1.Caption設為"分數:" Label1.AutoSize = True 'Label1能自動調整大小 Text2.Text = "30" '將Text2.Text設為30 Text2.Locked = True '鎖住Text2.Text的內容 Text2.Alignment = 2 '將Text2.Text置中對齊 Label2.AutoSize = True 'Label2能自動調整大小 Label2.BackStyle = 0 '將Label2設為透明 Label2.Caption = "剩餘時間:" '將Label2.Caption設為"剩餘時間:" Label3.AutoSize = True 'Label3能自動調整大小 Label3.BackStyle = 0 '將Label3設為透明 Label3.Caption = "遊戲難度:" '將Label3.Caption設為"遊戲難度:" Option1.BackColor = Form1.BackColor Option2.BackColor = Form1.BackColor Option3.BackColor = Form1.BackColor Option1.Caption = "易" Option2.Caption = "中" Option3.Caption = "難" Timer1.Enabled = False '先讓Timer1停止動作 Timer2.Enabled = False '先讓Timer2停止動作 Timer2.Interval = 1000 'Timer2時間設定為1000毫秒 '---控制物件靠在表單下方Start--- Command1.Top = Form1.ScaleHeight - Command1.Height Command1.Left = Form1.ScaleWidth - Command1.Width Text2.Top = Command1.Top + Command1.Height - Text2.Height Text2.Left = Command1.Left - Text2.Width Label2.Top = Text2.Top - Label2.Height Label2.Left = Text2.Left Text1.Top = Text2.Top + Text2.Height - Text1.Height Text1.Left = Text2.Left - Text1.Width Label1.Top = Label2.Top Label1.Left = Text1.Left Label3.Top = Form1.ScaleHeight - Label3.Height - Option1.Height Label3.Left = 0 Option1.Top = Form1.ScaleHeight - Option1.Height Option2.Top = Form1.ScaleHeight - Option2.Height Option3.Top = Option2.Top Option1.Left = 0 Option2.Left = Option1.Width Option3.Left = Option2.Left + Option2.Width '---控制物件靠在表單下方End--- Dim I As Integer 'I為For迴圈的計次變數 For I = 0 To Image1.Count - 1 Image1(I).Visible = False '讓所有圖片都不顯示 Image1(I).Enabled = False '讓所有圖片都無法回應使用者產生的事件 Next I '----表單起始設定End---- End Sub Private Sub Image1_Click(Index As Integer) '點擊圖片時的事件程序,Index為物件陣列編號 Image1(Index).Enabled = False '讓該Index編號的圖片無法再度回應使用者產生的事件 Image1(Index).Visible = False '讓該Index編號的圖片隱藏起來 Beep '發出嗶嗶聲 Score = Score + 1 '抓到的圖片數量加一個 If ClickNum > 1 Then ClickNum = ClickNum - 1 '無效點擊減一個,做為獎勵,但最低還是保留1 End If Text1.Text = Val(Text1.Text) + Val(Text2.Text) + (1000 Timer1.Interval) * (1000 Timer1.Interval) * (1000 Timer1.Interval) - Int(ClickNum * ClickNum * 0.1 * (1000 Timer1.Interval)) '分數計算隨時間而定,剩餘時間愈多,分數愈高。無效點擊次數愈多,分數愈低,太誇張甚至會倒扣!時間也是一個要素! '---抓到所有圖片Start--- If Score = Image1.Count Then 'Image1.Count為總Image1物件陣列(圖片)數量 Call GameOver '呼叫遊戲結束時的還原動作程序 MsgBox "恭喜您!您已完成這個遊戲,全部的東西都被您的快手抓到囉~!", 64 MsgBox "您的分數為" & Text1.Text & "分!", 64 End If '----抓到所有圖片End---- End Sub Private Sub Timer1_Timer() 'Timer1啟動時的事件程序(控制圖片隨機位置的Timer1) Call RandSpot '呼叫RandSpot副程式,調整所有圖片隨機位置 End Sub Private Sub Timer2_Timer() '剩餘時間倒數計時器 Text2.Text = Val(Text2.Text) - 1 '---時間終止後的對話方塊Start--- If Text2.Text = 0 Then Call GameOver '呼叫遊戲結束時的還原動作程序 MsgBox "時間到!", 64 MsgBox "您的原始分數為" & Text1.Text & "分!", 64 Text1.Text = Val(Text1.Text) - 30 - (ClickNum * ClickNum) MsgBox "要加扣" & 30 + (ClickNum * ClickNum) & "分!所以分數為" & Text1.Text & "分!", 64 End If '----時間終止後的對話方塊End---- End Sub Sub RandSpot() '圖片隨機位置調整副程式 Randomize Timer '時間亂樹種子 Dim I As Integer, K As Integer 'I、K為For迴圈的計次變數 For I = 0 To Image1.Count - 1 Image1(I).Top = Int(Rnd * (Form1.ScaleHeight - Command1.Height - Image1(I).Height)) '設定所有圖片的隨機位置(Top) Image1(I).Left = Int(Rnd * (Form1.ScaleWidth - Command1.Width - Image1(I).Width)) '設定所有圖片的隨機位置(Left) '---圖片重疊判斷Start--- For K = 0 To I - 1 If (((Image1(I).Top > Image1(K).Top And Image1(I).Top < Image1(K).Top + Image1(K).Height) And (Image1(I).Left > Image1(K).Left And Image1(I).Left < Image1(K).Left + Image1(K).Width)) Or ((Image1(K).Top > Image1(I).Top And Image1(K).Top < Image1(I).Top + Image1(I).Height) And (Image1(K).Left > Image1(I).Left And Image1(K).Left < Image1(I).Left + Image1(I).Width))) Or (((Image1(I).Top > Image1(K).Top And Image1(I).Top < Image1(K).Top + Image1(K).Height) And (Image1(K).Left > Image1(I).Left And Image1(K).Left < Image1(I).Left + Image1(I).Width)) Or ((Image1(K).Top > Image1(I).Top And Image1(K).Top < Image1(I).Top + Image1(I).Height) And (Image1(I).Left > Image1(K).Left And Image1(I).Left < Image1(K).Left + Image1(K).Width))) Then '防重疊判斷式,為True則重疊 I = I - 1 '讓I在下次執行For迴圈時也能相同 Exit For '跳出For K迴圈 End If Next K '----圖片重疊判斷End---- Next I End Sub Sub GameOver() '遊戲結束時的還原動作 Timer1.Enabled = False '先讓Timer1停止動作 Timer2.Enabled = False '先讓Timer2停止動作 Dim I As Integer 'I為For迴圈的計次變數 For I = 0 To Image1.Count - 1 Image1(I).Visible = False '讓所有圖片都不顯示 Image1(I).Enabled = False '讓所有圖片都無法回應使用者產生的事件 Next I Command1.Enabled = True '開啟Command1,讓它能回應使用者產生的事件 Option1.Enabled = True '開啟Option1,讓它能回應使用者產生的事件 Option2.Enabled = True '開啟Option2,讓它能回應使用者產生的事件 Option3.Enabled = True '開啟Option3,讓它能回應使用者產生的事件 End Sub |
範例原始專案檔下載:
載點已掛