Pada program sebelumnya ogut hanya membuat IL seolah-olah muncul dari langit secara mendadak. Untuk versi kedua game ini ogut menambahkan pesawat untuk menjatuhkan IL, agar penampilan game menjadi lebih nyata dan lebih menarik.
Dengan penambahan pesawat ini berarti cara mengaktifkan IL berbeda dengan proses sebelumnya. Posisi pesawat harus sama dengan posisi IL pada saat IL diaktifkan/dijatuhkan.
15.1 Tekstur Pesawat
Dengan penambahan pesawat berarti ada penambahan tekstur pada program game ini, dan untuk membuat game tetap sederhana dan mudah dimodifikasi pesawat yang menjatuhkan IL hanya bergerak dari arah kanan ke arah kiri.
Public Function Load_All_texture() As Boolean
...
...
...
'tekstur pesawat IL(image)
If Not Create_Texture(Text_planeIL_I, _
"\Texture\Item_Logistik\pesawatIL_i.bmp") Then
Load_All_texture = False
Exit Function
End If
'tekstur pesawat IL(mask)
If Not Create_Texture(Text_planeIL_M, _
"\Texture\Item_Logistik\pesawatIL_m.bmp") Then
Load_All_texture = False
Exit Function
End If
'jika semua berjalan baik return true
Load_All_texture = True
End Function
15.2 Membuat Pesawat
Dengan penambahan objek pesawat cara untuk mengaktifkan IL mengalami perubahan, sebelumnya posisi IL diacak pada saat akan diaktifkan, setelah penambahan pesawat hal ini tidak dilakukan lagi, karena posisi pesawat yang menentukan di mana IL akan dijatuhkan.
Untuk mengaktifkan pesawat yang membawa IL ogut memakai timer yang sama dengan versi sebelumnya yaitu, Timer_Isi_IL.
Pada sub Load_GO_Timer ogut menambahkan timer untuk kecepatan laju pesawat IL.
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
'Timer laju pesawat IL
MaxT_PlaneIL = 50
MinT_PlaneIL = 10
Timer_PlaneIL = MaxT_PlaneIL
BedaT_PlaneIL = (MaxT_PlaneIL - MinT_PlaneIL) _
/ MaxT_Level
End Sub
Dan setiap kali level meningkat maka timer pesawat untuk menjatuhkan IL dan timer kecepatan laju pesawat dipercepat dengan sub di bawah.
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
'update timer laju pesawat IL
Timer_PlaneIL = Timer_PlaneIL - BedaT_PlaneIL
End If
End Sub
Pada sub Render_Objek Anda harus mengubah isi kondisi If mengaktifkan IL menjadi mengaktifkan pesawat IL.
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
'Pesawat IL
If My_Timer(Timer_Isi_IL) Then
Aktifkan_PlaneIL
End If
For i = 0 To Max_IL - 1
Move_IL i
Onil_Tangkap_IL i
Display_IL i
Next
Move_PlaneIL
Display_PlaneIL
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
15.3 Aktifkan Pesawat
Dengan penggunaan timer pesawat yang membawa IL bisa diaktifkan sesuai dengan keinginan Anda.
Public Sub Aktifkan_PlaneIL()
'posisi awal pesawat
'(berada di luar screen game)
PlaneIL.X1 = 850
PlaneIL.Y1 = 800
PlaneIL.X2 = 1050
PlaneIL.Y2 = PlaneIL.Y1
PlaneIL.X3 = PlaneIL.X2
PlaneIL.Y3 = PlaneIL.Y1 + 100
PlaneIL.X4 = PlaneIL.X1
PlaneIL.Y4 = PlaneIL.Y3
'timer kecepatan laju pesawat
PlaneIL.GO_Timer.TDelay = Timer_PlaneIL
PlaneIL.GO_Timer.TGetFirst = True
'baris paling atas
PlaneIL.IB_M = 0
'kolom pertama diisi di luar matriks
PlaneIL.IK_M = Kolom_M + 4
'random posisi kolom untuk menjatuhkan IL
'(pada posisi kolom ini
'pesawat akan menjatuhkan IL)
Randomize
Random_IK_M = Int((Kolom_M * Rnd) + 0)
'nilai pergeseran pesawat terhadap sumbu X
'(dibuat sama dengan nilai pergeseran Onil)
PlaneIL.dGeserX = 50
PlaneIL.Active_Flag = 1
End Sub
Untuk membuat pesawat bergerak dari kanan ke kiri ogut menggunakan sub di bawah, harus diingat pergerakan pesawat tetap berdasarkan matriks 70x29 dan jika posisi pesawat telah berada di luar screen game, pesawat harus dinonaktifkan.
Public Sub Move_PlaneIL()
If PlaneIL.Active_Flag = 0 Then
Exit Sub
End If
If My_Timer(PlaneIL.GO_Timer) Then
'geser posisi pesawat ke arah kiri
PlaneIL.X1 = PlaneIL.X1 - PlaneIL.dGeserX
PlaneIL.X2 = PlaneIL.X2 - PlaneIL.dGeserX
PlaneIL.X3 = PlaneIL.X3 - PlaneIL.dGeserX
PlaneIL.X4 = PlaneIL.X4 - PlaneIL.dGeserX
'indeks kolom matriks berubah karena
'pesawat bergerak ke kiri
PlaneIL.IK_M = PlaneIL.IK_M - 1
If PlaneIL.IK_M = Random_IK_M Then
'jatuhkan IL, karena posisi pesawat
'tepat di kolom hasil random tempat IL
'harus dijatuhkan
Aktifkan_IL
End If
End If
If PlaneIL.X2 < -Xmax Then
'jika posisi pesawat keluar dari screen game
'maka pesawat dinonaktifkan
PlaneIL.Active_Flag = 0
End If
End Sub
15.4 Aktifkan Item Logistik
Cara untuk mengaktifkan IL sedikit mengalami perubahan tetapi di sisi pemrograman cara itu tidak sulit, Anda tinggal mengganti cara mengisi indeks kolom matriks dengan nilai kolom tempat pesawat akan menjatuhkan IL.
Public Sub Aktifkan_IL()
Dim i As Integer
Dim temp_KM As Integer
For i = 0 To Max_IL - 1
If IL(i).Active_Flag = 0 Then
'posisikan IL di tengah sumbu Y
IL(i).X1 = -Int(LebarP_IL / 2)
IL(i).Y1 = 750
IL(i).X2 = Int(LebarP_IL / 2)
IL(i).Y2 = 750
IL(i).X3 = IL(i).X2
IL(i).Y3 = 750 + TinggiP_IL
IL(i).X4 = IL(i).X1
IL(i).Y4 = 750 + TinggiP_IL
'jarak untuk menggeser IL sesuai
'dengan sumbu X atau Y
IL(i).dGeserX = 50
IL(i).dGeserY = 20
'indeks baris matriks diisi dengan
'baris paling atas
IL(i).IB_M = 0
'indeks kolom matriks diisi
'berdasarkan posisi pesawat pada saat
'menjatuhkan IL
IL(i).IK_M = Random_IK_M
''''''''''''''''''''''''''''''''''''''''''
'Update posisi IL sesuai dengan nilai IK_M
''''''''''''''''''''''''''''''''''''''''''
'nilai tengah kolom matriks
temp_KM = Int((Kolom_M - 1) / 2)
If IL(i).IK_M <> temp_KM Then
If temp_KM > IL(i).IK_M Then
'di sebelah kiri sumbu Y
temp_KM = temp_KM - IL(i).IK_M
'geser posisi IL ke kiri
IL(i).X1 = IL(i).X1 - _
(temp_KM * IL(i).dGeserX)
IL(i).X2 = IL(i).X2 - _
(temp_KM * IL(i).dGeserX)
IL(i).X3 = IL(i).X3 - _
(temp_KM * IL(i).dGeserX)
IL(i).X4 = IL(i).X4 - _
(temp_KM * IL(i).dGeserX)
Else
'di sebelah kanan sumbu Y
temp_KM = IL(i).IK_M - temp_KM
'geser posisi IL ke kanan
IL(i).X1 = IL(i).X1 + _
(temp_KM * IL(i).dGeserX)
IL(i).X2 = IL(i).X2 + _
(temp_KM * IL(i).dGeserX)
IL(i).X3 = IL(i).X3 + _
(temp_KM * IL(i).dGeserX)
IL(i).X4 = IL(i).X4 + _
(temp_KM * IL(i).dGeserX)
End If
End If
'isi Index_Texture secara acak
Randomize
IL(i).Index_Texture = Int((Max_IL_V * Rnd) + 0)
'Timer IL untuk jatuh diatur disini
'makin kecil nilai TDelay maka makin
'cepat IL turun ke bawah
IL(i).GO_Timer.TDelay = Timer_IL_Jatuh
IL(i).GO_Timer.TGetFirst = True
IL(i).Score = 50
IL(i).Active_Flag = 1
IL(i).Red_Flag = 0
'sound IL jatuh
Play_Sound1
'proses aktifkan IL selesai,
'maka keluar dari looping
Exit For
End If
Next
End Sub
15.5 Menampilkan Pesawat
Tehnik untuk menampilkan pesawat tetap menggunakan tehnik masking seperti objek-objek yang lain.
Public Sub Display_PlaneIL()
'Pesawat IL yang aktif yang bisa
'ditampilkan
If PlaneIL.Active_Flag = 0 Then
Exit Sub
End If
glEnable GL_BLEND
glBlendFunc GL_DST_COLOR, GL_ZERO
glBindTexture GL_TEXTURE_2D, Text_planeIL_M
glBegin bmPolygon
glTexCoord2f 0#, 0
glVertex2i PlaneIL.X1, PlaneIL.Y1
glTexCoord2f 1#, 0
glVertex2i PlaneIL.X2, PlaneIL.Y2
glTexCoord2f 1#, 1#
glVertex2i PlaneIL.X3, PlaneIL.Y3
glTexCoord2f 0#, 1#
glVertex2i PlaneIL.X4, PlaneIL.Y4
glEnd
glBlendFunc GL_ONE, GL_ONE
glBindTexture GL_TEXTURE_2D, Text_planeIL_I
glBegin bmPolygon
glTexCoord2f 0#, 0
glVertex2i PlaneIL.X1, PlaneIL.Y1
glTexCoord2f 1#, 0
glVertex2i PlaneIL.X2, PlaneIL.Y2
glTexCoord2f 1#, 1#
glVertex2i PlaneIL.X3, PlaneIL.Y3
glTexCoord2f 0#, 1#
glVertex2i PlaneIL.X4, PlaneIL.Y4
glEnd
glDisable GL_BLEND
End Sub
Salam Jack Onil
Heriady
heriady.yoh@gmail.com
Artikel terkait
Membuat Game dengan VB 6
|
Tidak ada komentar:
Posting Komentar