Game Snake: Permainan ular yang memakan makanan dengan visual basic 6
Membuat game Snake di Visual Basic 6 memerlukan pengaturan grid, kontrol ular yang bergerak, dan makanan yang diacak. Berikut adalah langkah-langkah membuatnya:
1. Membuat Proyek Baru
- Buka Visual Basic 6, buat proyek baru dengan template Standard EXE.
- Tambahkan komponen berikut ke form:
- PictureBox untuk area bermain →
picGame
- Timer untuk mengatur kecepatan permainan →
tmrGame
- Label untuk menampilkan skor →
lblScore
- Button untuk memulai ulang →
btnStart
- PictureBox untuk area bermain →
2. Desain Form
- Atur ukuran form untuk area bermain (misalnya, 400x400 piksel untuk
picGame
). - Tetapkan properti berikut:
tmrGame.Interval = 200
(atur kecepatan awal).picGame.BorderStyle = 1
(agar memiliki batas).
3. Kode Program
Berikut adalah kode untuk logika permainan:
Option Explicit
' Variabel global
Dim snake() As PictureBox ' Array untuk bagian tubuh ular
Dim direction As String ' Arah pergerakan ("Up", "Down", "Left", "Right")
Dim food As PictureBox ' Objek makanan
Dim score As Integer ' Skor permainan
Private Sub Form_Load()
'Set txtBox = Form1.Controls.Add("vB.Textbox", "txtTextBox")
' Inisialisasi awal
ReDim snake(0) ' Ular diawali dengan satu bagian
Set snake(0) = CreateSnakePart(100, 100) ' Bagian pertama ular
direction = "Right" ' Arah awal
score = 0
lblScore.Caption = "Score: " & score
' Buat makanan
Set food = CreateFood()
End Sub
Private Function CreateSnakePart(x As Integer, y As Integer) As PictureBox
' Membuat bagian tubuh ular
Dim part As VB.PictureBox ' PictureBox
Set part = Me.Controls.Add("VB.PictureBox", "SnakePart" & UBound(snake))
With part
.Width = picTemplate.Width
.Height = picTemplate.Height
.BackColor = vbGreen
.Left = x
.Top = y
.Visible = True
End With
Set CreateSnakePart = part
End Function
Private Function CreateFood() As PictureBox
' Membuat makanan di posisi acak
Randomize Timer
Dim f As PictureBox
Set f = Controls.Add("VB.PictureBox", "Food")
With f
.Width = picTemplate.Width
.Height = picTemplate.Height
.BackColor = vbRed
.Left = GetRandomNumber(1000, 5000) 'Int((picGame.ScaleWidth - .Width) * Rnd / 20) * 20
.Top = GetRandomNumber(500, 2500) 'Int((picGame.ScaleHeight - .Height) * Rnd / 20) * 20
.Visible = True
End With
Set CreateFood = f
End Function
Function GetRandomNumber(Minimum As Integer, Maksimum As Integer) As Integer
GetRandomNumber = Int((Maksimum - Minimum + 1) * Rnd) + Minimum
End Function
Private Sub tmrGame_Timer()
' Menggerakkan ular
Dim i As Integer
Dim nextX As Integer, nextY As Integer
' Tentukan posisi berikutnya kepala ular
nextX = snake(0).Left
nextY = snake(0).Top
Select Case direction
Case "Up": nextY = nextY - 100
Case "Down": nextY = nextY + 100
Case "Left": nextX = nextX - 100
Case "Right": nextX = nextX + 100
End Select
' Periksa apakah ular menabrak dinding atau dirinya sendiri
If nextX < 0 Or nextY < 0 Or nextX >= Me.Width Or nextY >= Me.Height Then
GameOver
Exit Sub
End If
For i = 1 To UBound(snake)
If snake(i).Left = nextX And snake(i).Top = nextY Then
GameOver
Exit Sub
End If
Next i
' Periksa apakah ular memakan makanan
If Tabrakan(food.Left, food.Top, nextX, nextY) Then
score = score + 10
lblScore.Caption = "Score: " & score
' Tambahkan bagian tubuh baru
ReDim Preserve snake(UBound(snake) + 1)
Set snake(UBound(snake)) = CreateSnakePart(snake(UBound(snake) - 1).Left, snake(UBound(snake) - 1).Top)
' Buat makanan baru
Me.Controls.Remove food
Set food = CreateFood()
End If
' Pindahkan bagian tubuh ular
For i = UBound(snake) To 1 Step -1
snake(i).Left = snake(i - 1).Left
snake(i).Top = snake(i - 1).Top
Next i
snake(0).Left = nextX
snake(0).Top = nextY
End Sub
Private Sub GameOver()
' Mengakhiri permainan
tmrGame.Enabled = False
MsgBox "Game Over! Skor Anda: " & score
End Sub
Private Sub Mulai()
' Mulai ulang permainan
Dim i As Integer
For i = 1 To UBound(snake)
Me.Controls.Remove snake(i)
Next i
ReDim snake(0)
Set snake(0) = CreateSnakePart(100, 100)
direction = "Right"
score = 0
lblScore.Caption = "Score: " & score
Me.Controls.Remove food
Set food = CreateFood()
tmrGame.Enabled = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' Mengatur arah berdasarkan tombol panah
Select Case KeyCode
Case vbKeyUp: If direction <> "Down" Then direction = "Up"
Case vbKeyDown: If direction <> "Up" Then direction = "Down"
Case vbKeyLeft: If direction <> "Right" Then direction = "Left"
Case vbKeyRight: If direction <> "Left" Then direction = "Right"
Case 13: Mulai
End Select
End Sub
Private Function Tabrakan(kirimakanan, atasmakanan, kiriular, atasular) As Boolean
Dim BatasKiri As Integer, BatasKanan As Integer, BatasAtas As Integer, BatasBawah As Integer
BatasAtas = atasmakanan - 5
BatasBawah = atasmakanan + food.Height + 5
BatasKiri = kirimakanan - 5
BatasKanan = kirimakanan + food.Width + 5
If kiriular + snake(0).Width >= kirimakanan And kiriular < BatasKanan Then
If atasular + snake(0).Height > BatasAtas And atasular < BatasBawah Then
Tabrakan = True
End If
End If
End Function
Komentar
Posting Komentar