iii juni13.pdfjurnal ilmiah universitas satya negara indonesia vol.6, no.1 juni 2013 hal.:48-61 v...
Post on 28-Dec-2020
2 Views
Preview:
TRANSCRIPT
Jurnal Ilmiah Universitas Satya Negara Indonesia Vol.6, No.1 Juni 2013 Hal.:48-61 ii
Jurnal Ilmiah Universitas Satya Negara Indonesia Vol.6, No.1 Juni 2013 Hal.:48-61 iii
JURNAL ILMIAH SATYA NEGARA INDONESIA merupakan Jurnal Ilmiah
yang menyajikan artikel original tentang pengetahuan dan informasi penelitian
atau aplikasi penelitian dan pengembangan terkini yang berhubungan dengan
bidang yang ada di Universitas Satya Negara Indonesia yang memiliki empat
Fakultas yaitu Fakultas Teknik, Fakultas Perikanan dan Ilmu Kelautan, Fakultas
Ekonomi dan Fakultas Ilmu Sosial dan Ilmu Politik. Jurnal ini merupakan sarana
publikasi dan ajang berbagi karya riset dan pengembangannya di Universitas
Satya Negara Indonesia (USNI).
Pemuatan artikel di Jurnal ini dapat dikirim ke alamat Penerbit. Informasi lebih
lengkap untuk pemuatan artikel dan petunjuk penulisan artikel tersedia pada
halaman terakhir yakni pada Pedoman Penulisan Jurnal Ilmiah atau dapat dibaca
pada setiap terbitan. Artikel yang masuk akan melalui proses seleksi editor atau
mitra bestari.
Jurnal ini terbit secara berkala sebanyak dua kali dalam setahun yakni Juni dan
Desember. Pemuatan naskah tidak dipungut biaya. Jurnal Ilmiah Satya Negara
Indonesia merupakan peningkatan dari Jurnal USNI sebelumnya.
Alamat Penerbit / Redaksi
Lembaga Penelitian dan Pengabdian pada Masyarakat (LPPM)
Universitas Satya Negara Indonesia
Jl. Arteri Pondok Indah No.11 Kebayoran Lama Utara
Jakarta Selatan 12240 – Indonesia
Telp. (021) 7398393/7224963. Hunting, Fax 7200352/7224963
Homepage : http://www.usni.ac.id
E-mail : lppm@usni.ac.id
Frekuensi Terbit
2 kali setahun : Juni dan Desember
Jurnal Ilmiah Universitas Satya Negara Indonesia Vol.6, No.1 Juni 2013 Hal.:48-61 iv
Vol. 6 No. 1 Juni 2013 ISSN : 1979-5246
JURNAL ILMIAH
SATYA NEGARA INDONESIA
Pelindung
Prof. Dr. Lijan P. Sinambela, MM, M.Pd
(Rektor)
Penanggung Jawab
Dr. Yusriani Sapta Dewi, MSi
(Ketua LPPM)
Penasehat
Prof. Dr. Ir. Supriyono Eko Wardoyo, M.Aq
Dewan Redaksi
Prof. Dr. Ir. Wilson H. Limbong, M.S
Ir. Semuel AM. Littik, M.Sc, Ph.D
Dr. Ir. Jupiter Sitorus, M.Eng
Dr. Ir. Mustahal, M.Sc
Dr. Yusriani Sapta Dewi, M.Si
Ir. Urip Rahmani, M.Si
Meifida Ilyas, SE, M.Si
Ir. Nunung Nurhayati, M.Si
Mitra Bestari
Prof. Dr. Irwan Abdullah, M.Sc (UGM)
Prof. Dr. Ronald Z. Titahelu, SH, M.S (UNPATTI)
Prof. Dr. Ir. Rosmawati Paranginangin, M.S (Balai Riset DKP)
Dr. Dedi Setia Permana, M.Sc (LIPI)
Penyunting Pelaksana
Istiqomah Sumadikarta, ST. M.Kom
Supriadi, ST.
Jurnal Ilmiah Universitas Satya Negara Indonesia Vol.6, No.1 Juni 2013 Hal.:48-61 v
DAFTAR ISI
Perancangan Situs Jejaring Sosial Fakultas Teknologi Informatika dan
Komputer Universitas Mpu Tantular 1-11
Berlin P. Sitorus dan Henny Dwi Indrayati
Kepuasan Pasien di Rumah Sakit Yadika Pondok Bambu Jakarta Timur 12-20
Bertha Komala Sinambela
Kajian Manfaat Penetapan Kawasan Konservasi Terhadap Periklanan
Tangkap di Kelurahan Panggang Kepulauan Seribu 21-26
Mercy Patanda
Rancangan Lengan Robot Menggunakan Motor Stepper Berbasis Komputer 27-33
Pertumpun Gurusinga dan Musa Arianto Noho
Working Capital and Profitability in Agriculture Sector 34-37
Samuel Dossugi
Kecenderungan Headline Tabloid Media Umati 38-47
Sandra Olifia dan Fajar El Pradianto
Analisa dan Perancangan Aplikasi Game Battleship Berbasis
Local Area Network 48-61
Sukarno Bahat Nauli
Analisis Bioekonomi Ikan Tuna Indonesia 62-69
Urip Rahmani
Petroleum - Contaminated Soil Treatment By Bioremediation 70-78
Yusriani Sapta Dewi dan Abdul Mujib
Jurnal Ilmiah Universitas Satya Negara Indonesia Vol.6, No.1 Juni 2013 Hal.:48-61 vi
ANALISIS DAN PERANCANGAN APLIKASI GAME BATTLESHIP
BERBASIS LOCAL AREA NETWORK Sukarno Bahat Nauli
Program Studi Teknik Informatika Universitas Satya Negara Indonesia
sukarnobahat3@yahoo.co.id
Abstrak
Jaringan komputer adalah komputer yang dihubungkan satu sama lain dengan pusat komputer (server) untuk
memungkinkan pengguna hardware dan software bersama-sama. Pemain sering menggunakan sistem
jaringan komputer sehingga game dapat dimainkan oleh beberapa orang menggunakan beberapa komputer
yang terhubung dalam Local Area Network.
Salah satu game komputer yang cukup menarik adalah game battleship. Game ini menyediakan beberapa
petak tempat penyusunan kapal sebagai medan perang. Kapal-kapal denagn ukuran yang berbeda disiapkan
agar player menyusun strategi untuk peletakan kapalnya. Kapal perang ini tidak terlihat pada komputer
lawan. Setiap pemain mencoba untuk menghancurkan kapal-kapal perang lawan pemain dengan mengklik
kotak-kotak yang dianggap sebagai lokasi kapal, pemain hanya dapat menembak sekali per giliran. Jika
tembakan mengenai sasaran maka pemain mendapatkan satu tembakan tambahan. Pemain yang masih
menyisakan kapal perang yang memenangkan permainan (game). Agar game battleship lebih menarik dan
menantang logika permainan, maka level permainan harus lebih tinggi. Permainan lebih menantang jika
ruang kosong lebih banyak sehingga Pemain menggunakan logika untuk mencari tempat keberadaan kapal-
kapal tersebut . Berdasarkan uraian di atas, penulis bermaksud untuk merancang game battleship dengan
level yang lebih tinggi dan dapat dimainkan pada jaringan.
Kata Kunci : Jaringan Komputer, Game Battleship, Level.
Abstract
Computer networks are computers that are connected to each other with a central computer (server) to allow
the user hardware and software together. Players often use the computer network system so that games can
be played by multiple people using multiple computers connected in a Local Area Network.
One computer game that is quite interesting is the battleship game. This game provides some plots where the
preparation of the ship as a battlefield. Denagn ships of different sizes are prepared in order to develop a
strategy for the player laying ship. This warship is not visible on the computer opponent. Each player tries to
destroy warships opponent player by clicking on the boxes that are considered as the location of the ship, the
player can only shoot once per turn. If a shot on target then the player gets one extra shot. Players that still
leaves warship that won the game (games). In order battleship game more interesting and challenging logic
game, then the game should be higher level. The game is more challenging if more space so that players use
logic to find a place where the ships were. Based on the above, the author intends to design a battleship
game with a higher level and can be played on the network.
Keywords: Computer Networking, Game Battleship, Level.
PENDAHULUAN Game Battleship atau sering juga disebut Bimaru ataupun Solitaire Battleships, adalah sebuah teka-
teki logika yang didasarkan pada permainan tebak Battleship. Game Battleship ini diciptakan di Argentina
oleh Jaime Poniachik dan dipublikasikan untuk pertama kalinya pada tahun 1982 di majalah “Humor &
Juegos”. Battleship mendapatkan popularitasnya setelah debut internasionalnya pada kompetisi teka-teki
dunia yang pertama (World Puzzle Championship) di kota New York pada tahun 1992.
Game Battleship pada umumnya berisi 10 x10 kotak persegi yang berisi armada kapal yang
tersembunyi. Beberapa bagian kapal pun dapat diberikan pada awal permainan di tempat yang bermacam-
macam di kotak-kotak persegi. Tujuan permainan adalah untuk menemukan letak semua armada kapal di
kotak-kotak persegi.
Game Battleship merepresentasikan sebuah laut dengan armada kapal-kapal yang tersembunyi, yang
mungkin saja memiliki orientasi peletakan horizontal ataupun vertikal di dalam kotak-kotak persegi. Game
Battleship juga memiliki ketentuan lainnya, yaitu tidak ada kapal yang menyentuh satu sama lainnya dan
juga kapal tidak dapat diletakkan secara diagonal. Angka yang berada di kanan dan bawah kiri menunjukkan
seberapa banyak kotak pada baris dan kolom yang terkait yang dimiliki oleh bagian kapal.
Game Battleship dimainkan dengan berbagai ukuran dan juga dengan berbagai armada yang memiliki
kapal-kapal yang masing-masingnya berbeda ukuran. Sebagai contoh, armada kapal yang digunakan pada
umumnya Battleship terdiri dari satu battleship, dua cruisers, tiga destroyers dan empat submarines.
Agar game Battleship lebih menarik dan lebih menantang logika permainan, maka level permainan
harus lebih tinggi. Permainan lebih menantang karena kotak kosong lebih banyak jika kapal-kapal yang
diberikan hanya terdiri dari tiga kapal atau enam kapal. Probability untuk menentukan posisi kapal yang
terdiri dari enam atau tiga akan semakin kecil. Dari uraian tersebut penulis mencoba untuk merancang game
Battleship dengan level yang lebih tinggi.
Game komputer sering menggunakan sistem jaringan sehingga game dapat dimainkan secara
bersama-sama ditempat yang berbeda dengan menggunakan beberapa komputer yang terhubung dalam Local
Area Network (LAN).
Penulis bermaksud untuk merancang suatu game Battleship dengan level yang lebih tinggi dan dapat
dimainkan dengan menggunakan jaringan LAN ( local area network ).
Rumusan Masalah
Bagaimana merancang game battleship dengan baik ?
Batasan Masalah.
a. Game Battleship yang dirangcang hanya dengan dua pemain / user.
b. Jaringan yang digunakan yaitu LAN ( local area network )
Tujuan dan Manfaat
Tujuannya adalah merancang suatu perangkat lunak game Battleship dengan level yang lebih tinggi
pada Local Arean Network (LAN).
TINJAUAN PUSTAKA
Definisi Game
Kata game berasal dari bahasa inggris yang berarti permainan. Dalam game ada target-target yang ingin
dicapai pemainnya. Game dapat juga artikan sebagai aktivitas terstruktur atau juga sebagai alat pembelajaran.
Permainan dan bermain keduanya saling berhubungan karena permainan merupakan bagian dari bermain dan
bermain juga bagian dari permainan. Peraturan, permainan dan budaya merupakan bagian yang kompleks di
dalam permainan. Sisi baik dari bermain game adalah dapat melatih untuk menyelesaikan suatu masalah
secara cepat dan tepat, untuk perkembangan otak dan meningkatkan konsentrasi karena dalam game terdapat
berbagai konflik atau masalah yang menuntut untuk diselesaikan dengan cepat dan tepat. Tetapi game juga
bisa merugikan karena apabila sudah kecanduan game akan lupa waktu sehingga mengganggu kegiatan atau
aktifitas.
SEJARAH GAME
Komputer gaming telah ada sejak sekitar 1960an. Karena perkembangan industri microprocessor, mainframe,
dan minicomputers. Salah satu game komputer pertama dikembangkan pada tahun 1961. Ketika siswa MIT,
Martin Graetz dan Alan Kotok, dengan memperkerjakan Steve Russell, menghasilkan “Spacewar!” pada
komputer mainframe PDP-1 (Programmed Data Processor-1).
Generasi pertama PC games biasanya berupa „text-adventures‟ atau „interactive fiction‟, yang mana pemain
berkomunikasi dengan komputer melalui input pada memakai keyboard. Game text-adventure pertama
adalah „Adventure‟ yang dibangun untuk PDP-11 oleh Will Crowther tahun 1976 dan dikembangkan lagi
oleh Don Woods di tahun 1977. Ketika memasuki 1980an, PC telah mendukung penuh untuk menjalankan
game sejenis “Adventure”. Di masa ini, grafik kemudian menjadi unsur penting dalam pembuatan game.
Pada tahun 1952, A.S. Douglas menulis untuk gelar PhD di University of Cambridge jurusan Human-
Computer Interraction. Douglas menciptakan permainan komputer grafis yang diberi nama Tic-Tac-Toe.
Permainan ini diprogram pada komputer EDSAC “vacuum-tube” yang memiliki tampilan tabung sinar
katode. William Higinborham menciptakan video game pertama pada tahun 1958. Permainan ini diberi judul
“Tennis for Two”, diciptakan dan dimainkan di osiloskop Brookhaven National Laboratory. Video games
pertama kali diperkenalkan pada tahun 1971 sebagai media hiburan bersifat komersial. Pada akhir tahun
1970an dan awal tahun 1980an, video game menjadi sebuah dasar yang penting bagi industri hiburan di
Amerika Serikat, Jepang, dan Eropa.
Pada 1967, Ralph Baer menciptakan video game pertama yang dimaikan dengan televisi, diberi nama Chase.
Ralph Baer akhirnya menjadi bagian dari Sanders Associates, sebuah perusahaan elektronik militer. Idenya
Ralph ini dicetuskan untuk pertama kali pada 1951, saat sedang bekerja untuk perusahaan komputer Loral.
Pada 1971, Nolan Bushnell bersama dengan Ted Dabney, menciptakan permainan arcade yang pertama.
Permainan ini diberi nama “Computer Space”, yang diciptakan berdasarkan pada permainan “SpaceWar!”.
Lalu, tahun 1972, Permainan arcade Pong diciptakan oleh Nolan Bushnell (dengan bantuan Al Alcorn).
Nolan Bushnell dan Ted Dabney memulai dengan Atari Computer pada tahun yang sama.
Pada tahun 1975, Atari kembali meluncurkan Pong sebagai home video game. Tahun 1972, hiburan pertama
video game komersial dapat dimainkan di rumah. „Odyssey‟, diluncurkan oleh Magnavox dan didesain oleh
Ralph Baer. Permainan mesin ini aslinya didesain pada saat Ralph Baer masih berada di Sanders Associates
pada tahun 1966, Baer mengurus untuk mendapatkan ijin legalnya setelah ditolak oleh Sanders Associates.
Permainan Odyssey diprogram dengan dua belas permainan. Pada tahun 1976, Fairchild meluncurkan
programmable home game yang pertama dan diberi nama Fairchild Video Entertainment System atau
Channel F. Channel F merupakan salah satu dari electronik sistem yang pertama menggunakan microchip
yang diciptakan oleh Robert Noyce untuk Fairchild Semiconductor Corporation.
Sejarah Game Battleship
Game Battlehip atau sering juga disebut Bimaru ataupun Solitaire Battleships, adalah sebuah teka-
teki logika yang didasarkan pada permainan tebak Battleship. Game Battleship ini diciptakan di Argentina
oleh Jaime Poniachik dan dipublikasikan untuk pertama kalinya pada tahun 1982 di majalah “Humor &
Juegos”. Battleship mendapatkan popularitasnya setelah debut internasionalnya pada kompetisi teka-teki
dunia yang pertama (World Puzzle Championship) di kota New York pada tahun 1992.
Game Battleship pada umumnya berisi 10x10 kotak persegi yang berisi armada kapal yang tersembunyi.
Beberapa bagian kapalpun dapat diberikan pada awal permainan di tempat yang bermacam-macam di kotak-
kotak persegi. Tujuan permainan adalah untuk menemukan letak semua armada kapal di kotak-kotak persegi.
Game Battleship merepresentasikan sebuah laut dengan armada kapal-kapal yang tersembunyi, yang
mungkin saja memiliki orientasi peletakan horizontal ataupun vertikal di dalam kotak-kotak persegi. Game
Battleship juga memiliki ketentuan lainnya, yaitu tidak ada kapal yang menyentuh satu sama lainnya dan
juga kapal tidak dapat diletakan secara diagonal. Angka yang berada di kanan dan bawah kiri menunjukkan
seberapa banyak kotak pada baris dan kolom yang terkait yang dimiliki oleh bagian kapal.
Game Battleship dimainkan dengan berbagai ukuran dan juga dengan berbagai armada yang memiliki kapal-
kapal yang masing-masingnya berbeda ukuran. Sebagai contoh, armada kapal yang digunakan pada
umumnya Battleship terdiri dari satu battleship, dua cruisers, tiga destroyers dan empat submarines.
JENIS – JENIS GAME BERDASARKAN GENRE PERMAINAN
Adapun beberapa jenis game berdasarkan genre antara lain :
1. Aksi – Shooting
2. Fighting ( pertarungan )
3. Aksi – Petualangan
4. Simulasi
5. Role Playing
6. Strategi
7. Puzzle
ANALISIS DAN PERANCANGAN APLIKASI
Permainan ini menyediakan beberapa buah tempat yang disusun oleh kotak – kotak sebagai medan perang.
Kapal – kapal perang dengan ukuran yang berbeda – beda disusun dalam medan perang masing – masing.
Letak dari kapal – kapal perang ini tidak terlihat dalam komputer pemain lawan. Setiap pemain berusaha
untuk menghancurkan kapal – kapal perang pemain lawan dengan cara meng-klik kotak – kotak yang
dianggap sebagai letak dari kapal – kapal perang lawan. Setiap pemain hanya boleh menebak satu kali saja
setiap gilirannya. Jika tebakannya tepat maka pemain tersebut mendapat tambahan satu kali tebakan. Pemain
yang masih menyisakan kapal perang yang memenangkan permainan (game).
Perancangan
Perangkat lunak game Battleship pada jaringan ini dirancang dengan menggunakan bahasa pemrograman
Microsoft Visual Basic 6.0 dengan didukung oleh beberapa aplikasi lainnya seperti Adobe Photoshop dalam
perancangan gambar dan Recorder dalam perancangan suara.
Perancangan perangkat lunak permainan strategi Battle Ship pada jaringan ini ini melalui beberapa tahapan
proses yaitu :
1. Perancangan Gambar Kapal.
Gambar kapal yang digunakan sebenarnya merupakan penggabungan dari beberapa bagian kapal yang telah
dipecahkan sebelumnya. Sebuah gambar kapal dipecahkan menjadi 3 bagian, yaitu bagian depan, tengah dan
belakang kapal. Bagian-bagian kapal tersebut digabungkan kembali sesuai dengan ukuran dari kapal dengan
perincian sebagai berikut :
a. Battleship merupakan penggabungan dari 1 buah bagian depan kapal, 2 buah bagian tengah kapal dan 1
buah bagian belakang kapal.
b. Cruiser merupakan penggabungan dari 1 buah bagian depan kapal, 1 buah bagian tengah kapal dan 1 buah
bagian belakang kapal.
c. Submarine merupakan penggabungan dari 1 buah bagian depan kapal dan 1 buah bagian belakang kapal.
d. Destroyer yang memiliki panjang 1 kotak saja dirancang dengan menggunakan gambar tersendiri dan
bukan merupakan gabungan dari bagian-bagian kapal tersebut.
2. Perancangan Animasi dan Suara.
Gambar kapal terbakar, simbol tembakan tepat sasaran dan tembakan gagal dicari pada sumber-sumber di
internet, kemudian di-edit dan disimpan dengan menggunakan aplikasi Adobe Photoshop. Efek animasi yang
digunakan merupakan proses pergantian gambar. Sedangkan suara ledakan dirancang dengan menggunakan
aplikasi Recorder.
3. Perancangan Interface untuk Menyusun Kapal.
Interface untuk menyusun kapal dirancang dengan ukuran 10 kotak x 10 kotak. 1 kotak diwakili oleh sebuah
picturebox dengan gambar air, sehingga interface ini merupakan penggabungan dari picturebox yang diatur
posisinya.
4. Pengaturan Koneksi Jaringan.
Microsoft Winsock berfungsi untuk menghubungkan komputer yang satu dengan yang lainnya dan saling
bertukar data dengan menggunakan dua protocol, yaitu User Datagram Protocol (UDP) dan Transmission
Control Protocol (TCP). Perangkat lunak permainan strategi Battleship pada jaringan ini menggunakan
protocol TCP. Prinsip kerjanya adalah salah satu komputer akan menentukan apakah bertindak sebagai Client
atau Server. Komputer yang bertindak sebagai server akan dijalankan dahulu dan menunggu komputer yang
bertindak sebagai client untuk melakukan koneksi. Setelah koneksi berhasil dilakukan, maka kedua komputer
itu dapat mengadakan interaksi satu sama lain.
5. Perancangan Medan Perang.
Medan perang dirancang dengan ukuran 10 kotak x 10 kotak. Kotak-kotak ini digambarkan dengan dibatasi
oleh garis-garis. Jarak garis-garis tersebut sebanyak 30 twips baik secara horizontal maupun vertikal. Sketsa
dari gambar medan perang tersebut dapat dilihat pada gambar berikut ini:
300 60 90 120 150 180 210 240 270 300
30
60
90
120
150
180
210
240
270
300
Gambar 1 : sketsa gambar dari medan perang
Kotak-kotak tersebut akan disimpan dalam bentuk array zone2 (x,y) dengan cara penomoran kotak tersebut
adalah sebagai berikut :
1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
9
10
Gambar 2 : penomoran kotak pada medan perang
6. Penentuan posisi kapal
Kapal yang diletakkan akan ditentukan posisinya dan disimpan ke dalam sebuah variabel array yang
memiliki dua buah properti yaitu x untuk menyimpan posisi kolom dari kapal, y untuk menyimpan posisi
baris dari kapal. Proses perhitungan posisi x dan y sebagai berikut :
X = posisi_kursor_x div 30
Y = posisi_kursor_y div 30
7. Pengecekan posisi tembakan dan kapal.
Jika posisi (x,y) yang diklik sama dengan salah satu dari posisi kapal yang disimpan dalam array tersebut
maka berarti kapal tertembak dan posisi bagian kapal yang tertembak tersebut ditandai. Posisi
Hasil dan pembahasan
Algoritma
Algoritma perancangan aplikasi game battleship multiplayer pada jaringan dibagi menjadi beberapa bagian
yaitu,
1. Algoritma pengaturan koneksi antara 2 (dua) pemain.
2. Algoritma pemilihan level.
3. Algoritma penggambaran papan permainan.
4. Algoritma peletakan kapal pada papan permainan.
5. Algoritma tembak kapal lawan.
6. Algoritma ubah giliran pemain.
7. Algoritma pengecekan permainan berakhir.
Algoritma pengaturan koneksi antara 2 (dua) pemain
Algoritma ini menjadi inti dari proses untuk menghubungkan komunikasi antara dua komputer pada sebuah
jaringan lokal. Penulis menggunakan komponen visual basic „winsock‟ untuk mengirim dan menerima data
antar komputer.
Prosedur kerja algoritma ini adalah komputer yang berperan sebagai server, menjalankan program terlebih
dahulu. Ini berarti winsock pada komputer tersebut berperan sebagai server. Winsock server akan melakukan
prosedur listening, yaitu aksi mendengarkan permintaan koneksi dari komputer lain. Algoritmanya adalah
sebagai berikut,
{tutup winsock untuk menjaga kemungkinan winsock sedang terbuka}
Winsock.close
{local port default yang dipakai = 1234}
Winsock.localport = 1234
{winsock server melakukan aksi listening}
Winsock.listen
Selanjutnya winsock server menunggu koneksi dari winsock client. Winsock client pada komputer lain
melakukan koneksi ke winsock server dengan meng-input ip-address komputer server yang dituju.
Algoritmanya adalah sebagai berikut,
{tutup winsock untuk menjaga kemungkinan winsock sedang terbuka}
Winsock.close
{koneksi ke server. Local port default yang dipakai = 1234}
Winsock.connect <ip-address server>, 1234
Apabila winsock server yang dituju oleh winsock client aktif, maka winsock server akan menangkap
permintaan koneksi dari winsock client, dan menerima koneksi tersebut. Algoritmanya adalah sebagai
berikut,
{event „connectionrequest‟ pada komponen winsock server akan aktif apabila ada permintaan koneksi dari
winsock client}
Private sub winsock_connectionrequest(byval requestid as long)
{tutup winsock untuk menjaga kemungkinan winsock sedang terbuka}
Winsock.close
{terima koneksi dari client}
Winsock.accept requestid
End sub
Algoritma pemilihan level.
Pada tahap ini player memilih tingkatan permainan yang ingin dimainkan, mulai dari easy, mediun sampai
hard. Berikut potongan script dari pemilihan level.
if (optionlvl1.value = true) then
option7.enabled = false
label8.visible = false
winsock.senddata "status:gotitmedium"
elseif (optionlvl0.value = true) then
option6.enabled = false
option7.enabled = false
label11.visible = false
winsock.senddata "status:gotiteasy"
else
Algoritma penggambaran papan permainan
Papan permainan merupakan tempat diletakkannya kapal pemain, penulis merancang papan permainan
berukuran 10 x 10 petak. Algoritma penggambaran papan permainan adalah sebagai berikut,
{ukuran papan x dan y = 10}
Max = 10
{looping x dan y}
For i = 0 to max - 1
for j = 0 to max – 1
{bitblt – prosedur windows-api untuk menggambar pada posisi x=i*30
dan y=i*30 dengan cara meng-copy gambar dari picturebox „tile‟}
bitblt field1.hdc, i * 30, j * 30, tile.scalewidth, _
tile.scaleheight, tile.hdc, 0, 0, vbsrccopy
next j
Next i
Algoritma peletakan kapal pada papan permainan
User mengatur letak kapalnya sendiri pada papan permainan sebelum permainan dimulai. Kapal dapat
diletakkan secara horizontal ataupun vertikal. Algoritma peletakan kapal pada papan permainan adalah
sebagai berikut,
Pada permainan, kapal pemain berjumlah 10 buah, yaitu 1 buah kapal „battleship‟ (panjang 4 petak), 2 buah
kapal „cruiser‟ (panjang 3 petak), 3 buah kapal „submarine‟ (panjang 2 petak) dan 4 buah kapal „destroyer‟
(panjang 1 petak).
{tandai jenis kapal apa yang anda tempatkan}
If option7.value then
{kapal „destroyer‟ – panjang 1 petak}
mark = 1
set tempoption = option7
set templbl = lbl7
Elseif option6.value then
{kapal „submarine‟ – panjang 2 petak}
mark = 2
set tempoption = option6
set templbl = lbl6
Elseif option5.value then
{kapal „cruiser‟ – panjang 3 petak}
mark = 3
set tempoption = option5
set templbl = lbl5
Elseif option4.value then
{kapal „battleship‟ – panjang 4 petak}
mark = 4
set tempoption = option4
set templbl = lbl4
Else
{pilihan untuk menghapus kapal dari papan permainan}
mark = 0
End if
{jika pilihan untuk menghapus kapal}
If mark = 0 then
clickedx = int((box.left + 10) / 30)
clickedy = int(y / 30)
tempx = clickedx
tempy = clickedy
{cek apakah terdapat kapal pada zona tersebut}
if zone1(tempx, tempy) <> 0 then
{cari head_x dari kapal}
do
tempx = tempx - 1
if tempx < 0 then
exit do
end if
loop until zone1(tempx, clickedy) = 0
headx = tempx + 1
{cari head_y dari kapal}
do
tempy = tempy - 1
if tempy < 0 then
exit do
end if
loop until zone1(clickedx, tempy) = 0
heady = tempy + 1
{cari kapal dengan head_x dan head_y}
for i = 1 to 10
if ships(i) is nothing then
'nothing
elseif ships(i).headx = headx and ships(i).heady =heady then
{ditemukan – hapus kapal dari papan permainan}
direc = ships(i).direction
size = ships(i).length
exit for
end if
next i
{gambar petak kosong kembali pada papan permainan pada head_x dan
head_y sepanjang ukuran(size) dari kapal dan sesuai dengan arah kapal}
if direc = vbkeyright then
for i = 0 to size - 1
bitblt field1.hdc, (headx + i) * 30, heady * 30, _
tile.scalewidth, tile.scaleheight, tile.hdc, 0, _
0, vbsrccopy
zone1((headx + i), heady) = 0
next i
else
for i = 0 to size - 1
bitblt field1.hdc, headx * 30, (heady + i) * 30,_
tile.scalewidth, tile.scaleheight, tile.hdc, 0, _
0, vbsrccopy
zone1(headx, heady + i) = 0
next i
end if
{tulis jumlah kapal yang tersisa – sebagai informasi untuk user}
if size = 4 then
option4.enabled = true
lbl4.caption = val(lbl4.caption) + 1 & " buah"
elseif size = 3 then
option5.enabled = true
lbl5.caption = val(lbl5.caption) + 1 & " buah"
elseif size = 2 then
option6.enabled = true
lbl6.caption = val(lbl6.caption) + 1 & " buah"
elseif size = 1 then
option7.enabled = true
lbl7.caption = val(lbl7.caption) + 1 & " buah"
end if
field1.refresh
end if
Else {jika pilihan untuk meletakkan kapal}
{jika arah kapal = horizontal}
if box.width >= box.height then
{apakah tempat peletakan kapal – valid?}
if checkvalidity(int((box.left + 10) / 30), int(y / 30), _
vbkeyright, mark) then
{jika tempat peletakan valid, mainkan suara}
r = sndplaysound(app.path & "\taruh.wav", snd_async)
{tandai petak di sekeliling kapal, sehingga tidak ada kapal lain yang
Dapat diletakkan di samping kapal}
for i = int((box.left + 10) / 30) to _
int((box.left + 10) / 30) + mark – 1
zone1(i, int(y / 30)) = mark
next i
{set kapal baru – shipclass merupakan class dari ship}
set ships(curship) = new shipclass
ships(curship).setvalues int((box.left + 10) / 30), _
int(y / 30), mark, vbkeyright
{gambar kapal pada papan permainan}
ships(curship).drawship
else
{posisi tidak valid, keluarkan pesan error}
msgbox "posisi tidak diperbolehkan !", vbcritical
exit sub
end if
else {jika arah kapal = vertikal}
{apakah tempat peletakan kapal – valid?}
if checkvalidity(int(x / 30), int((box.top + 10) / 30), _
vbkeydown, mark) then
{jika tempat peletakan valid, mainkan suara}
r = sndplaysound(app.path & "\taruh.wav", snd_async)
{tandai petak di sekeliling kapal, sehingga tidak ada kapal lain yang
Dapat diletakkan di samping kapal}
for i = int((box.top + 10) / 30) to _
int((box.top + 10) / 30) + mark – 1
zone1(int(x / 30), i) = mark
next i
{set kapal baru – shipclass merupakan class dari ship}
set ships(curship) = new shipclass
ships(curship).setvalues int(x / 30), _
Int((box.top + 10) / 30), mark, vbkeydown
{gambar kapal pada papan permainan}
ships(curship).drawship
else
{posisi tidak valid, keluarkan pesan error}
msgbox "posisi tidak diperbolehkan !", vbcritical
exit sub
end if
end if
{enable/disable dan set focus di kapal berikutnya yang enable}
templbl.caption = val(left(templbl.caption, 1)) - 1 & " buah"
if left(templbl.caption, 1) = "0" then
tempoption.enabled = false
if option4.enabled then
option4.setfocus
elseif option5.enabled then
option5.setfocus
elseif option6.enabled then
option6.setfocus
elseif option7.enabled then
option7.setfocus
else
option8.setfocus
end if
end if
End if
Pada papan permainan, sebuah kapal tidak diperkenankan untuk diletakkan bersampingan langsung dengan
kapal yang lain. Hal ini dilakukan untuk menjaga supaya posisi kapal tidak terpusat di satu titik pada papan
permainan. Oleh karena itu, diperlukan algoritma untuk mencek validitas dari posisi kapal. Penulis
merancang algoritma ini dalam bentuk sebuah fungsi. Algoritmanya adalah sebagai berikut,
Function checkvalidity(byval x as integer, byval y as integer, byval
dir as integer, byval mark as integer) as boolean
Dim xstart as integer 'kapal start_x coord
Dim ystart as integer 'kapal start_y coord
Dim xend as integer 'kapal end_x coord
Dim yend as integer 'kapal end_y coord
Dim i as integer 'counter 1
Dim k as integer 'counter 2
{arah horizontal – cek validitas posisi}
If dir = vbkeyright then
if x > 0 then
xstart = x - 1
else
xstart = 0
end if
if x + mark < max then
xend = x + mark
else
xend = max - 1
end if
if y > 0 then
ystart = y - 1
else
ystart = 0
end if
if y < max - 1 then
yend = y + 1
else
yend = max - 1
end if
for i = xstart to xend
for k = ystart to yend
if zone1(i, k) <> 0 then
{jika posisi tidak valid, langsung keluar dari fungsi}
checkvalidity = false
exit function
end if
next k
next i
Else {arah vertikal – cek validitas posisi}
if x > 0 then
xstart = x - 1
else
xstart = 0
end if
if x < max - 1 then
xend = x + 1
else
xend = max - 1
end if
if y > 0 then
ystart = y - 1
else
ystart = 0
end if
if y + mark < max then
yend = y + mark
else
yend = max - 1
end if
for i = xstart to xend
for k = ystart to yend
if zone1(i, k) <> 0 then
{jika posisi tidak valid, langsung keluar dari fungsi}
checkvalidity = false
exit function
end if
next k
next i
End if
Checkvalidity = true
End function
Algoritma tembak kapal lawan
Pada saat kita berusaha menembak kapal pada papan permainan lawan, terdapat dua kemungkinan yaitu,
kapal lawan berhasil ditembak atau tembakan kita gagal. Ketika kapal lawan berhasil ditembak, maka
program menjalankan animasi ledakan pada kapal dan animasi api yang berkobar pada bagian kapal yang
tertembak. Apabila tembakan gagal, maka program akan menjalankan animasi gelombang air pada posisi
yang ditembak. Algoritmanya adalah sebagai berikut,
{tembak pada posisi x, y}
Cx = left(msg, instr(1, msg, ",") - 1)
Cy = mid(msg, instr(1, msg, ",") + 1)
{koordinat temporary}
Tempx = cx
Tempy = cy
{jika terkena tembakan}
If zone1(cx, cy) > 0 and zone1(cx, cy) < 5 then
zone1(cx, cy) = zone1(cx, cy) + 4
{cari head_x kapal}
do
tempx = tempx - 1
if tempx < 0 then
exit do
end if
loop until zone1(tempx, cy) = 0
headx = tempx + 1
{cari head_y kapal}
do
tempy = tempy - 1
if tempy < 0 then
exit do
end if
loop until zone1(cx, tempy) = 0
heady = tempy + 1
{cari kapal dengan head_x dan head_y}
for i = 1 to 10
if ships(i).headx = headx and ships(i).heady = heady then
{apakah kapal sudah tenggelam}
r = ships(i).cripple()
{r = true, kapal tenggelam}
if r then
{cek apakah permainan sudah berakhir}
if isover() then
{send data ke lawan - menang}
winsock.senddata "result:win"
else
{send data ke lawan – kapal tenggelam}
winsock.senddata "result:dead"
end if
else
{send data ke lawan – kapal tertembak}
winsock.senddata "result:wound"
end if
zone1flame(curflame).frame = 0
randomize
zone1flame(curflame).typ = int(rnd() * 3) + 1
zone1flame(curflame).x = cx
zone1flame(curflame).y = cy
getbackimage cx, cy, zone1flame(curflame).backimage, _
zone1flame(curflame).backimagemask
curflame = curflame + 1
exit for
end if
next i
Else {tembakan gagal / tidak kena}
{gambar air pada daerah yang tidak terkena tembakan}
bitblt field1.hdc, cx * 30, cy * 30, tile.scalewidth, _
Tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy
{send data ke lawan – bahwa tembakan gagal}
winsock.senddata "result:miss"
End if
{ganti giliran pemain}
Changeturn
Algoritma ubah giliran pemain
Dalam permainan ini, pemainalgoritma ini berfungsi untuk mengubah giliran bermain pemain. Pemain tidak
dapat menembak jika bukan gilirannya bermain. Algoritmanya adalah sebagai berikut,
'Prosedur giliran
Sub changeturn()
{ubah giliran}
User1 = not user1
User2 = not user2
Field2.enabled = not field2.enabled
'User1 = true?
If user1 then
{giliran pemain bermain}
lblstate.caption = " giliran anda !"
{hidupkan timer the turntaggle untuk berkedip}
turntaggle.enabled = true
Else
{giliran lawan bermain}
lblstate.caption = "giliran " & user & " !"
{matikan timer the turntaggle untuk berkedip}
turntaggle.enabled = false
lblstate.backcolor = &hf0c4a6
End if
End sub
Algoritma pengecekan permainan berakhir
Permainan berakhir apabila kapal dari salah satu pemain telah tertembak semuanya. Algoritmanya adalah
sebagai berikut,
'Apakah permainan sudah berakhir
Function isover() as boolean
Dim i as integer
Isover = true
{looping – cek apakah semua kapal telah tenggelam}
For i = 1 to 10
if not ships(i).isdead then
isover = false
exit function
end if
Next i
End function
Spesifikasi perangkat keras dan perangkat lunak yang dibutuhkan
Program ini dijalankan dengan menggunakan perangkat keras (hardware) yang direkomendasikan sebagai
berikut :
1. Prosesor intel pentium core 2 duo 2.1 ghz.
2. Memory 2 gb.
3. Harddisk 250 gb.
4. Vga card 32 mb.
5. Monitor dengan resolusi 1366 x 768 pixel.
6. Network card – 100 mbps dan adanya jaringan lan.
Adapun perangkat lunak (software) yang direkomendasikan untuk menjalankan aplikasi ini adalah microsoft
windows xp/vista 7.
Tampilan output
Klik pada file „permainan battleship (multiplayer).exe‟ untuk menjalankan perangkat lunak. Setelah itu akan
muncul tampilan splash screen. Klik pada form atau tekan „enter‟ untuk masuk ke dalam program.
Gambar 3 : Tampilan Form Splash Screen
Setelah itu, akan muncul tampilan „Setting Koneksi‟. Apabila user memilih koneksi sebagai server, maka
user harus menunggu koneksi dari pemain client. Apabila user memilih koneksi sebagai client, maka user
harus memasukkan ip-address komputer server yang dituju.
Gambar 4 : Tampilan Setting Koneksi
Apabila koneksi telah terhubung, maka akan muncul tampilan input form untuk meng-input nama pemain.
Setelah input nama pemain, maka akan muncul tampilan „Pengaturan Letak Kapal‟. Arah letak kapal dapat
diatur secara horizontal atau vertikal. Klik kanan mouse pada daerah penempatan kapal untuk mengubah arah
horizontal menjadi vertikal, dan sebaliknya.
Gambar 6 : tampilan medan perang
Daerah kotak sebelah kiri merupakan letak kapal anda, sedangkan daerah kotak sebelah kanan merupakan
letak kapal lawan. Pada giliran anda, klik kiri pada kotak sebelah kanan untuk menembak kapal lawan.
Apabila tembakan gagal (tidak mengenai kapal lawan), maka akan muncul animasi gelombang air pada
daerah kotak sebelah kanan.
Gambar 7 : tampilan tembakan gagal pada komputer-1 (pemain yang menembak)
Gambar 8 : Tampilan Tembakan Gagal Pada Komputer-2 (Pemain yang ditembak)
Apabila tembakan berhasil (mengenai kapal lawan), maka akan muncul animasi ledakan pada bagian yang
tertembak.
Gambar 9 : Tampilan Tembakan Berhasil Pada Komputer-1 (Pemain yang menembak)
koordinat yang ditembak juga ditandai. Proses perhitungan posisi x dan y tersebut sama dengan proses
perhitungan pada penentuan posisi kapal di atas.
Penentuan Pemenang.
Player dikatakan menang bila menyisakan kapal dalam permainan ini.
Perhitungan Score.
Besar score yang didapatkan dihitung berdasarkan ukuran kapal. Ukuran 1 kotak bernilai 10 point. Jadi,
menenggelamkan sebuah kapal berukuran 3 kotak, maka pemain akan mendapatkan nilai 30 point.
Kesimpulan
1. Telah berhasil merancang game battleship yang terkoneksi dalam jaringan komputer setempat/ local area
network.
2. Hasil perancangan game ini dapat dimainkan secara bergantian antara pemain 1 dan pemain 2.
Saran
1. Game ini dapat ditambahkan konsep artificial intelligence (ai) sehingga dapat dimainkan melawan
komputer.
2. Game dapat dikembangkan untuk user yang lebih banyak (lebih dari 2 player).
DAFTAR PUSTAKA 1. Elcom, 2012,”Computer Networking”, Yogyakarta, Andi Publisher.
2. 2. Hakim Lukman, 2003, “Pemograman Game Dengan Visual Basic”, Yogyakarta: Andi.
3. 3. Halvorson Michael, 2000, “Step By Step Microsoft Visual Basic 6.0 Profesional”, Jakarta, Elex
Media Komputindo
4. 4. Loudon Kenneth, 2008,”Sistem Informasi Manajemen Buku 1”, Jakarta, Salemba Empat.
5. 5. Loudon Kenneth, 2008,”Sistem Informasi Manajemen Buku 2”, Jakarta, Salemba Empat.
6. 6. Purbo,W. Ono,1998, “TCP/IP Standar, Desain, dan Implementasi”, Jakarta, Elex Media
Komputindo.
top related