• Tidak ada hasil yang ditemukan

BAB IV : IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

4.1.2 Pengkodean

Pada subbab ini penulis akan menjelaskan potongan-potongan dari kode sumber (source code) aplikasi permainan komputer dengan karakter kapal perang. Kode sumber untuk aplikasi permainan tersebut dibangun dengan menggunakan bahasa pemrograman Visual Basic versi 6.0.

Pada setiap potongan kode program untuk menampilkan gambar ke layar permainan akan terdapat kode program berawalan BitBlt (kepanjangan dari Bit Block Transfer). Kode program ini merupakan bagian dari fungsi Win32 API yang digunakan untuk menggambar dan memanipulasi gambar yang akan ditampilkan di layar permainan. Fungsi BitBlt tersebut sering digunakan untuk menghasilkan animasi yang cepat dan halus. Fungsi BitBlt harus dideklarasikan terlebih dahulu seperti berikut ini:

Declare Function BitBlt Lib ”gdi32” (ByVal hDestDC as long, ByVal x as long, ByVal y as long, ByVal nWidth as long, ByVal nHeight as long, ByVal hSrcDC as long, ByVal xSrc as long, ByVal ySrc as long, ByVal dwRop as long) as long

Fungsi BitBlt tersebut di atas pertama kali menspesifikasikan area yang menjadi tujuan penggambaran yang ditunjukkan oleh kode ByVal hDestDC as long,

misalnya tujuan penggambaran tersebut adalah sebuah kontrol PictureBox pada Visual Basic versi 6.0. Kemudian koordinat kiri atas gambar diletakkan pada PictureBox tersebut yang ditunjukkan oleh kode ByVal x as long, ByVal y as long. Kemudian ditentukan panjang dan lebar gambar yang akan ditampilkan ditunjukkan oleh kode ByVal nWidth as long, ByVal nHeight as long. Selanjutnya spesifikasikan area sumber gambar, yang ditunjukkan oleh kode ByVal hSrcDC as long, dan tentukan koordinat kiri atas dari gambar yang diambil dari gambar sumber yang ditunjukkan oleh kode ByVal xSrc as long, ByVal ySrc as long. Yang terakhir adalah spesifikasikan cara kita menempatkan gambar tersebut (dalam Visual Basic disebut dengan raster operation, telah dibahas pada Bab II), ditunjukkan oleh kode ByVal dwRop as long.

Contoh penggunaan dari deklarasi fungsi BitBlt tersebut di atas adalah sebagai berikut:

BitBlt area_pic.hDC, 0, 0, BACKGROUNDWIDTH, BACKGROUNDHEIGHT, _ background_pic.hDC, 0, 0, vbSrcCopy

Aplikasi permainan komputer dengan karakter kapal perang (Battleship) dibangun dengan menyatukan beberapa unsur permainan seperti yang telah diuraikan pada tahap analisis pada Bab III. Berikut ini adalah potongan-potongan kode program dari elemen penyusun aplikasi permainan tersebut:

1. Potongan kode program untuk tampilan jenis-jenis gambar kapal perang, yang terdiri dari Battleship, Cruiser, Submarine, Destroyer Kode 4.1 memperlihatkan pengkodean untuk jenis kapal perang Battleship.

Kode 4.1. Potongan kode program menggambar kapal Battleship

Pada kode 4.1, baris pertama merupakan awal permulaan fungsi bernama draw_battleship. Baris ke 2 adalah komentar. Baris ke 3 hingga baris ke 4 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian belakang kapal. Baris ke 5 hingga baris ke 6 adalah fungsi Win32 API untuk menampilkan gambar sumber bagian belakang kapal ke layar permainan. Baris ke 7 hingga baris ke 8 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian badan kapal1. Baris ke 9 hingga baris ke 10 adalah fungsi Win32 API untuk menampilkan gambar sumber bagian badan kapal1 ke layar permainan. Baris ke 11 hingga baris ke 12 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian badan kapal2. Baris ke 13 hingga baris ke 14 adalah fungsi Win32 API untuk menampilkan gambar sumber bagian badan kapal2 ke layar permainan. Baris ke 15 hingga baris ke 16 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian depan kapal. Baris ke 17 hingga baris ke 18 adalah fungsi Win32 API untuk menampilkan

1 Sub draw_battleship()

2 ' prosedur menggambar kapal perang

3 BitBlt picCurrent.hDC, 0, 0, tile.ScaleWidth,

4 tile.ScaleHeight, shipLeftEndMask.hDC, 0, 0, vbSrcAnd 5 BitBlt picCurrent.hDC, 0, 0, tile.ScaleWidth,

6 tile.ScaleHeight, shipLeftEnd.hDC, 0, 0, vbSrcPaint 7 BitBlt picCurrent.hDC, 30, 0, tile.ScaleWidth, 8 tile.ScaleHeight, shipMid1Mask.hDC, 0, 0, vbSrcAnd 9 BitBlt picCurrent.hDC, 30, 0, tile.ScaleWidth, 10 tile.ScaleHeight, shipMid1.hDC, 0, 0, vbSrcPaint 11 BitBlt picCurrent.hDC, 60, 0, tile.ScaleWidth, 12 tile.ScaleHeight, shipMid2Mask.hDC, 0, 0, vbSrcAnd 13 BitBlt picCurrent.hDC, 60, 0, tile.ScaleWidth, 14 tile.ScaleHeight, shipMid2.hDC, 0, 0, vbSrcPaint 15 BitBlt picCurrent.hDC, 90, 0, tile.ScaleWidth,

16 tile.ScaleHeight, shipRightEndMask.hDC, 0, 0, vbSrcAnd 17 BitBlt picCurrent.hDC, 90, 0, tile.ScaleWidth,

18 tile.ScaleHeight, shipRightEnd.hDC, 0, 0, vbSrcPaint 19 End Sub

gambar sumber bagian depan kapal ke layar permainan. Baris ke 19 adalah akhir dari sub prosedur tersebut.

Kode 4.2. Potongan kode program menggambar kapal Cruiser

Pada kode 4.2, baris pertama merupakan awal permulaan fungsi bernama draw_cruiser. Baris ke 2 adalah komentar. Baris ke 3 hingga baris ke 4 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian belakang kapal. Baris ke 5 hingga baris ke 6 adalah fungsi Win32 API untuk menampilkan gambar sumber bagian belakang kapal ke layar permainan. Baris ke 7 hingga baris ke 8 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian badan kapal1. Baris ke 9 hingga baris ke 10 adalah fungsi Win32 API untuk menampilkan gambar sumber bagian badan kapal1 ke layar permainan. Baris ke 11 hingga baris ke 12 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian depan kapal. Baris ke 13 hingga baris ke 14 adalah fungsi Win32 API untuk menampilkan gambar sumber bagian depan kapal ke layar permainan. Baris ke 15 adalah akhir dari sub prosedur tersebut.

1 Sub draw_cruiser()

2 ' prosedur menggambar kapal penjelajah

3 BitBlt picCurrent.hDC, 0, 0, tile.ScaleWidth,

4 tile.ScaleHeight, shipLeftEndMask.hDC, 0, 0, vbSrcAnd 5 BitBlt picCurrent.hDC, 0, 0, tile.ScaleWidth,

6 tile.ScaleHeight, shipLeftEnd.hDC, 0, 0, vbSrcPaint 7 BitBlt picCurrent.hDC, 30, 0, tile.ScaleWidth, 8 tile.ScaleHeight, shipMid1Mask.hDC, 0, 0, vbSrcAnd 9 BitBlt picCurrent.hDC, 30, 0, tile.ScaleWidth, 10 tile.ScaleHeight, shipMid1.hDC, 0, 0, vbSrcPaint 11 BitBlt picCurrent.hDC, 60, 0, tile.ScaleWidth,

12 tile.ScaleHeight, shipRightEndMask.hDC, 0, 0, vbSrcAnd 13 BitBlt picCurrent.hDC, 60, 0, tile.ScaleWidth,

14 tile.ScaleHeight, shipRightEnd.hDC, 0, 0, vbSrcPaint 15 End Sub

Kode 4.3. Potongan kode program menggambar kapal Submarine

Pada kode 4.3, baris pertama merupakan awal permulaan fungsi bernama draw_submarine. Baris ke 2 adalah komentar. Baris ke 3 hingga baris ke 4 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian belakang kapal. Baris ke 5 hingga baris ke 6 adalah fungsi Win32 API untuk menampilkan gambar sumber bagian belakang kapal ke layar permainan. Baris ke 7 hingga baris ke 8 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber bagian depan kapal. Baris ke 9 hingga baris ke 10 adalah fungsi Win32 API untuk menampilkan gambar sumber bagian depan kapal ke layar permainan. Baris ke 11 adalah akhir dari sub prosedur tersebut.

Kode 4.4. Potongan kode program menggambar kapal Destroyer

Pada kode 4.4, baris pertama merupakan awal permulaan fungsi bernama draw_submarine. Baris ke 2 adalah komentar. Baris ke 3 hingga baris ke 4 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber. Baris ke 5 hingga baris ke 6 adalah fungsi Win32 API untuk menampilkan gambar sumber ke layar permainan. Baris ke 7 adalah akhir dari sub prosedur tersebut.

1 Sub draw_submarine()

2 ' prosedur menggambar kapal selam

3 BitBlt picCurrent.hDC, 0, 0, tile.ScaleWidth,

4 tile.ScaleHeight, shipLeftEndMask.hDC, 0, 0, vbSrcAnd 5 BitBlt picCurrent.hDC, 0, 0, tile.ScaleWidth,

6 tile.ScaleHeight, shipLeftEnd.hDC, 0, 0, vbSrcPaint 7 BitBlt picCurrent.hDC, 30, 0, tile.ScaleWidth,

8 tile.ScaleHeight, shipRightEndMask.hDC, 0, 0, vbSrcAnd 9 BitBlt picCurrent.hDC, 30, 0, tile.ScaleWidth,

10 tile.ScaleHeight, shipRightEnd.hDC, 0, 0, vbSrcPaint 11 End Sub

1 Sub draw_destroyer()

2 ' prosedur menggambar kapal penghancur

3 BitBlt picCurrent.hDC, 0, 0, tile.ScaleWidth,

4 tile.ScaleHeight, shipSingleHorMask.hDC, 0, 0, vbSrcAnd 5 BitBlt picCurrent.hDC, 0, 0, tile.ScaleWidth,

6 tile.ScaleHeight, shipSingleHor.hDC, 0, 0, vbSrcPaint 7 End Sub

2. Potongan kode program untuk memainkan suara efek.

Suara efek ledakan akan diperdengarkan ketika permainan sedang berlangsung. Potongan kode program untuk memainkan suara efek ditunjukkan oleh Kode 4.5.

Kode 4.5. Potongan kode program mainkan suara efek

Pada Kode 4.5, baris pertama merupakan awal permulaan fungsi bernama playsound. Baris ke 2 adalah komentar. Baris ke 3 adalah panggil fungsi Win32 API untuk menangani suara dan tentukan letak berkas suara tersebut secara fisik. Baris ke 4 adalah akhir dari fungsi playsound.

1 Public Function playsound(file As String)

2 ' fungsi memainkan efek suara tembakan dan ledakan 3 sndPlaySound(App.Path & "\bang.wav", SND_ASYNC) 4 End Function

3. Potongan kode program timer animasi

Timer animasi dimainkan ketika permainan sedang berlangsung. Potongan kode program untuk mengaktifkan timer miss ditunjukkan oleh Kode 4.6.

Kode 4.6. Potongan kode program timer animasi miss

Pada Kode 4.6, baris pertama menunjukkan permulaan private sub prosedur bernama missAnim_timer. Baris ke 2 adalah komentar. Baris ke 3 hingga baris ke 5 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber.. Baris ke 5 adalah akhir dari sub prosedur tersebut.

1 Private Sub missAnim_Timer()

2 'prosedur menghidupkan timer animasi miss

3 BitBlt field2.hDC, curX * 30, curY * 30, 30, 30, 4 waterAnim.hDC, frameNum * 30, 0, vbSrcAnd

Kode 4.7. Potongan kode program timer animasi ledakan

Pada Kode 4.7, baris pertama menunjukkan permulaan private sub prosedur bernama hitAnim_timer. Baris ke 2 adalah komentar. Baris ke 3 hingga baris ke 4 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber.. Baris ke 5 hingga baris ke 6 adalah fungsi Win32 API untuk menampilkan gambar sumber ke layar permainan Baris ke 7 adalah akhir dari sub prosedur tersebut.

Kode 4.8. Potongan kode program timer animasi api

Pada Kode 4.8, baris pertama menunjukkan permulaan private sub prosedur bernama fireAnim_timer. Baris ke 2 adalah komentar. Baris ke 3 hingga baris ke 5 adalah fungsi Win32 API untuk menampilkan Mask dari gambar sumber.. Baris ke 6 hingga baris ke 8 adalah fungsi Win32 API untuk menampilkan gambar sumber ke layar permainan Baris ke 7 adalah akhir dari sub prosedur tersebut.

1 Private Sub hitAnim_Timer()

2 'prosedur menghidupkan timer animasi ledakan 3 BitBlt field2.hDC, curX * 30, curY * 30, 30, 30, 4 hitMask.hDC, frameNum * 32, 0, vbSrcAnd

5 BitBlt field2.hDC, curX * 30, curY * 30, 30, 30, hit.hDC, 6 frameNum * 32, 0, vbSrcPaint

7 End Sub

1 Private Sub fireAnim_Timer()

2 'prosedur menghidupkan timer animasi api

3 BitBlt field1.hDC, zone1flame(i).x * 30, zone1flame(i).y * 4 30, 30, 30, fireMask.hDC, zone1flame(i).frame * 30, 0, 5 vbSrcAnd

6 BitBlt field1.hDC, zone1flame(i).x * 30, zone1flame(i).y * 7 30, 30, 30, fire.hDC, zone1flame(i).frame * 30, 0,

8 vbSrcPaint 9 End Sub

Dokumen terkait