by Adam Konk (1 Submission)
Category: Games
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Wed 15th January 2003
Date Added: Mon 8th February 2021
Rating: (1 Votes)
Mobile skate game code/help
API Declarations
Module
Public SnakeX(1 To 50) As Byte
Public SnakeY(1 To 50) As Byte
Public SnakeDir(1 To 50) As Byte
Public Score(0 To 10) As Integer
Public Rank(0 To 15) As Byte
Public Nom(0 To 15) As String * 3
Public Diff(0 To 15) As Byte
Public Data As String
Public i As Integer
Public i2 As Integer
Public Started As Boolean
Private Sub (name of form)_Change()
Diff(0) = (name of form).Value
Select Case DiffSlide.Value
Case 1 To 3
DiffL.Caption = "Difficulty - " & DiffSlide.Value & " (Easy) "
Case 4 To 7
DiffL.Caption = "Difficulty - " & DiffSlide.Value & " (Medium) "
Case 8 To 10
End Select
End Sub
Main form, directions (The body and tail movements)
1 - the head move direction according to user
2 - the head has certain attributes - position and direction
3 - as the snake moves, these attributes are passed down the snake so that the rest follows on
Public SnakeLength As Byte 'length of snake
Public AppleX As Byte 'position of apple
Public AppleY As Byte
Public PrevHeadDir As Byte 'last direction of head
Public ChangedDir As Boolean 'true if user has changed direction in current iteration of the code
Private Sub Form....(KeyCode As Integer, Shift As Integer)
If ChangedDir Then Exit Sub
PrevHeadDir = SnakeDir(1)
Select Case KeyCode 'change direction
Case vbKeyUp
If SnakeDir(1) = 2 Then
Else
SnakeDir(1) = 10
End If
Case vbKeyRight
If SnakeDir(1) = 3 Then
Else
SnakeDir(1) = 11
End If
Case vbKeyDown
If SnakeDir(1) = 0 Then
Else
SnakeDir(1) = 12
End If
Case vbKeyLeft
If SnakeDir(1) = 1 Then
Else
SnakeDir(1) = 13
End If
End Select
If SnakeDir(1) - 10 = PrevHeadDir Then SnakeDir(1) = PrevHeadDir
ChangedDir = True
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If ChangedDir Then Exit Sub
PrevHeadDir = SnakeDir(1)
Select Case KeyAscii 'change direction
Case 56
If SnakeDir(1) = 2 Then
Else
SnakeDir(1) = 10
End If
Case 54
If SnakeDir(1) = 3 Then
Else
SnakeDir(1) = 11
End If
Case 50
If SnakeDir(1) = 0 Then
Else
SnakeDir(1) = 12
End If
Case 52
If SnakeDir(1) = 1 Then
Else
SnakeDir(1) = 13
End If
End Select
If SnakeDir(1) - 10 = PrevHeadDir Then SnakeDir(1) = PrevHeadDir
ChangedDir = True
End Sub
Private Sub Form_Load()
Randomize Timer
********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************= 4
Next
1 AppleX = Int(Rnd * 10)
AppleY = Int(Rnd * 10)
For i2 = 1 To SnakeLength + 1
If AppleX = SnakeX(i2) Then
If AppleY = SnakeY(i2) Then GoTo 1
End If
Next
If Int(Rnd * 2) = 1 Then
Block(AppleX & AppleY) = AppleG
Else
Block(AppleX & AppleY) = AppleR
End If
ChangedDir = False
MoveT.Enabled = True
End Sub
Private Sub MoveT_Timer() 'move the snake
On Error GoTo Crashed
'clear up tail of snake
If SnakeLength = 49 Then SnakeLength = 48
Block(SnakeX(SnakeLength + 1) & SnakeY(SnakeLength + 1)) = LoadPicture()
Select Case SnakeDir(1)
Case 0 To 3
Block(SnakeX(1) & SnakeY(1)) = Head(SnakeDir(1)) 'move head
Case 10 To 13
Block(SnakeX(1) & SnakeY(1)) = Head(PrevHeadDir) 'move head
End Select
For i = 2 To SnakeLength - 1
Select Case SnakeDir(i)
Case 0: Block(SnakeX(i) & SnakeY(i)) = BodyV
Case 1: Block(SnakeX(i) & SnakeY(i)) = BodyH
Case 2: Block(SnakeX(i) & SnakeY(i)) = BodyV
Case 3: Block(SnakeX(i) & SnakeY(i)) = BodyH
Case 10
Select Case SnakeDir(i + 1)
Case 1
Block(SnakeX(i) & SnakeY(i)) = TurnLU
Case 3
Block(SnakeX(i) & SnakeY(i)) = TurnRU
End Select
Case 11
Select Case SnakeDir(i + 1)
Case 2
Block(SnakeX(i) & SnakeY(i)) = TurnRU
Case 0
Block(SnakeX(i) & SnakeY(i)) = TurnRD
End Select
Case 12
Select Case SnakeDir(i + 1)
Case 1
Block(SnakeX(i) & SnakeY(i)) = TurnLD
Case 3
Block(SnakeX(i) & SnakeY(i)) = TurnRD
End Select
Case 13
Select Case SnakeDir(i + 1)
Case 2
Block(SnakeX(i) & SnakeY(i)) = TurnLU
Case 0
Block(SnakeX(i) & SnakeY(i)) = TurnLD
End Select
End Select
Next
'move tail
Select Case SnakeDir(SnakeLength)
Case 0 To 3: Block(SnakeX(SnakeLength) & SnakeY(SnakeLength)) = Tail(SnakeDir(SnakeLength))
Case 10 To 13: Block(SnakeX(SnakeLength) & SnakeY(SnakeLength)) = Tail(SnakeDir(SnakeLength) - 10)
End Select
For i = SnakeLength + 1 To 2 Step -1 'move rest of snake in memory
SnakeX(i) = SnakeX(i - 1)
SnakeY(i) = SnakeY(i - 1)
SnakeDir(i) = SnakeDir(i - 1)
Next
Select Case SnakeDir(1) 'move head in memory
Case 0: SnakeY(1) = SnakeY(1) - 1
Case 1: SnakeX(1) = SnakeX(1) + 1
Case 2: SnakeY(1) = SnakeY(1) + 1
Case 3: SnakeX(1) = SnakeX(1) - 1
Case 10: SnakeY(1) = SnakeY(1) - 1: SnakeDir(1) = 0
Case 11: SnakeX(1) = SnakeX(1) + 1: SnakeDir(1) = 1
Case 12: SnakeY(1) = SnakeY(1) + 1: SnakeDir(1) = 2
Case 13: SnakeX(1) = SnakeX(1) - 1: SnakeDir(1) = 3
End Select
For i = 2 To SnakeLength
If SnakeX(1) = SnakeX(i) Then
If SnakeY(1) = SnakeY(i) Then GoTo Tangled
End If
Next
If SnakeX(1) = AppleX Then 'place an apple
If SnakeY(1) = AppleY Then
1 AppleX = Int(Rnd * 10)
AppleY = Int(Rnd * 10)
For i2 = 1 To SnakeLength + 1
If AppleX = SnakeX(i2) Then
If AppleY = SnakeY(i2) Then GoTo 1
End If
Next
Score(0) = Score(0) + DiffForm.DiffSlide.Value * 50
Caption = "Snakes 2 - " & Mid(Score(0), 1, Int(Score(0) / 10) + 1) & " Points"
If Int(Rnd * 2) = 1 Then
Block(AppleX & AppleY) = AppleG
Else
Block(AppleX & AppleY) = AppleR
End If
SnakeLength = SnakeLength + 1
End If
End If
ChangedDir = False
Exit Sub
Crashed: 'go here if you crash
MoveT.Enabled = False
ScoreForm.LongL.Visible = False
ScoreForm.WellDoneL.Visible = True
ScoreForm.Visible = True
ScoreForm.Caption = "Game Over "
Exit Sub
Tangled: 'go here if you crash
MoveT.Enabled = False
ScoreForm.LongL.Visible = False
ScoreForm.WellDoneL.Visible = True
ScoreForm.Visible = True
ScoreForm.Caption = "Game Over - Your snake is tied in a not!"
End Sub
The Difficulty form,
Private Sub (form)_Click()
DiffForm.Visible = True
End Sub
Private Sub DiffL_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
StartL.BorderStyle = 0
DiffL.BorderStyle = 1
ScoreL.BorderStyle = 0
QuitL.BorderStyle = 0
End Sub
Private Sub Form_Load()
If Started Then Exit Sub
Started = True
Diff(0) = 5
Nom(0) = InputBox("Enter name, 3 letter max")
On Error GoTo FillIn
Open "C:\Program Files\Snakes" For Input As #1
Close #1
For i = 1 To 10
Rank(i) = i
Next
Close #1
Exit Sub
FillIn: Iserts default names+scores if there is no file to be found
For i = 1 To 10
Select Case i
Case 1: Nom(i) = "AAA"
Case 2: Nom(i) = "BBB"
Case 3: Nom(i) = "CCC"
Case 4: Nom(i) = "DDD"
Case 5: Nom(i) = "EEE"
Case 6: Nom(i) = "FFF"
Case 7: Nom(i) = "GGG"
Case 8: Nom(i) = "HHH"
Case 9: Nom(i) = "III"
Case 10: Nom(i) = "JJJ"
End Select
Score(i) = (11 - i) * 100
Diff(i) = 11 - i
Rank(i) = i
Next
End Sub
Private Sub "Form_Unload(Cancel As Integer)
On Error Resume Next
For i = 1 To 10
Next
Close #1
End Sub
Private Sub QuitL_Click()
Unload MForm
End
End Sub
Private Sub QuitL_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
StartL.BorderStyle = 0
DiffL.BorderStyle = 0
ScoreL.BorderStyle = 0
QuitL.BorderStyle = 1
End Sub
Private Sub ScoreL_Click()
ScoreForm.WellDoneL.Visible = False
ScoreForm.LongL.Visible = True
ScoreForm.Visible = True
End Sub
Private Sub ScoreL_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
StartL.BorderStyle = 0
DiffL.BorderStyle = 0
ScoreL.BorderStyle = 1
QuitL.BorderStyle = 0
End Sub
Private Sub StartL_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
StartL.BorderStyle = 1
DiffL.BorderStyle = 0
ScoreL.BorderStyle = 0
QuitL.BorderStyle = 0
End Sub
Private Sub Form_Load()
GForm.MoveT.Enabled = False 'stop game
If GForm.Visible = True Then InputScore 'put score in top ten
DisplayScores 'show the scores
End Sub
Sub DisplayScores()
Select Case Rank(0) 'depending on the players rank
Case 1
ScoreForm.WellDoneL.Caption = “message and ranking”
Case 2
ScoreForm.WellDoneL.Caption = “message and ranking”
Case 3
ScoreForm.WellDoneL.Caption = “message and ranking”
Case 11
ScoreForm.WellDoneL.Caption = “message and ranking”
Case Else
ScoreForm.WellDoneL.Caption = “message and ranking”
End Select
For i = 1 To 10
ScoreL(i).Caption = i & " - " & Nom(i) & " - Diff " & Diff(i) & " - " & Score(i) & " pts"
Next
ScoreL(0).Caption = Rank(0) & " - " & Nom(0) & " - Diff " & Diff(0) & " - " & Score(0) & " pts"
End Sub
Sub InputScore() 'this sorts out the scores
Rank(0) = 11 'start at bottom of table
Diff(0) = DiffForm.DiffSlide.Value
For i = 1 To 10 'loop through checking when score is beaten
Select Case Score(0)
Case Is > Score(i) 'score is in top ten at rank i
For i2 = 10 To i + 1 Step -1
If i2 = 0 Then GoTo 3
Score(i2) = Score(i2 - 1)
Nom(i2) = Nom(i2 - 1)
Diff(i2) = Diff(i2 - 1)
Rank(i2) = Rank(i2 - 1)
3 Next
Rank(0) = i
Score(i) = Score(0)
Nom(i) = Nom(0)
Diff(i) = Diff(0)
Rank(i) = Rank(0)
GoTo 2
End Select
Next
2 ScoreForm.WellDoneL.Caption = “message and ranking”
Next
End Sub
Private Sub OK_Click()
Unload GForm 'make sure unload event occurs
MForm.Visible = True
ScoreForm.Caption = "Top Scores"
Unload ScoreForm
End Sub
Module
Public SnakeX(1 To 50) As Byte
Public SnakeY(1 To 50) As Byte
Public SnakeDir(1 To 50) As Byte
Public Score(0 To 10) As Integer
Public Rank(0 To 15) As Byte
Public Nom(0 To 15) As String * 3
Public Diff(0 To 15) As Byte
Public Data As String
Public i As Integer
Public i2 As Integer
Public Started As Boolean