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 '蘋果座標
- 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 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 + sdir).BackColor = vbBlue Then
- MsgBox ("bite self")
- 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
- 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
- If Int(shead / 19) > Int(apple / 19) And Command1(shead - 19).BackColor <> vbBlue Then
- sdir = -19
- ElseIf Int(shead / 19) < Int(apple / 19) And Command1(shead + 19).BackColor <> vbBlue Then
- sdir = 19
- ElseIf shead Mod 19 > apple Mod 19 And Command1(shead - 1).BackColor <> vbBlue Then
- sdir = -1
- ElseIf shead Mod 19 < apple Mod 19 And Command1(shead + 1).BackColor <> vbBlue Then
- sdir = 1
- End If
- '繪圖,頭前進一格
- Command1(shead).BackColor = vbBlue
- Label2 = Len(snk) '目前蛇的長度
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement