(postingan ke-100)
13.1 Mempercepat Timer
Salah satu yang harus ditambahkan ke dalam game yang Anda buat adalah mempercepat timer. Hal ini harus dilakukan untuk game yang bertipe seperti ini agar dapat memacu pemain sehingga tidak membuat pemain bosan.
Untuk mempercepat timer ogut memerlukan tiga variabel utama.
'timer utama
Public MaxT_Level As Long
Public MinT_Level As Long
Public Timer_Level As Object_Timer
Public Sub Load_Timer_Level()
MaxT_Level = 20 'level tertinggi jangan ganjil
MinT_Level = 1 'level terendah(tidak boleh nol)
'===================================
Timer_Level.TDelay = 15000 '15 detik
Timer_Level.TGetFirst = True
'===================================
End Sub
Timer_Level berguna agar setiap 15 detik kecepatan game bertambah satu tingkat(level).
Level atau tingkat ogut bagi menjadi 20, setiap 15 detik variabel MinT_Level ditambah dengan nilai 1, proses penambahan ini berlangsung terus sampai MinT_Level bernilai 20.
Setiap penambahan MinT_Level akan memicu timer lain untuk lebih cepat, timer lain yang ogut maksud adalah timer untuk menjatuhkan item logistik, timer agar item logistik jatuh lebih cepat, dan terakhir timer agar Onil bergerak ke kiri dan ke kanan lebih cepat.
Untuk menghitung agar masing-masing timer meningkat caranya tidak sulit, Anda tinggal mengurangi nilai maksimal timer dengan nilai minimal lalu dibagi dengan banyaknya level. Karena ada proses pembagian ogut menyarankan agar level adalah bilangan bulat genap dan tidak boleh bernilai 0(nol).
Berikut ini ogut lampirkan cara untuk membuat timer semakin cepat.
Public Sub Load_GO_Timer()
'timer aktifkan IL
MaxT_Isi_IL = 8000 'waktu terlama 8000
MinT_Isi_IL = 1000 'waktu tersingkat
BedaT_Isi_IL = (MaxT_Isi_IL - MinT_Isi_IL) _
/ MaxT_Level
Timer_Isi_IL.TDelay = MaxT_Isi_IL
Timer_Isi_IL.TGetFirst = True
'timer IL jatuh
MaxT_IL_Jatuh = 200
MinT_IL_Jatuh = 10
Timer_IL_Jatuh = MaxT_IL_Jatuh
BedaT_IL_Jatuh = (MaxT_IL_Jatuh - MinT_IL_Jatuh) _
/ MaxT_Level
'Timer Onil LR
MaxT_OnilLR = 50
MinT_OnilLR = 10
Timer_OnilLR = MaxT_OnilLR
BedaT_OnilLR = (MaxT_OnilLR - MinT_OnilLR) _
/ MaxT_Level
End Sub
Public Sub Level_Meningkat()
If MinT_Level < MaxT_Level Then
MinT_Level = MinT_Level + 1
'update timer IL muncul ke layar(isi IL)
Timer_Isi_IL.TDelay = Timer_Isi_IL.TDelay - _
BedaT_Isi_IL
'update timer kecepatan jatuh IL
'(Timer_IL_jatuh dipakai pada sub
'Aktifkan_IL)
Timer_IL_Jatuh = Timer_IL_Jatuh - _
BedaT_IL_Jatuh
'update timer Onil bergerak
Timer_OnilLR = Timer_OnilLR - BedaT_OnilLR
Onil_TimerLR.TDelay = Timer_OnilLR
End If
End Sub
Lalu pada sub Render_Objek ogut sisipkan sebuah kondisi If seperti ini.
Private Sub Render_Objek()
Dim i As Integer
glClear clrColorBufferBit Or _
clrDepthBufferBit
glLoadIdentity
'Timer Level
If My_Timer(Timer_Level) Then
Level_Meningkat
End If
Display_BG
'Item Logistik
If My_Timer(Timer_Isi_IL) Then
Aktifkan_IL
End If
For i = 0 To Max_IL - 1
Move_IL i
Onil_Tangkap_IL i
Display_IL i
Next
Display_Onil
Display_Score
Display_Angka -500, 850, Jack_Onil.Jack_Onil.Score
Display_Life
Display_Angka 600, 850, Jack_Onil.Jack_Onil.Life
End Sub
13.2 Score dan Life
Untuk membuat pemain mudah melihat status pada saat pemain sedang memainkan game alangkah baiknya jika score dan jumlah life(nyawa) yang dimiliki pemain ditampilkan di screen game.
Untuk membuat score dan life ogut telah mengajarkan trik dan tehnik di bab-bab sebelumnya sehingga ogut tidak akan membahas lagi, ogut hanya akan melampirkan sub atau fungsi yang terkait dengan proses di atas agar Anda lebih mudah mempelajarinya.
Public Function Load_All_texture() As Boolean
...
...
...
'tekstur score dan Life
If Not Create_Texture(Text_Score_I, _
"\Texture\Score_Life\Score_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Score_M, _
"\Texture\Score_Life\Score_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Life_I, _
"\Texture\Score_Life\Life_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Life_M, _
"\Texture\Score_Life\Life_m.bmp") Then
Load_All_texture = False
Exit Function
End If
'tekstur angka 0 s/d 9
If Not Create_Texture(Text_Angka_I(0), _
"\Texture\Score_Life\0_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(1), _
"\Texture\Score_Life\1_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(2), _
"\Texture\Score_Life\2_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(3), _
"\Texture\Score_Life\3_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(4), _
"\Texture\Score_Life\4_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(5), _
"\Texture\Score_Life\5_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(6), _
"\Texture\Score_Life\6_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(7), _
"\Texture\Score_Life\7_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(8), _
"\Texture\Score_Life\8_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_I(9), _
"\Texture\Score_Life\9_i.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(0), _
"\Texture\Score_Life\0_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(1), _
"\Texture\Score_Life\1_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(2), _
"\Texture\Score_Life\2_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(3), _
"\Texture\Score_Life\3_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(4), _
"\Texture\Score_Life\4_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(5), _
"\Texture\Score_Life\5_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(6), _
"\Texture\Score_Life\6_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(7), _
"\Texture\Score_Life\7_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(8), _
"\Texture\Score_Life\8_m.bmp") Then
Load_All_texture = False
Exit Function
End If
If Not Create_Texture(Text_Angka_M(9), _
"\Texture\Score_Life\9_m.bmp") Then
Load_All_texture = False
Exit Function
End If
'jika semua berjalan baik return true
Load_All_texture = True
End Function
Public Sub Display_Angka(PosX_P As Integer, _
PosY_P As Integer, _
Angka_P As Long)
Dim i As Integer
Dim Str_Angka As String
Dim Temp_Angka As String
Dim Len_Str As Integer
Str_Angka = Trim(Str(Angka_P))
Len_Str = Len(Str_Angka)
For i = 1 To Len_Str
'ambil 1 karakter paling kiri
'dari String_Angka
Temp_Angka = Left(Str_Angka, 1)
'tampilkan Temp_Angka ke layar
Angka_Masking PosX_P + (i - 1) * 50, _
PosY_P, _
Val(Temp_Angka)
'Buang 1 karakter paling kiri dari string
Str_Angka = Right(Str_Angka, _
Len(Str_Angka) - 1)
Next
End Sub
Public Sub Angka_Masking(PosX_P As Integer, _
PosY_P As Integer, _
Angka_P As Integer)
glEnable GL_BLEND
glBlendFunc GL_DST_COLOR, GL_ZERO
glBindTexture GL_TEXTURE_2D, _
Text_Angka_M(Angka_P)
glBegin bmPolygon
glTexCoord2f 0#, 0
glVertex2i PosX_P, PosY_P
glTexCoord2f 1#, 0
glVertex2i PosX_P + 50, PosY_P
glTexCoord2f 1#, 1#
glVertex2i PosX_P + 50, PosY_P + 100
glTexCoord2f 0#, 1#
glVertex2i PosX_P, PosY_P + 100
glEnd
glBlendFunc GL_ONE, GL_ONE
glBindTexture GL_TEXTURE_2D, _
Text_Angka_I(Angka_P)
glBegin bmPolygon
glTexCoord2f 0#, 0
glVertex2i PosX_P, PosY_P
glTexCoord2f 1#, 0
glVertex2i PosX_P + 50, PosY_P
glTexCoord2f 1#, 1#
glVertex2i PosX_P + 50, PosY_P + 100
glTexCoord2f 0#, 1#
glVertex2i PosX_P, PosY_P + 100
glEnd
glDisable GL_BLEND
End Sub
Public Sub Display_Score()
glEnable GL_BLEND
glBlendFunc GL_DST_COLOR, GL_ZERO
glBindTexture GL_TEXTURE_2D, Text_Score_M
glBegin bmPolygon
glTexCoord2f 0#, 0: glVertex2i -750, 850
glTexCoord2f 1#, 0: glVertex2i -550, 850
glTexCoord2f 1#, 1#: glVertex2i -550, 950
glTexCoord2f 0#, 1#: glVertex2i -750, 950
glEnd
glBlendFunc GL_ONE, GL_ONE
glBindTexture GL_TEXTURE_2D, Text_Score_I
glBegin bmPolygon
glTexCoord2f 0#, 0: glVertex2i -750, 850
glTexCoord2f 1#, 0: glVertex2i -550, 850
glTexCoord2f 1#, 1#: glVertex2i -550, 950
glTexCoord2f 0#, 1#: glVertex2i -750, 950
glEnd
glDisable GL_BLEND
End Sub
Public Sub Display_Life()
glEnable GL_BLEND
glBlendFunc GL_DST_COLOR, GL_ZERO
glBindTexture GL_TEXTURE_2D, Text_Life_M
glBegin bmPolygon
glTexCoord2f 0#, 0: glVertex2i 350, 850
glTexCoord2f 1#, 0: glVertex2i 550, 850
glTexCoord2f 1#, 1#: glVertex2i 550, 950
glTexCoord2f 0#, 1#: glVertex2i 350, 950
glEnd
glBlendFunc GL_ONE, GL_ONE
glBindTexture GL_TEXTURE_2D, Text_Life_I
glBegin bmPolygon
glTexCoord2f 0#, 0: glVertex2i 350, 850
glTexCoord2f 1#, 0: glVertex2i 550, 850
glTexCoord2f 1#, 1#: glVertex2i 550, 950
glTexCoord2f 0#, 1#: glVertex2i 350, 950
glEnd
glDisable GL_BLEND
End Sub
13.3 Efek Suara
Hal ini jangan sampai terlupakan, karena suatu game akan bertambah nilainya jika diberi efek suara.
Pemrograman untuk efek suara tidak akan ogut bahas disini, karena ogut sudah menerangkan di bab terdahulu dan ogut yakin Anda tidak akan menemui kesulitan untuk membuat efek suara di Visual Basic.
Salam Jack Onil
Heriady
heriady.yoh@gmail.com
Artikel terkait
Membuat Game dengan VB 6
|
Tidak ada komentar:
Posting Komentar