Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dim snk As String '記錄蛇身體所有的位置
- Dim sdir As Integer '行進方向
- Dim shead As Integer '頭的座標
- Dim apple As Integer '蘋果座標
- Dim obstacle As Integer
- Private Sub Form_Load()
- For i = 0 To 360
- If i > 0 Then
- Load Command1(i) 'load可以動態產生物件
- If i Mod 19 = 0 Then
- Command1(i).Left = Command1(0).Left
- Command1(i).Top = Command1(i - 9).Top + Command1(i).Height
- Else
- Command1(i).Left = Command1(i - 1).Left + Command1(i - 1).Width
- Command1(i).Top = Command1(i - 1).Top
- End If
- End If
- If i Mod 2 = 0 Then
- Command1(i).BackColor = RGB(115, 167, 12)
- Else
- Command1(i).BackColor = RGB(162, 209, 73)
- End If
- ' Command1(i).Caption = i
- Command1(i).Visible = True
- Next
- For i = 0 To 18
- Command1(i).BackColor = vbBlack
- Next
- For i = 342 To 360
- Command1(i).BackColor = vbBlack
- Next
- For i = 0 To 342 Step 19
- Command1(i).BackColor = vbBlack
- Next
- For i = 18 To 360 Step 19
- Command1(i).BackColor = vbBlack
- Next
- End Sub
- Private Sub NewApple()
- apple = -1
- Do
- x = Int(Rnd * 361)
- If Command1(x).BackColor <> vbBlack And Command1(x).BackColor <> vbBlue Then
- apple = x
- End If
- Loop Until apple <> -1
- Command1(apple).BackColor = vbRed
- Command1(apple).Picture = Image2
- End Sub
- Private Sub NewObstacle()
- obstacle = -1
- Do
- y = Int(Rnd * 361)
- If Command1(y).BackColor <> vbBlack And Command1(y).BackColor <> vbBlue And y <> apple And Command1(y).BackColor <> RGB(30, 30, 30) Then
- obstacle = y
- End If
- Loop Until obstacle <> -1
- Command1(obstacle).BackColor = RGB(30, 30, 30)
- End Sub
- Private Sub Label1_Click()
- Command1(175).BackColor = vbBlue
- Command1(176).BackColor = vbBlue
- Command1(177).BackColor = vbBlue
- snk = ChrW(175) & ChrW(176) & ChrW(177)
- sdir = 1 '一開始預設向右
- shead = 177 '一開始預設蛇首117
- NewApple
- Timer1.Interval = 400
- End Sub
- '第一題,完成方向鍵
- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
- If KeyCode = vbKeyUp Then
- sdir = -19
- ElseIf KeyCode = vbKeyDown Then
- sdir = 19
- ElseIf KeyCode = vbKeyLeft Then
- sdir = -1
- ElseIf KeyCode = vbKeyRight Then
- sdir = 1
- End If
- End Sub
- Private Sub Timer1_Timer()
- shead = shead + sdir
- '第二題,撞牆
- If Command1(shead).BackColor = vbBlack Then
- MsgBox "hit wall, game over"
- Timer1.Interval = 0
- End If
- '第二題,咬到自己
- If Command1(shead).BackColor = vbBlue Then
- MsgBox ("bite self")
- Timer1.Interval = 0
- End If
- If Command1(shead).BackColor = RGB(30, 30, 30) Then
- MsgBox ("hit obstacle, game over")
- Timer1.Interval = 0
- End If
- '第三題,吃蘋果len+1
- '更新snk座標,
- '如果吃到蘋果,長度+1,留住最後一截尾巴,
- '若沒吃到,消掉最後一截尾巴
- If shead = apple Then
- Command1(apple).Picture = LoadPicture()
- If apple Mod 2 = 0 Then
- Command1(apple).BackColor = RGB(115, 167, 12)
- Else
- Command1(apple).BackColor = RGB(162, 209, 73)
- End If
- snk = snk & ChrW(apple)
- NewApple
- NewObstacle
- Else
- '先記錄尾巴座標
- stail = AscW(Mid(snk, 1, 1))
- snk = Mid(snk, 2, Len(snk)) & ChrW(shead) 'snk削掉尾巴最後一格
- '繪圖,snk削掉尾巴最後一格,還是要符合馬賽克磚
- i = stail
- If i Mod 2 = 0 Then
- Command1(i).BackColor = RGB(115, 167, 12)
- Else
- Command1(i).BackColor = RGB(162, 209, 73)
- End If
- End If
- '繪圖,頭前進一格
- Command1(shead).BackColor = vbBlue
- Label2 = Len(snk) '目前蛇的長度
- If Label2 >= 15 Then
- Timer1.Interval = 150
- ElseIf Label2 >= 10 Then
- Timer1.Interval = 200
- ElseIf Label2 >= 5 Then
- Timer1.Interval = 300
- End If
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement