[VB遊戲]滑鼠捕捉遊戲

你是否對你控制滑鼠的速度很有自信呢?

想要來挑戰滑鼠速度的極限嗎?

快來使用VB來實現理想吧!

範例檔

【遊戲名稱】滑鼠捕捉遊戲

【遊戲作者】幻嵐

【遊戲下載】

載點已掛,請參考下方程式碼。

遊戲畫面:
sshot-1

sshot-2

製作教學

製作方法很簡單,我們需要的物件有:

  • 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
'http://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

範例原始專案檔下載:

載點已掛

文章分類:VB6.0|標籤:, ,

迴響已關閉