Pada pertemuan kali ini Admin akan berbagi sebuah kode untuk membuat sebuah permainan Game yaitu Game Ular (Snake Game).
Game ini pernah populer di era tahun 90an dan menjadi legenda hingga sekarang. Bagi Anda yang kelahiran tahun 80an game ini udah gak asing lagi, kala itu game ini dapat disewakan dalam bentuk Game Board.
Cara bermain Game ini adalah ular bergerak mencari makanan, pergerakan di kontrol oleh kita dengan menggerakan ular ke arah makanan untuk dimakan, ular akan bertambah panjang jika berhasil memakan makanannya, jika ular ini menabrak dinding atau menabrak dirinya sendiri maka "Game Over".Kecepatan akan bertambah sesuai level, setiap level bernilai 50.
Untuk membuat Game ini sangat mudah, Anda tak perlu pusing-pusing membuat kodenya cukup tinggal copy-paste dalam kode Form General-Declaration.
Sebelum anda mencopy-paste kodenya terlebih dahulu anda wajib membuat form desainnya dengan cara :
'Deklarasi variabel
Const gridSize = 20
Const maxBody = 1000
Dim snakeX(maxBody) As Integer
Dim snakeY(maxBody) As Integer
Dim snakeLength As Integer
Dim dirX As Integer
Dim dirY As Integer
Dim foodX As Integer
Dim foodY As Integer
Dim score As Integer
Dim isGameOver As Boolean
Dim level As Integer
'ketika di load dilayar
Private Sub Form_Load()
Me.ScaleMode = vbPixels
Me.BackColor = vbBlack
Timer1.Interval = 100
Form1.KeyPreview = True
Label1.BackColor = vbBlack
Label1.ForeColor = vbWhite
Label2.BackColor = vbBlack
Label2.ForeColor = vbWhite
Call StartGame
End Sub
'inisial game
Private Sub StartGame()
Dim i As Integer
snakeLength = 3
For i = 0 To snakeLength
snakeX(i) = 20 + (snakeLength - i) * gridSize
snakeY(i) = 20
Next
dirX = gridSize
dirY = 0
score = 0
level = 1
Timer1.Interval = 1500
isGameOver = False
Label1.Caption = "Score : 0"
Label2.Caption = "Level : 1"
Call GenerateFood
Timer1.Enabled = True
End Sub
'membuat makanan ular
Private Sub GenerateFood()
Randomize
foodX = Int(Rnd * (Me.ScaleWidth \ gridSize)) * gridSize
foodY = Int(Rnd * (Me.ScaleHeight \ gridSize)) * gridSize
End Sub
'kontrol arah pada keyboard
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft
If dirX = 0 Then dirX = -gridSize: dirY = 0
Case vbKeyRight
If dirX = 0 Then dirX = gridSize: dirY = 0
Case vbKeyUp
If dirY = 0 Then dirY = -gridSize: dirX = 0
Case vbKeyDown
If dirY = 0 Then dirY = gridSize: dirX = 0
End Select
End Sub
Private Sub Timer1_Timer()
If isGameOver Then Exit Sub
' Gerakkan badan ular
Dim i As Integer
For i = snakeLength To 1 Step -1
snakeX(i) = snakeX(i - 1)
snakeY(i) = snakeY(i - 1)
Next
' Kepala ular
snakeX(0) = snakeX(0) + dirX
snakeY(0) = snakeY(0) + dirY
' Cek tabrakan dengan dinding
If snakeX(0) < 0 Or snakeY(0) < 0 Or _
snakeX(0) >= Me.ScaleWidth Or _
snakeY(0) >= Me.ScaleHeight Then
Call GameOver
Exit Sub
End If
' Cek tabrakan dengan badan sendiri
For i = 1 To snakeLength
If snakeX(0) = snakeX(i) And snakeY(0) = snakeY(i) Then
Call GameOver
Exit Sub
End If
Next
' Cek makan makanan
If snakeX(0) = foodX And snakeY(0) = foodY Then
snakeLength = snakeLength + 1
score = score + 10
Label1.Caption = "Score: " & score
' Tambahkan: cek level
Dim newLevel As Integer
newLevel = (score \ 50) + 1
If newLevel > level Then
level = newLevel
Label2.Caption = "Level: " & level
' Percepat timer (batas minimal 30 ms)
If Timer1.Interval > 30 Then
Timer1.Interval = Timer1.Interval - 10
End If
End If
Call GenerateFood
End If
Me.Cls
Call DrawSnake
Call DrawFood
End Sub
Private Sub DrawSnake()
Dim i As Integer
For i = 0 To snakeLength
Me.ForeColor = vbGreen
Me.FillStyle = vbSolid
Me.Line (snakeX(i), snakeY(i))-Step(gridSize - 1, gridSize - 1), vbGreen, BF
Next
End Sub
Private Sub DrawFood()
Me.ForeColor = vbRed
Me.FillStyle = vbSolid
Me.Line (foodX, foodY)-Step(gridSize - 1, gridSize - 1), vbRed, BF
End Sub
Private Sub GameOver()
Timer1.Enabled = False
isGameOver = True
MsgBox "Game Over! Skor kamu: " & score, vbExclamation, "Ulangi"
Call StartGame ' Untuk restart otomatis
End Sub
Simpan Project Anda, jalankan program dan selamat bermain