Membuat Game Ular Lagend dengan Visual Basic .0 (VB6)

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.

Berikut adalah screen shoot dari Game Ular :

Game Ular

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 :
  1. Buka Form vb6 Anda
  2. Tanamkan beberapa control yaitu 2 Label dan 1 Timer (semua control tidak perlu mengatur Propertiesnya)
  3. Desain formnya seperti dibawah ini :
Desain Form

Lalu copykan kode dibawah ini di bagian General Declaration (pastikan kode dalam keadaan bersih) :

'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


No comments: