BATTLESHIP MULTI PLAYER 2 PEMAIN

Posted on Jumat, 28 Desember 2012 by dv_iput



BAB I

PENDAHULUAN

1.1       Latar Belakang
Sebuah permainan (game) komputer sering menggunakan sistem jaringan sehingga permainan (game) dapat dimainkan oleh beberapa orang dengan menggunakan beberapa komputer yang terhubung dalam Local Area Network (LAN).
Salah satu permainan (game) komputer yang cukup menarik adalah permainan strategi Battle Ship. 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).
Berdasarkan uraian di atas, penulis bermaksud untuk merancang suatu perangkat lunak permainan strategi Battle Ship yang dapat dimainkan pada jaringan. Oleh karena itu, penulis mengambil topik tugas akhir dengan judul “Perancangan Perangkat Lunak Permainan Strategi Battle Ship pada Jaringan”.

1.2       Perumusan Masalah
            Berdasarkan latar belakang pemilihan judul, maka yang menjadi permasalahan adalah bagaimana memainkan permainan strategi Battle Ship di tempat yang berbeda dengan menggunakan jaringan.

1.3       Tujuan dan Manfaat Penulisan
            Tujuan penyusunan tugas akhir (skripsi) ini adalah untuk merancang suatu perangkat lunak permainan strategi Battle Ship pada jaringan.
            Manfaat dari penyusunan tugas akhir (skripsi) ini yaitu perangkat lunak dapat dijadikan sebagai sarana hiburan yang cukup menarik.

1.4       Pembatasan Masalah
Karena keterbatasan waktu dan pengetahuan penulis, maka ruang lingkup permasalahan dalam merancang perangkat lunak ini antara lain :
  1. Input dibatasi hanya pada keyboard dan mouse sedangkan Output perangkat lunak pada layar monitor.
  2. Jumlah pemain adalah sebanyak 2 orang.
  3. Rincian dari masing – masing kapal perang, yaitu :
    • Battleship dengan ukuran 4 kotak sebanyak 1 buah.
    • Cruiser dengan ukuran 3 kotak sebanyak 2 buah.
    • Submarine dengan ukuran 2 kotak sebanyak 3 buah.
    • Destroyer dengan ukuran 1 kotak sebanyak 4 buah.
  4. Ukuran dari medan perang adalah 10 kotak x 10 kotak.
  5. Perangkat lunak menggunakan komponen Winsock pada Microsoft Visual Basic untuk melakukan koneksi komputer ke jaringan.

1.5       Metodologi Penyelesaian Masalah
            Langkah – langkah pembuatan perangkat lunak ini antara lain :
a.                   Mempelajari cara permainan dari Battle Ship.
b.                  Merancang interface untuk permainan Battle Ship.
c.                   Membuat koneksi komputer pada LAN.
d.                  Merancang suatu perangkat lunak permainan strategi Battle Ship dengan menggunakan bahasa pemrograman Visual Basic 6.0.


BAB II

LANDASAN TEORI

2.1              Sekilas Mengenai Sistem Komputer
Pada tingkatan paling atas, sebuah komputer terdiri dari komponen-komponen prosesor, memori, dan I/O, dengan sebuah modul atau lebih pada setiap komponennya. Komponen-komponen tersebut diinterkoneksikan dengan cara tertentu untuk mendapatkan fungsi utama komputer, yang digunakan untuk mengeksekusi program-program.
Dengan demikian, terdapat empat elemen struktural utama :
1.       Prosesor : berfungsi mengontrol operasi komputer dan melakukan fungsi-fungsi pengolahan data.
Prosesor terdiri dari:
a.        Bagian ALU (Arithmetic Logic Unit), yang berfungsi untuk melakukan operasi aritmatika dan logika.
b.        Bagian CU (Control Unit), yang berfungsi untuk mengendalikan operasi yang dilaksanakan sistem komputer.
c.        Register-register, untuk membantu pelaksanaan operasi yang dilakukan oleh prosesor. Register-register biasanya berfungsi sebagai tempat penyimpanan sementara operan-operan dari operasi yang akan dilakukan.
2.       Memori utama: berfungsi menyimpan data dan program. Memori utama biasanya volatile, tidak dapat mempertahankan data dan program yang disimpan bila sumber daya energi (listrik) dihentikan.
3.       Modul-modul I/O : berfungsi memindahkan data antara komputer dengan lingkungan eksternalnya. Lingkungan eksternal terdiri dari bermacam-macam perangkat eksternal, yang meliputi perangkat memori sekunder, peralatan komunikasi, dan terminal. Modul-modul I/O ini berfungsi menghubungkan komputer dengan lingkungan luar sehingga komputer bermanfaat bagi lingkungannya.
4.        Interkoneksi sistem : adalah beberapa struktur dan mekanisme yang melakukan komunikasi antara prosesor, memori utama, dan modul I/O. Interkoneksi antar komponen disebut bus.
Bus terdiri dari tiga macam, yaitu :
a.        Bus alamat (address bus)
Bus alamat berisi 16, 20, 24 jalur sinyal paralel atau lebih. Prosesor mengirim alamat lokasi memori atau port yang ingin ditulis atau dibaca di bus ini.
Jumlah lokasi memori yang dapat dialamati ditentukan jumlah jalur alamat. Jika prosesor mempunyai N jalur alamat, maka dapat mengalamati 2 pangkat N  (2N) lokasi memori dan/atau port secara langsung.


b.        Bus data (data bus)
Bus data berisi 8, 16, 32 jalur sinyal paralel atau lebih. Jalur-jalur data adalah dua arah (bidirectional). Melalui bus ini prosesor dapat membaca dan mengirim data dari/ke memori atau port.
c.        Bus kendali (control bus)
Bus kendali berisi 4 sampai 10 jalur sinyal paralel. Prosesor mengirim sinyal-sinyal pada bus kendali untuk memerintahkan memori atau port.
Sinyal bus kendali antara lain:
·         Pembacaan memori (Memory read)
Untuk memerintahkan melakukan pembacaan memori.
·         Penulisan memori (Memory write)
Untuk memerintahkan melakukan penulisan memori.
·         Pembacaan I/O (I/O read)
Untuk memerintahkan melakukan pembacaan port I/O.
·         Penulisan I/O (I/O write)
Untuk memerintahkan melakukan penulisan I/O.

 


Skema dasar sistem komputer dapat digambarkan sebagai berikut:


Gambar 2.1  Skema Blok Sistem Komputer

2.2              Definisi Jaringan Komputer
Sistem jaringan komputer adalah gabungan atau kumpulan dari beberapa komputer yang dapat diakses secara bersama – sama (seperti floopy disk, CD-ROM, printer, dan sebagainya), dan dapat berhubungan dengan komputer induk sistem lainnya yang letaknya berjauhan.
Adapun komunikasi data dapat diartikan pengiriman data secara elektronik dari satu tempat ke tempat lain melalui suatu media komunikasi, dan data yang dikirimkan tersebut merupakan hasil atau akan diproses oleh suatu sistem komputer.
Sistem jaringan dapat memiliki peralatan pada komputer server untuk dipakai secara bersama dengan komputer client-nya. Namun pada setiap komputer lokal dapat juga dipasang peralatan khusus untuk keperluan komputer lokal tersebut.


Dalam jaringan ada tiga komponen utama yang harus dipahami, yaitu :
1.      Host atau node, yaitu sistem komputer yang berfungsi sebagai sumber atau penerima dari data yang dikirimkan. Node ini dapat berupa:
a.   Server : komputer tempat penyimpanan data dan program-program aplikasi yang digunakan dalam jaringan,
b.   Client : komputer yang dapat mengakses sumber daya (berupa data dan program aplikasi) yang ada pada server,
c.   Shared pheriperal : peralatan-peralatan yang terhubung dan digunakan dalam jaringan (misalnya, printer, scanner, harddisk, modem, dan lain-lain).
2.      Link, adalah media komunikasi yang menghubungkan antara node yang satu dengan node lainnya. Media ini dapat berupa saluran transmisi kabel dan tanpa kabel,
3.      Software (Perangkat Lunak), yaitu program yang mengatur dan mengelola jaringan secara keseluruhan. Termasuk di dalamnya sistem operasi jaringan yang berfungsi sebagai pengatur komunikasi data dan periferal dalam jaringan.

2.3              Tipe-tipe Jaringan Komputer
Ada beberapa tipe jaringan komputer yang umumnya digunakan. Berikut ini beberapa klasifikasi tipe jaringan komputer yang ada :
1.      Berdasarkan letak geografis
a.       Local Area Network (LAN), jaringan ini berada pada satu bangunan atau lokasi yang sama, dengan kecepatan transmisi data yang tinggi (mulai dari 10 Mbps ke atas), dan menggunakan peralatan tambahan seperti repeater, hub, dan sebagainya.
b.      Metropolitan Area Network (MAN), jaringan ini merupakan gabungan beberapa LAN yang terletak pada satu kota(jangkauan 50-75 mil) yang dihubungkan dengan kabel khusus atau melalui saluran telepon, dengan kecepatan transmisi antara 56 Kbps sampai 1 Mbps, dan menggunakan peralatan seperti router, telepon, ATM switch, dan antena parabola.
c.       Wide Area Network (WAN), jaringan ini merupakan gabungan dari komputer LAN atau MAN yang ada di seluruh permukaan bumi ini yang dihubungkan dengan saluran telepon, gelombang elektromagnetik, atau satelit; dengan kecepatan transmisi yang lebih lambat dari 2 jenis jaringan sebelumnya, dan menggunakan peralatan seperti router, modem, WAN switches..
2.      Berdasarkan arsitektur jaringan
a.       jaringan peer to peer
b.      jaringan berbasis server (server-based network/server-client network)
c.       jaringan hibrid.
(Bagian ini akan dibahas lebih lanjut pada bahasan selanjutnya)
3.      Berdasarkan teknologi transmisi
a.       Jaringan switch, merupakan jaringan yang penyampaian informasi dari pengirim ke penerima melalui mesin-mesin perantara atau saluran telepon,
b.      Jaringan broadcast, merupakan jaringan yang penyampaian informasi dari pengirim ke penerima dilakukan secara broadcast (disiarkan ke segala arah) baik melalui saluran kabel maupun saluran tanpa kabel.
Beberapa komponen dasar yang biasanya membentuk suatu LAN adalah sebagai berikut:
1.      Workstation
Dalam jaringan, workstation sebenarnya adalah node atau host yang berupa suatu sistem komputer. User berhubungan dengan jaringan melalui workstation dan juga saling berkomunikasi seperti saling bertukar data. User juga dapat mengakses program aplikasi pada workstation yang dapat bekerja sendiri di workstation (stand-alone) itu sendiri ataupun menggunakan jaringan untuk saling berbagi informasi dengan workstation atau user lain.
Workstation dapat berfungsi sebagai :
a.       Server
Sesuai dengan namanya, ini adalah perangkat keras yang berfungsi untuk melayani jaringan dan klien yang terhubung pada jaringan tersebut. Server dapat berupa sistem komputer yang khusus dibuat untuk keperluan tertentu, seperti untuk penggunaan printer secara bersama (print server), untuk hubungan eksternal LAN ke jaringan lain (communication server), dan file server yakni disk yang digunakan secara bersama oleh beberapa klien. Server ini tidak dapat digunakan sebagai klien, karena baik secara hardware maupun software, ia hanya berfungsi untuk mengelola jaringan.
Ada pula server yang berupa workstation dengan disk drive yang cukup besar kapasitasnya, sehingga server tersebut dapat juga digunakan sebagai workstation oleh user.
b.      Client (klien)
Sebuah workstation umumnya berfungsi sebagai klien dari suatu server, karena memang workstation akan menggunakan fasilitas yang diberikan oleh suatu server. Jadi, server melayani, sedangkan klien dilayani.
2.      Link
Link atau hubungan dalam Jaringan Lokal dikenal sebagai media transmisi berupa kabel maupun tanpa kabel, yang secara fisik menghubungkan server dan klien.
3.      Transceiver
Transceiver (transmitter-receiver) merupakan perangkat keras yang menghubungkan workstation atau sistem komputer dengan media transmisi .
4.      Kartu Jaringan (Network Interface Card / NIC)
Kartu jaringan ini adalah kartu yang dipasang pada PC yang mengendalikan pertukaran data antarworkstation yang ada dalam jaringan lokal. Setiap workstation harus dilengkapi dengan NIC yang secara fisik terhubung langsung dengan bus internal dari PC.
5.      Perangkat Lunak Jaringan
Perangkat lunak jaringan mencakup:
a.       sistem operasi LAN,
b.      perangkat lunak aplikasi,
c.       perangkat lunak pemrograman, dan
d.      program utiliti.
Perangkat lunak ini sangat penting dan mutlak untuk memungkinkan komunikasi antara sistem komputer yang satu dengan sistem komputer lainnya. Tanpa perangkat lunak ini, jaringan tidak akan berfungsi. Sistem komputer dengan LAN dapat menjalankan semua perangkat lunak aplikasi yang dapat berjalan pada stand-alone PC.

2.4              Arsitektur Jaringan Komputer
Arsitektur jaringan komputer merupakan tata cara penggunaan perangkat keras dan perangkat lunak dalam jaringan agar satu komputer dengan komputer lainnya dapat melakukan komunikasi dan pertukaran data.



Ada tiga bentuk arsitektur yang umum digunakan dalam jaringan komputer:
1.      Jaringan peer to peer
Pada jaringan peer to peer (Gambar 2.2.), semua komputer memiliki posisi setara/sejajar, dalam hierarki yang sama. Setiap komputer dapat menjadi klien terhadap komputer peer lainnya, setiap komputer dapat pula berbagi sumber daya dengan komputer yang berada dalam jaringan peer-to-peer ini. Sumber daya diletakkan secara desentralisasi pada setiap anggota jaringan, dan tidak memerlukan administrator jaringan.
Aliran informasi bisa mengalir di antara dua komputer secara langsung, di mana pun. Namun, jaringan ini tidak sepenuhnya bebas tanpa kontrol, masih bisa digunakan password untuk memproteksi file dan folder, dapat juga diatur agar orang-orang tertentu tidak bisa menggunakan periferal tertentu.
Karena kemudahan pemasangan, pemeliharaan, serta biaya, jaringan ini lebih populer untuk jaringan dengan jumlah komputer yang sedikit (sekitar 2 sampai 20 komputer).
Sifat jaringan peer to peer digunakan untuk hubungan antara setiap komputer yang terhubung dalam jaringan komputer yang ada, sehingga komunikasi data terjadi antar komputer dengan hierarki yang sama karena setiap komputer dapat berfungsi sebagai server maupun klien. 

 
  Gambar 2.2. Jaringan peer-to-peer

2.      Jaringan client/server
Pada jaringan client/server (Gambar 2.3.), perangkat lunak yang mengontrol keseluruhan kerja jaringan berada pada server. Jaringan ini dapat menghubungkan ratusan komputer dengan tingkat keamanan yang tidak dimungkinkan dalam jaringan peer-to-peer.
Jaringan ini bisa diatur sehingga setiap klien harus log on ke server sebelum bisa memanfaatkan sumber daya yang terhubung ke server. Server lalu mengotentikasi klien dan memverifikasi bahwa komputer yang digunakan klien tersebut memiliki izin untuk log on ke jaringan, dengan memeriksa username dan password klien tersebut terhadap database pada server.

 
  Gambar 2.3. Jaringan client/server
3.      Jaringan hybrid
Jaringan ini merupakan gabungan dari sifat pada jaringan peer to peer dan client/server. Workgroup yang terdiri dari beberapa komputer yang saling terhubung dapat mengelola sumber daya tanpa membutuhkan otorisasi dari administrator jaringan atau server. Pada jenis jaringan ini, terdapat pula sifat dari jaringan client/server sedemikian sehingga tingkat keamanan dapat lebih terjaga dan adanya server yang mempunyai suatu fungsi layanan tertentu, seperti sebagai file server, print server, database server, mail server, dan lainnya.

2.5              Topologi Jaringan
            Topologi jaringan adalah tata cara komputer dan sumber daya lainnya dihubungkan dalam jaringan. Ada dua jenis topologi jaringan, yaitu:
a.       Topologi fisik, yaitu tata cara komputer dan peralatan lainnya dihubungkan secara fisik melalui kabel/media transmisi sehingga bisa saling berkomunikasi, dan
b.      Topolosi logik, yaitu tata cara komputer dan peralatan dalam jaringan berkomunikasi dan tata cara data ditransmisikan melalui jaringan.
            Yang akan dibahas dalam bahasan ini adalah topologi fisik, yang menyangkut bagaimana sistem atau komputer dan periferalnya dihubungkan satu dengan yang lainnya.


Topologi fisik secara umum ada empat jenis, yaitu:
1.      Topologi Star
Topologi star (Gambar 2.4.) melibatkan suatu hub sebagai tempat di mana setiap anggota jaringan terhubung padanya. Setiap komputer dalam jaringan harus melalui suatu pusat yang disebut hub, baru kemudian dilakukan transmisi ke komputer-komputer lainnya yang juga terhubung ke hub.
Beberapa keuntungan dari topologi star ini adalah kemudahan untuk menambah peralatan ke jaringan dan jika terjadi kerusakan pada salah satu kabel hanya akan mempengaruhi komputer yang dihubungkan kabel tersebut. Namun, kerugian akan terjadi pada jenis topologi ini apabila hub terganggu/rusak, maka secara keseluruhan jaringan akan terganggu.










Gambar 2.4. Topologi Star
2.      Topologi Ring
Pada topologi ring (Gambar 2.5.), setiap simpul dalam jaringan dihubungkan seperti halnya cincin, sehingga jika terjadi transmisi data, maka data akan mengelilingi ring sampai tiba di komputer/alamat tujuan.
Keuntungan dari topologi jaringan ini antara lain data dapat dikirimkan dengan kecepatan tinggi tanpa terjadi tubrukan data (data collision). Namun, kerugiannya adalah jika kabel mengalami kerusakan, maka jaringan akan terganggu. Jenis topologi ini tidak begitu umum digunakan dalam jaringan komputer.
                      
                      
Gambar 2.5. Topologi Ring
3.      Topologi Bus
Pada topologi bus (Gambar 2.6.), setiap simpul dalam jaringan dihubungkan dengan suatu kabel utama yang disebut bus jaringan atau sering juga disebut sebagai backbone, yang pada setiap ujungnya dipasang terminator yang berfungsi untuk menyerap sinyal-sinyal yang melewai ujung tersebut. Disebut bus karena orang-orang dalam sebuah bus dapat naik atau berhenti pada perhentian manapun sepanjang rute.
Dalam topologi bus , sinyal dikirimkan secara broadcast ke semua simpul dalam jaringan, tapi hanya simpul/komputer tujuan yang dapat menanggapi sinyal tersebut.
Keuntungan dari topologi ini adalah kemudahan untuk menambah atau menghapus komputer atau peralatan dari jaringan serta kemudahan pemasangan, sehingga paling banyak digunakan. Topologi bus baik untuk peralatan/sistem yang secara fisik terletak dekat satu dengan yang lainnya. Kerugiannya, apabila kabel utama rusak, maka jaringan akan down secara keseluruhan. Selain itu, waktu akses juga lebih lambat dibandingkan dengan topologi lainnya.
                          
 

                                               
  Gambar 2.6. Topologi Bus
4.      Topologi hybrid
Jenis topologi hybrid merupakan jenis kombinasi dari jenis-jenis topologi star, ring, atau bus. Jenis topologi inilah yang paling banyak digunakan dalam dunia nyata.

2.6              IP Address
Masing-masing host mempunyai IP address untuk mengidentifikasi suatu host dalam melakukan proses koneksi dalam jaringan TCP / IP. Sedangkan masing-masing IP address di dalamnya terdapat Network ID dan Host ID.
Network ID menunjukkan letak atau tempat sistem berada yang terdapat dalam IP Router dalam jaringan fisik yang sama. Host ID ini lebih dikenal dengan workstation, server, router dan host TCP / IP yang lainnya dalam suatu jaringan.
Suatu IP Address terdiri dari 32 bit yang bekerja dalam suatu urutan waktu. Dari 32 bit kemudian dipecah menjadi 8 bit atau lebih dikenal dengan oktet dimana masing-masing oktet dikonversikan dalam bilangan desimal yang berkisar antara 0 sampai 255.

2.7              Format Citra
Dalam sistem operasi Windows, mendukung beberapa jenis format gambar. Aplikasi pengolahan grafis juga menyediakan fasilitas untuk membuka file – file dengan format yang berbeda. Adapun beberapa jenis format gambar yang didukung oleh sistem operasi Windows dan aplikasi grafis seperti : JPEG, WMF, BMP dan GIF.

2.7.1        Format Citra JPEG
JPEG ( Joint Photographic Experts Group) adalah teknik kompresi grafik high color bit – mapped dan juga standar file yang dikembangkan oleh grup joint photographic experts yang menggunakan kombinasi DCT (Discrete Cosine Transform) dan pengkodean huffman untuk mengkompresi suatu file citra.
JPEG adalah suatu algoritma kompresi yang bersifat lossy dimana kualitas citranya kurang bagus. Lossy compression adalah metode memperkecil ukuran file citra dengan cara membuang beberapa data, hal ini menyebabkan adanya sedikit penurunan kualitas citra. JPEG merupakan teknik dan standar universal untuk kompresi dan dekompresi citra tidak bergerak untuk digunakan pada kamera digital dan sistem pencitraan menggunakan komputer yang dikembangkan oleh Joint photographic experts group.

2.7.2        Format Citra WMF
WMF ( Windows Meta File) adalah suatu format file grafik standar Windows yang biasanya digunakan pada clipboard dan representasi sebuah grafik . Format file ini menyimpan semua komponen dari suatu grafik beserta dengan atribut – atributnya seperti garis (lines), warna (colors), pola (patterns), teks (text) dan atribut teks (text attributes). Adapun jenis format file WMF yang telah ditingkatkan dari segi kualitas grafiknya yaitu EMF (Enchange Meta File).

2.7.3        Format Citra BMP
Format file BMP merupakan format file gambar standar untuk komputer – komputer yang menjalankan sistem operasi Windows. Format file ini dikembangkan oleh pihak Microsoft untuk menyimpan file gambar (bitmap) dan memungkinkan Windows untuk menampilkan kembali gambar tersebut. Struktur dari file BMP terdiri dari Bitmapfileheader dan Bitmapinfoheader. Struktur Bitmapfileheader menyimpan informasi mengenai dimensi dan format warna dari device independent bitmap (DIV).
Jadi dapat disimpulkan bahwa Bitmapfileheader memberi informasi mengenai file dan Bitmapinfoheader memberikan informasi mengenai gambar. Tabel warna yang didefinisikan sebagai array dan struktur RGBQUAD dan sisanya adalah data gambar. Format ini mendukung resolusi dan monokrom hingga true color (16,7 juta warna).

2.7.4        Format Citra GIF
GIF (Graphics Interchange Format) merupakan format gambar standar yang menyediakan sejumlah kemampuan seperti ketajaman gambar (sharp) resolusi gambar (resolution) yang baik serta ukuran file gambar yang relatif lebih kecil. Bagus tidaknya resolusi gambar GIF yang dihasilkan juga tergantung pada perangkat keras (Graphics Hardware) yang digunakan. Perangkat keras tersebut harus dapat menghasilkan resolusi warna gambar yang tajam dengan pixel warna yang baik.
Pixel merupakan elemen yang terkecil dalam sebuah gambar. Pixel berhubungan dengan titik (dot) dalam layar grafik. Misalnya sebuah gambar memiliki ukuran sebesar 320 x 320. Hal ini mempunyai arti bahwa gambar tersebut mempunyai jumlah pixel sebanyak 320 x 320. Semakin banyak pixel yang terdapat dalam objek gambar, maka semakin halus gambar tersebut karena jarak antar pixel semakin rapat dan semakin besar ukuran file tersebut. Begitu juga sebaliknya, dimana semakin sedikit jumlah pixel yang terdapat pada objek gambar, maka tampilan gambar tersebut terlihat kasar karena jarak antar pixel renggang dan ukuran file yang dihasilkan lebih kecil.
Format GIF ditujukan untuk mendukung format gambar saat ini dan format gambar yang akan datang. Format GIF mempunyai ekstensi .gif yang didukung oleh aplikasi grafis, misalnya Microsoft Paint, Corel Draw, Corel PhotoPaint, Adobe PageMaker dan sebagainya.

2.8              Animasi
Animasi merupakan salah satu bagian grafika komputer yang menyajikan tampilan-tampilan yang sangat atraktif juga merupakan sekumpulan gambar yang ditampilkan secara berurutan dengan cepat untuk mensimulasi gerakan yang hidup.  Pemanfaatan animasi dapat ditujukan untuk simulasi, menarik perhatian pemakai komputer pada bagian tertentu dari layar, memvisualisasikan cara kerja suatu alat atau menampilkan keluaran program dengan gambar-gambar yang menarik dibanding dengan sederetan angka, serta tidak ketinggalan untuk program-program permainan.
Pada dasarnya, animasi adalah transformasi objek yang di mana semua titik pada sembarang objek akan diubah sesuai dengan aturan tertentu, sementara sistem koordinatnya tetap. Implementasi pada animasi dapat dikerjakan secara interaktif maupun non interaktif. Dibandingkan animasi non interaktif, animasi interaktif memberikan tampilan yang lebih menarik dan dinamis.  Pada animasi interaktif, pergerakan objek mengikuti perintah yang diberikan oleh pemakai lewat perangkat interaktif. Sedangkan animasi non interaktif, pergerakan objek hanya dikendalikan dari prosedur yang ada di dalam sebuah program. Untuk animasi interaktif kebanyakan digunakan untuk program-program permainan, sedangkan animasi non interaktif kebanyakan untuk melakukan simulasi objek.
Pembuatan animasi masih dilakukan secara sederhana dan konvensional dengan cara menggerakkan beberapa gambar secara bergantian dan cepat sebelum tahun 1970-an. Gambar tersebut masih menggunakan lukisan tangan atau menggunakan foto dari serangkaian kejadian. Hingga pada akhir tahun 1970-an, seorang ahli program bernama Julain Gomez mengembangkan sebuah program khusus untuk animasi.  Pengembangan program tersebut dilakukan di negara bagian Ohio, Amerika Serikat.
Komputer digital yang berkembang pesat sangat mempengaruhi proses pengerjaan animasi. Animasi kemudian membentuk suatu bidang baru dalam ilmu komputer yaitu grafika komputer yang dapat digunakan untuk menggambarkan cara kerja suatu alat dan menampilkan keluaran program berupa gambar yang lebih hidup dan interaktif. Animasi banyak digunakan pada berbagai bidang seperti bidang perekayasaan, arsitektur, ekonomi, kedokteran, dan lain-lain.
Animasi yang bagus dihasilkan dari gambar yang cukup banyak agar gambar yang dihasilkan akan tampak gerakan yang berkesan halus.  Dalam hal ini, maka gambar-gambar tersebut haruslah berpindah posisi sekecil mungkin agar pada perubahan atau pergantian gambar terlihat lebih menarik dan bagus.  Selain itu diperlukan juga kecepatan tertentu untuk tampilan gambar yang akan dibuat dalam animasi. Hal ini tergantung pada jumlah gambar yang diberikan. Kecepatan yang dimaksud yaitu begitu satu gambar ditampilkan maka akan berganti gambar berikutnya dengan kecepatan tertentu. Makin cepat pergantian antara satu gambar dengan gambar berikutnya maka akan menghasilkan gerakan gambar yang semakin halus.

2.9              Permainan Battle Ship
Permainan ini menyediakan beberapa buah tempat yang disusun oleh kotak – kotak sebagai medan perang. 
 
  Gambar 2.7.Medan perang pada permainan Battle Ship
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).
 
BAB III
 PEMBAHASAN DAN PERANCANGAN

3.1  Pembahasan
Perancangan perangkat lunak permainan strategi Battle Ship pada jaringan ini ini melalui beberapa tahapan proses yaitu :
  1. Perancangan Gambar Kapal.
Kapal yang digunakan dalam perangkat lunak ini terdiri dari :
    1. Battleship dengan ukuran 4 kotak sebanyak 1 buah.
    2. Cruiser dengan ukuran 3 kotak sebanyak 2 buah.
    3. Submarine dengan ukuran 2 kotak sebanyak 3 buah.
    4. Destroyer dengan ukuran 1 kotak sebanyak 4 buah.
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.
Khusus untuk gambar kapal Destroyer yang memiliki panjang 1 kotak saja dirancang dengan menggunakan gambar tersendiri dan bukan merupakan gabungan dari bagian-bagian kapal tersebut.
Gambar-gambar di atas juga dirancang secara vertikal dengan menggunakan metoda yang sama.
  1. 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.
  1. 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.
  1. 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.
  1. 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 :
 Gambar 3.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 :
 Gambar 3.2 Penomoran kotak pada medan perang
  1. 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
  1. 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 koordinat yang ditembak juga ditandai. Proses perhitungan posisi x dan y tersebut sama dengan proses perhitungan pada penentuan posisi kapal di atas.
  1. Penentuan Pemenang.
Jika jumlah bagian kapal yang ditandai sama dengan 20 maka berarti semua kapal telah tertembak, maka pemain lawan dinyatakan menang.
  1. Perhitungan Score.
Jika sebuah kapal telah ditenggelamkan maka score pemain akan ditambahkan. 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.

3.2  Perancangan
Perangkat lunak permainan strategi 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.
Perangkat lunak permainan ini beberapa tampilan yaitu :
  1. Tampilan Splash Screen.
  2. Tampilan Setting Koneksi.
  3. Tampilan Tempat Penyusunan Kapal.
  4. Tampilan Medan Perang.
3.2.1    Tampilan Splash Screen
 Gambar 3.3 Rancangan Tampilan Splash Screen

Keterangan :
1   : judul topik skripsi.
2   : data penyusun tugas akhir (skripsi).
3   : gambar icon dari perangkat lunak.

    
3.2.2    Tampilan Setting Koneksi

 Gambar 3.4 Rancangan Tampilan Setting Koneksi
 Keterangan :
1   : title bar.
2   : tombol ‘x’, berfungsi untuk menutup perangkat lunak.
3   : option button ‘Sebagai Server’ untuk bermain pada jaringan dengan koneksi
      sebagai server.
4   : option button ‘Sebagai Client’ untuk bermain pada jaringan dengan koneksi
      sebagai client.
5   : tombol ‘Mulai Permainan’, berfungsi untuk menampilkan tampilan Tempat
       Penyusunan Kapal.
6   : tombol ‘Keluar’, berfungsi untuk keluar dari perangkat lunak.

3.2.3    Tampilan Tempat Penyusunan Kapal


Gambar 3.5 Rancangan Tampilan Tempat Penyusunan Kapal

Keterangan :
1   : title bar.
2   : tombol ‘x’, berfungsi untuk menutup perangkat lunak.
3   : tempat penyusunan kapal.
4   : option buttonBattleship’ untuk memilih kapal Battleship.
5   : option buttonCruiser’ untuk memilih kapal Cruiser.
6   : option buttonSubmarine’ untuk memilih kapal Submarine.
7   : option buttonDestroyer’ untuk memilih kapal Destroyer.
8   : option button ‘Hapus’ untuk menghapus penempatan kapal sebelumnya.
9   : daerah tampilan gambar kapal yang sedang dipilih.
10 : status giliran dari pemain yaitu apakah sudah siap atau belum.
11 : tombol ‘Mulai’ untuk memulai permainan.
 
3.2.4    Tampilan Medan Perang
Gambar 3.6 Rancangan Tampilan Medan Perang
Keterangan :
1   : title bar.
2   : tombol ‘x’, berfungsi untuk menutup perangkat lunak.
3   : daerah tampilan posisi kapal pemain.
4   : daerah medan perang.
5   : tempat pengisian pesan yang ingin dikirimkan kepada pemain lawan.
6   : status giliran dari pemain yaitu apakah sedang mendapat giliran atau tidak.
7   : tempat untuk menampilkan score pemain.
8   : progressbar untuk menampilkan batas waktu.


BAB IV

ALGORITMA DAN IMPLEMENTASI


4.1       Algoritma

Algoritma perancangan perangkat lunak permainan strategi ‘Battle Ship’ pada jaringan dibagi menjadi 6 bagian yaitu,
  1. Algoritma Pengaturan Koneksi Antara 2 (Dua) Pemain.
  2. Algoritma Penggambaran Papan Permainan.
  3. Algoritma Peletakan Kapal Pada Papan Permainan.
  4. Algoritma Tembak Kapal Lawan.
  5. Algoritma Ubah Giliran Pemain.
  6. Algoritma Pengecekan Permainan Berakhir.

4.1.1        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 basicwinsock’ 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 , 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


4.1.2        Algoritma Penggambaran Papan Permainan
Penulis merancang papan permainan berukuran 10 x 10 petak. Papan permainan merupakan tempat diletakkannya kapal pemain. 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

4.1.3        Algoritma Peletakan Kapal Pada Papan Permainan
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).
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,
{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

4.1.4        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

4.1.5        Algoritma Ubah Giliran Pemain
Algoritma 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

4.1.6        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
  
4.2              Implementasi Sistem
Implementasi sistem dalam perangkat lunak pembelajaran ini mencakup spesifikasi kebutuhan perangkat keras (hardware) dan spesifikasi perangkat lunak (software).

4.2.1        Spesifikasi Perangkat Keras dan Perangkat Lunak
Program ini dijalankan dengan menggunakan perangkat keras (hardware) yang direkomendasikan sebagai berikut :
1.            Prosesor Intel Pentium IV 2.4 GHz.
2.            Memory 128 MB.
3.            Harddisk 40 GB, dengan freespace 200 MB.
4.            VGA card 32 MB.
5.            Monitor dengan resolusi 800 X 600 pixel.
6.            Keyboard dan  Mouse
7.            Network Card – 100 MBps dan adanya jaringan LAN.
Adapun perangkat lunak (software) yang direkomendasikan untuk menjalankan aplikasi ini adalah lingkungan sistem operasi MS-Windows NT/2000/XP.
 
4.2.2        Tampilan Output
Klik pada filePermainan Battle-Ship (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 4.1  Tampilan Form Splash Screen
 
Setelah itu, akan muncul tampilan ‘Setting Koneksi’. Apabila anda memilih koneksi sebagai server, maka anda harus menunggu koneksi dari pemain client. Apabila anda memilih koneksi sebagai client, maka anda harus memasukkan ip-address komputer server yang dituju.
 Gambar 4.2  Tampilan Setting Koneksi

 Apabila koneksi winsock telah terhubung, maka akan muncul tampilan input form untuk meng-input nama pemain.

 Gambar 4.3  Tampilan Input Form Nama
.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 4.4  Tampilan Pengaturan Letak Kapal
Permainan akan dimulai setelah kedua pemain klik tombol ‘Mulai’. Selanjutnya, muncul tampilan medan perang.
Gambar 4.5  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 4.6 Tampilan Tembakan Gagal Pada Komputer-1 (Pemain yang menembak)
Gambar 4.7  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 4.8 Tampilan Tembakan Berhasil Pada Komputer-1 (Pemain yang menembak)








Apabila tembakan lawan berhasil, maka akan muncul animasi api pada bagian kapal yang tertembak pada daerah kotak sebelah kiri.
Gambar 4.9  Tampilan Tembakan Berhasil Pada Komputer-2 (Pemain yang ditembak)
















0 Responses to "BATTLESHIP MULTI PLAYER 2 PEMAIN":