membuat tampilan snake yang menarik. Dalam pembuatan game ini digunakan juga, Graphics yang
telah dijelaskan pada artikel sebelumnya. Berikut langkah - langkah pembuatannya :
1. Buat sebuah form untuk form utama di mana permainan berlangsung, dengan tampilan :
Setelah Label score, speed dan lives terdapat label yang terlihat masing - masing
bernama scoreLabel, speedLabel dan livesLabel.
Di dalam Menu File terdapat New Game (shortcut : F2), Exit (shortcut : Alt + F4).
Di dalam Menu Help terdapat Controls (F1), About
2. Setelahnya untuk kode-kode yang digunakan bisa dilihat di bawah beserta keteranganya :
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Drawing.Graphics
Public Class Form1
'Variabel untuk menyimpan nilai, kecepatan dan nyawa
Dim score, speed, live As Integer
'Deklarasi Graphics
Dim g As Graphics
'Array x dan y digunakan untuk menyimpan posisi snake, dimana x(0) dan y(0) merupakan posisi kepala snake
'ukuran maksimum snake = 1000
Dim x(1000), y(1000) As Integer
'ax dan ay digunakan untuk menyimpan perubahan gerak snake
Dim ax, ay As Integer
'aw digunakan untuk menyimpan lebar dari snake
'ah digunakan untuk menyimpan panjang dari snake
'p digunakan untuk menyimpan panjang dari snake
Dim aw, ah, p As Integer
'tx dan ty merupakan posisi dari target
Dim tx, ty As Integer
'tol untuk menyimpan toleransi posisi snake dan target
Dim tol As Integer
Dim flag As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Inisialisasi awal permainan
score = 0
speed = 1
live = 3
scoreLabel.Text = score
speedLabel.Text = speed
livesLabel.Text = live
Button1.Visible = False
Button1.Enabled = False
tol = 10
flag = 0
'Inisialisasi awal snake
x(0) = 350
y(0) = 270
ax = 0
ay = 0
p = 1
aw = 10
ah = 10
'Inisialisasi awal target
Randomize()
tx = Rnd() * 500 + 50 'Random posisi x target dari 50 - 549
ty = Rnd() * 250 + 30 'Random posisi y target dari 30 - 280
'Inisialisasi Graphics
g = Me.CreateGraphics
g.Clear(Me.BackColor)
'Inisialisasi Timer
Timer1.Interval = 100 / speed
Timer1.Enabled = True
End Sub
Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click
'Memberikan informasi pembuat game apabila About diclick
Timer1.Enabled = False
MsgBox("This game is made by Aaron", MsgBoxStyle.Information, "Snake ver. 1.0")
Timer1.Enabled = True
End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
'Bila menu exit diclick, hentikan program
End
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'Mengecek tombol yang ditekan pada Form
'untuk mengetahui kode yang tombol yang ditekan bisa menggunakan perintah di bawah
'MsgBox(e.KeyCode)
'38 adalah keycode untuk tanda atas
'Snake tidak bisa langsung menuju atas dari bawah
If e.KeyCode = 38 And ay = 0 Then
ay = -10
ax = 0
End If
'37 adalah keycode untuk tanda kiri
'Snake tidak bisa langsung menuju kiri dari kanan
If e.KeyCode = 37 And ax = 0 Then
ay = 0
ax = -10
End If
'39 adalah keycode untuk tanda kanan
'Snake tidak bisa langsung menuju kanan dari kiri
If e.KeyCode = 39 And ax = 0 Then
ay = 0
ax = 10
End If
'40 adalah keycode untuk tanda bawah
'Snake tidak bisa langsung menuju bawah dari kiri
If e.KeyCode = 40 And ay = 0 Then
ay = 10
ax = 0
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'Pada saat timer1 berjalan
'Gambar target dengan posisi tx, ty dan ukuran 10 x 10
g.FillEllipse(Brushes.Red, New Rectangle(tx, ty, 10, 10))
'Gambar snake dengan panjang p sesuai posisinya
Dim i As Integer
For i = 0 To p
g.FillRectangle(Brushes.DarkOrange, New Rectangle(x(i), y(i), aw, ah))
Next
'Hapus bagian ekor
g.FillRectangle(Brushes.Black, New Rectangle(x(p), y(p), aw, ah))
'Gambar bagian kepala
g.FillRectangle(Brushes.LightGoldenrodYellow, New Rectangle(x(0), y(0), aw, ah))
'Ubah posisi ekor dari ular mengikuti posisi ekor yang didepannya
For i = p To 1 Step -1
x(i) = x(i - 1)
y(i) = y(i - 1)
Next
'Posisi kepala diubah sesuai perubahan gerakan
x(0) = x(0) + ax
y(0) = y(0) + ay
'Mengecek apakah kepala snake telah mencapai target dengan toleransi posisi tol
If ((x(0) > tx - tol And x(0) < tx + tol) And (y(0) > ty - tol And y(0) < ty + tol)) Then
'Panjang snake bertambah 1
p = p + 1
'Score bertambah 10
score = score + 10
scoreLabel.Text = score
'Hapus target
g.FillEllipse(Brushes.Black, New Rectangle(tx, ty, 10, 10))
'Merandom kembali posisi target
tx = Rnd() * 500 + 50
ty = Rnd() * 250 + 30
'Menambah speed apabila score merupakan kelipatan 100
flag = 0
If (score Mod 100 = 0 And flag = 0) Then
flag = 1
If speed < 10 Then speed = speed + 1
speedLabel.Text = speed
Timer1.Interval = 100 / speed
'Tambah nyawa apabila score merupakan kelipatan 100
live = live + 1
livesLabel.Text = live
End If
End If
'Mengecek apakah snake melewati batas
If (x(0) < 0 Or x(0) > 685 Or y(0) < 0 Or y(0) > 485) Then
p = 1
x(0) = 350
y(0) = 270
ax = 0
ay = 0
live = live - 1
livesLabel.Text = live
g.Clear(Color.Black)
g.FillRectangle(Brushes.LightGoldenrodYellow, New Rectangle(x(0), y(0), aw, ah))
End If
'Mengecek apakah snake menabrak ekornya atau tidak
For i = 2 To p
If (x(0) = x(i) And y(0) = y(i)) Then
p = 1
x(0) = 350
y(0) = 270
ax = 0
ay = 0
live = live - 1
livesLabel.Text = live
g.Clear(Color.Black)
g.FillRectangle(Brushes.LightGoldenrodYellow, New Rectangle(x(0), y(0), aw, ah))
Exit For
End If
Next
'Mengecek jika nyawa sudah habis
If live = 0 Then
scoreLabel.Text = ""
speedLabel.Text = ""
livesLabel.Text = ""
g.Clear(Color.Black)
Timer1.Enabled = False
MsgBox("Game OVER !!" & vbNewLine & "Your Score is : " & score, MsgBoxStyle.OkOnly, "Snake ver. 1.0")
Button1.Visible = True
Button1.Enabled = True
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Ubah warna latar menjadi hitam
Me.BackColor = Color.Black
'Ubah warna setiap label dalam panel menjadi putih
For Each Label In Panel1.Controls
Label.ForeColor = Color.White
Next
End Sub
Private Sub NewGameToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewGameToolStripMenuItem.Click
Dim ans
Timer1.Enabled = False
ans = MsgBox("Are you really sure want to start a new game ?", MsgBoxStyle.YesNo, "Snake ver. 1.0")
If ans = vbYes Then
scoreLabel.Text = ""
speedLabel.Text = ""
livesLabel.Text = ""
g.Clear(Color.Black)
Button1.Visible = True
Button1.Enabled = True
Else
Timer1.Enabled = True
End If
End Sub
End Class
3. Apabila anda ingin mencoba game snake yang telah jadi ini langsung, bisa di download di:
http://www.mediafire.com/download.php?pv15gkd6lfaz65n