PENGEMBANGAN APLIKASI PERMAINAN KAPAL PERANG ( BATTLESHIP )

Ukuran: px
Mulai penontonan dengan halaman:

Download "PENGEMBANGAN APLIKASI PERMAINAN KAPAL PERANG ( BATTLESHIP )"

Transkripsi

1 PENGEMBANGAN APLIKASI PERMAINAN KAPAL PERANG ( BATTLESHIP ) Laporan Tugas Akhir Diajukan untuk melengkapi persyaratan mencapai gelar sarjana strata satu (S1) Program Studi Teknik Informatika oleh RUDI SETIYADI NIM PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS MERCU BUANA JAKARTA 2008 i

2 ABSTRAK Perangkat komputer saat ini tidak hanya digunakan untuk keperluan pekerjaan saja, namun juga telah digunakan sebagai alat hiburan digital. Salah satu hiburan yang dapat dinikmati melalui perangkat komputer dan saat ini sedang digemari oleh anak-anak dan dewasa adalah aplikasi permainan (computer game). Aplikasi permainan komputer berkembang dengan pesatnya. Diantara aplikasi-aplikasi permainan yang telah ada saat ini, banyak yang rumit alur permainannya sehingga membuat bosan para penggunanya. Dengan latar belakang tersebut dan terinspirasi dari sebuah buku tentang pemrograman permainan komputer, penulis membuat dan mengembangkan aplikasi permainan komputer sederhana dengan karakter kapal perang yang disebut dengan Battleship yang dapat dijadikan alternatif bagi para penggemar aplikasi permainan komputer dan dapat dipelajari dengan mudah bagi para pemula dibidang pemrograman komputer. Aplikasi permainan kapal perang (Battleship) dibangun menggunakan Microsoft Visual Basic versi 6.0 edisi Profesional. Dalam melakukan analisis kebutuhan untuk aplikasi permainan tersebut penulis menggunakan alat pemodelan visual Unified Modeling Language (UML). Diagram-diagram UML yang digunakan oleh penulis adalah diagram Use Case, Class Diagram, diagram Sekuensial, dan diagram Aktivitas, Diagram Deployment. Kata kunci: aplikasi permainan komputer, aplikasi permainan kapal perang, pemrograman permainan dengan Visual Basic. ii

3 ABSTRACT Today computer is not only used as a tool for helping human works, however computer is also used as a digital entertainment device. One of the entertainments which can be enjoyed from a computer system and very popular for children and adult is computer game. Computer game is growing rapidly. Among the computer game which has been released lately, many of them are much complicated in the flow of the game scenarios. This situation makes the player bored. Based on this background and inspired by a game programming book, I developed a simple battleship game called as Battleship that can be used as an alternative game for the game lover and can be learned by beginner programmer who wants to understand the basic of game programming. The Battleship game is built on Microsoft Visual Basic version 6.0 professional edition. I used Unified Modeling Language (UML) to analyze the requirements of the game. UML diagrams which I used are; Use Case diagram, Class diagram, Sequence diagram, and Activity diagram, Deployment diagram. Keywords: computer game, battleship game, game programming with Visual Basic iii

4 LEMBAR PENGESAHAN Yang bertanda tangan dibawah ini menyatakan bahwa laporan Tugas Akhir dari mahasiswa berikut ini: Nama : Rudi Setiyadi NIM : Fakultas : Teknologi Industri Program Studi : Teknik Informatika Judul : Pengembangan Aplikasi Permainan Kapal Perang ( Battleship ) Telah disidangkan, diperiksa, dan disetujui sebagai laporan Tugas Akhir. Jakarta,...Agustus 2008 Menyetujui, Menyetujui, (Joko Adianto, MInfSys) Pembimbing I Tugas Akhir (Nurani, ST. MMSI) Pembimbing II Tugas Akhir Mengesahkan, Mengetahui, (Abdusy Syarif, ST.,MT) Ketua Program Studi Teknik Informatika (Raka Yusuf, ST., MTI) Koordinator Tugas Akhir iv

5 KATA PENGANTAR Dengan memanjatkan puji syukur kepada Allah SWT, atas rahmat dan izin- Nya penulis telah dapat menyelesaikan laporan Tugas Akhir ini. Laporan Tugas akhir yang telah penulis susun berjudul Pengembangan Aplikasi Permainan Kapal Perang (Battleship). Penulisan Tugas Akhir ini dapat terwujud karena adanya motivasi dan bantuan dari berbagai pihak. Dalam kesempatan ini dengan tulus dan ikhlas penulis mengucapkan terima kasih kepada: 1. Penulis mengucapkan terima kasih kepada kedua orang tua yang telah memberi semangat dan do a yang tiada henti untuk dapat menyelesaikan tugas akhir ini. 2. Bapak Joko Adianto MInfSys, selaku pembimbing ke I bagi penulis yang dengan sabar telah membimbing, mengarahkan, dan memberi semangat untuk segera menyelesaikan Tugas Akhir ini. 3. Ibu Nurani, ST, MMSI, selaku pembimbing ke II bagi penulis yang dengan sabar telah membimbing dan mengarahkan penulis dalam menyusun Tugas Akhir ini serta memberi semangat untuk segera menyelesaikan laporan ini. 4. Bapak Abdusy Syarif, ST., MT., selaku Ketua Program Studi Teknik Informatika Universitas Mercu Buana 5. Bapak Raka Yusuf, ST., MTI., selaku pembimbing akademik penulis dan koordinator Tugas Akhir di Program Studi Teknik Informatika Universitas Mercu Buana yang telah membantu penulis dalam memberi ide-ide dalam melakukan analisis kebutuhan sistem. v

6 6. Penulis mengucapkan terima kasih kepada Yenny Aripin yang telah membantu dan memberikan dukungan supaya penulis dapat menyelesaikan laporan tugas akhir ini. 7. Penulis mengucapkan terima kasih kepada adik saya Teti Nurfaedah A.Md, dan Fery Fadhilah yang telah memberikan dukungan supaya penulis dapat menyelesaikan laporan tugas akhir ini. 8. Penulis mengucapkan terima kasih kepada Ryan Andriatno, SKom. Suseno Yusuf Ilhami, SKom, Respati Hanantyo, Chandra Nugroho, Agung, yang telah membantu dan memberikan dukungan supaya penulis dapat menyelesaikan laporan tugas akhir ini. 9. Seluruh teman-temanku di Jakarta, termasuk para mahasiswa Universitas Mercu Buana jurusan Teknik Informatika angkatan Seluruh pihak yang tidak dapat penulis sebutkan namanya satu persatu, terima kasih atas bantuan, do a, dan dukungannya hingga terselesaikannya penyusunan Tugas Akhir ini semoga kalian semua dirahmati Allah SWT. Penulis menyadari bahwa laporan Tugas Akhir ini masih jauh dari sempurna. Untuk itu penulis selalu terbuka terhadap segala saran dan kritik yang bersifat membangun. Demikian penulis berharap semoga laporan Tugas Akhir ini dapat bermanfaat. Jakarta, Agustus 2008 Rudi Setiyadi vi

7 DAFTAR ISI Halaman Judul... i Abstrak... ii Abstract... iii Lembar Pengesahan... iv Kata Pengantar... v Daftar Isi... vii Daftar Gambar... xi Daftar Tabel... xiii Daftar Kode... xiv BAB I : PENDAHULUAN Latar Belakang Perumusan masalah Tujuan Pembahasan Ruang Lingkup Metodologi Rekayasa Perangkat Lunak Sistematika Penulisan... 5 BAB II : LANDASAN TEORI Pengertian Permainan Komputer Sejarah Singkat Permainan Komputer Model Waterfall Unified Modeling Language Diagram Use Case (Use Case Diagram) Class Diagram vii

8 2.3.3 Diagram Sekuensial (Sequence Diagram) Diagram Aktifitas (Activity Diagram) Diagram Deploymen (Deployment Diagram) Pengantar Algoritma Diagram Alur (Flowchart) Pengantar Visual Basic Koordinat Grafik dalam Visual Basic Win32 Application Programming Interface (Win32 API) Teknik Masking BAB III : ANALISIS DAN PERANCANGAN Analisis Masalah Spesifikasi Kebutuhan Sistem Parameter Keberhasilan Diagram Use Case Struktur Tabel Class Diagram Diagram Sekuensial Diagram Aktifitas Diagram Deploymen Algoritma Perhitungan Skor Diagram Alur (Flowchart) Perancangan Antarmuka Permainan Perancangan Jendela Inisialisasi viii

9 Perancangan Jendela meletakkan kapal perang Perancangan Jendela Permainan Perancangan Jendela petunjuk Perancangan Jendela nama Perancangan Jendela ranking BAB IV : IMPLEMENTASI DAN PENGUJIAN Implementasi Lingkungan Implementasi Pengkodean Antarmuka Permainan Tampilan jendela Inisialisasi Tampilan jendela Meletakkan Kapal Perang Tampilan jendela Permainan Tampilan jendela Petunjuk Tampilan jendela Nama Tampilan jendela Ranking Pengujian Metode Pengujian Pengujian Basis Path Skenario Pengujian Hasil Pengujian Analisis Hasil Pengujian BAB V : PENUTUP Kesimpulan ix

10 5.2 Saran Daftar Pustaka Lampiran... L1 x

11 DAFTAR TABEL Tabel 2.1 Tipe diagram UML Tabel 2.2 Notasi-notasi dalam diagram Use Case menurut Booch, Rumbaugh, dan Jacobson Tabel 2.3 Notasi dalam pemodelan diagram Sekuensial Tabel 2.4 Simbol-simbol yang sering digunakan pada diagram Aktifitas Tabel 2.5 Notasi pada diagram Deployment Tabel 3.1 Kebutuhan sistem, aktor dan use case pada aplikasi permainan kapal perang (Battleship)...28 Tabel 3.2 Tabel Ranking Tabel 4.1 Tabel pengujian white box pada grafik alir meletakkan kapal perang Tabel 4.2 Tabel Jalur pengujian white box pada grafik alir set kapal perang secara horizontal dan vertical 63 Tabel 4.3 Tabel pengujian white box pada grafik alir mengumpulkan nilai (score)64 Tabel 4.4 Tabel skenario pengujian Tabel 4.5 Tabel hasil pengujian xiii

12 DAFTAR GAMBAR Gambar 2.1 Model Waterfall... 9 Gambar 2.2 Contoh diagram Use Case sistem ATM Gambar 2.3 Class diagram dan sintaksnya Gambar 2.4 Contoh diagram Sekuensial (Dennis dkk, 2005:239) Gambar 2.5 Macam-macam Flow & Edge Gambar 2.6 Contoh diagram Aktifitas terima order barang Gambar 2.7 Contoh diagram Deployment system klien/server Gambar 2.8 Simbol-simbol diagram alur (Jogiyanto, 2005: ) Gambar 2.9 Penggunaan simbol-simbol proses flowchart Gambar 2.10 Sistem koordinat pada Visual Basic Gambar 2.11 Gambar sumber dan gambar Mask Gambar 2.12 Menampilkan obyek tanpa teknik Masking Gambar 2.13 Contoh penggunaan BitBlt untuk teknik Masking Gambar 2.14 Menampilkan obyek dengan teknik Masking Gambar 3.1 Diagram Use Case permainan pesawat perang (Battleship) Gambar 3.2 Class Diagram pada aplikasi permainan Battleship Gambar 3.3 Diagram Sekuensial untuk Use Case memulai permainan Gambar 3.4 Diagram Sekuensial untuk Use Case mengumpulkan nilai (score) Gambar 3.5 Diagram Aktifitas untuk Use Case memulai permainan Gambar 3.6 Diagram Aktifitas untuk Use Case mengumpulkan nilai (score) Gambar 3.7 Diagram Deployment dari aplikasi permainan Battleship Gambar 3.8 Diagram alur perhitungan nilai (skor) xi

13 Gambar 3.9 Perancangan jendela inisialisasi Gambar 3.10 Perancangan jendela meletakkan kapal perang Gambar 3.11 Perancangan jendela permainan Gambar 3.12 Perancangan jendela petunjuk Gambar 3.13 Perancangan jendela nama Gambar 3.14 Perancangan jendela ranking Gambar 4.1 Tampilan jendela inisialisasi Gambar 4.2 Tampilan jendela meletakkan kapal perang yang belum terisi kapal perang Gambar 4.3 Tampilan jendela meletakkan kapal perang yang sudah terisi kapal perang Gambar 4.4 Tampilan jendela permainan Gambar 4.5 Tampilan jendela ledakan yang terjadi karena proses tembakan dari pemain Gambar 4.6 Tampilan jendela petunjuk Gambar 4.7 Tampilan jendela nama Gambar 4.8 Tampilan jendela ranking Gambar 4.9 Bagan alir meletakkan kapal perang Gambar 4.10 Grafik alir meletakkan kapal perang Gambar 4.11 Bagan alir set kapal perang secara horizontal dan vertical Gambar 4.12 Grafik alir set kapal perang secara horizontal dan vertical Gambar 4.13 Bagan alir mengumpulkan nilai (score) Gambar 4.14 Grafik alir mengumpulkan nilai (score) xii

14 BAB I PENDAHULUAN 1.1 Latar Belakang Perangkat komputer saat ini tidak hanya digunakan untuk keperluan pekerjaan saja, namun juga telah digunakan sebagai alat hibur digital. Salah satu hiburan yang dapat dinikmati melalui perangkat komputer dan saat ini sedang digemari oleh anakanakda dewasa adalah aplikasi permainan (computer game). Program aplikasi permainan pada komputer hingga saat ini telah menjadi bagian yang tak terpisahkan dari para pengguna komputer. Banyak pengguna komputer yang penulis temui menghabiskan waktu mereka di depan komputer untuk bermain program aplikasi permainan selama berjam-jam. Program aplikasi permainan menjadi wujud perpaduan antara ilmu dan seni, dan memiliki potensi media dalam memperkenalkan budaya, ide, pendidikan, dan kreativitas. 1

15 2 Seiring dengan beraneka ragamnya permainan komputer saat ini, dari permainan komputer 2D hingga 3D yang kompleks dan tidak jarang pula permainan komputer yang sangat rumit alur permainannya membuat bosan para penggunanya, maka penulis akan membuat sebuah permainan komputer sederhana dengan objek kapal perang yang dapat dipelajari dengan mudah oleh pemula dibidang pemrograman komputer dan dapat dijadikan alternatif bagi para penggemar permainan komputer. Salah satu alasan mengapa permainan komputer merupakan proyek pemrograman yang bagus adalah pembuatan program aplikasi permainan membutuhkan individu yang sangat kreatif. Selain hal tersebut, membuat program aplikasi permainan memberikan wawasan keahlian pemrograman yang sangat luas bagi pemula maupun bagi yang sudah mahir. Diantara keahlian tersebut yaitu kemampuan merancang antarmuka permainan, kemampuan grafika komputer, membuat kecerdasan buatan, membuat simulasi fisik, menggubah musik, optimisasi kode sumber, dan lain sebagainya. Dalam membuat program permainan komputer tersebut, penulis menggunakan bahasa pemrograman Visual Basic 6.0 edisi profesional. 1.2 Perumusan Masalah Terciptanya sebuah pengembangan program permainan komputer menggunakan Visual Basic versi 6.0 dengan menyertakan fungsi Win32 Application Programming Interface (Win32 API) yaitu fungsi yang terkandung dalam berbagai berkas bertipe *.dll di dalam sistem operasi Windows yang menjadi tulang punggung sistem operasi tersebut.

16 3 1.3 Tujuan Pembahasan Tujuan yang ingin dicapai dalam penulisan Tugas Akhir ini adalah untuk menghasilkan sebuah pengembangan aplikasi permainan komputer dengan objek kapal perang yang berjalan pada komputer berbasis sistem operasi Windows khususnya Windows XP Profesional. 1.4 Ruang Lingkup Permasalahan yang diangkat dalam penulisan Tugas Akhir ini adalah bagaimana mengembangkan sebuah program permainan komputer kapal perang dengan menggunakan bahasa pemrograman Visual Basic versi 6.0 dan fungsi Win32 API. Proses awal pembuatan program permainan kapal perang tersebut yaitu dengan memasukan gambar latar, gambar objek kapal pemain, deteksi mouse terhadap objek, dan memasukkan suara (suara efek) ke dalam pembuatan permainan komputer tersebut sehingga permainan tersebut dapat dimainkan dan dinikmati oleh pengguna komputer. Program permainan yang akan dibangun hanya dapat dimainkan oleh satu orang pemain. Perolehan nilai (score) disimpan ke dalam basis data dan akan ditampilkan ke dalam ranking. Diluar hal-hal yang disebutkan diatas, termasuk pembahasan mengenai kecerdasan buatan dan DirectX adalah diluar penulisan Tugas Akhir ini, karena penulis tidak menggunakan kecerdasan buatan dan DirectX di dalam pembuatan program permainan tersebut.

17 4 1.5 Metodologi Rekayasa Perangkat Lunak Metodologi rekayasa perangkat lunak yang digunakan oleh penulis dalam laporan Tugas Akhir ini adalah dengan menggunakan model Waterfall. Model Waterfall memiliki beberapa tahapan yaitu: 1. Analisis Pada tahap ini penulis menentukan kebutuhan fungsional dari program permainan yang akan dibangun menggunakan alat pemodelan Unified Modeling Language (UML) khususnya dengan diagram Use Case, diagram Sequensial, diagram Aktivitas. 2. Perancangan Pada tahap ini penulis melakukan perancangan antarmuka dari aplikasi yang akan dibuat sesuai dengan kebutuhan hasil tahap analisis. 3. Implementasi Pada tahap ini hasil tahap perancangan diimplementasikan melalui proses pengkodean menggunakan Microsoft Visual Basic versi Pengujian Setelah pembuatan program permainan selesai, maka program permainan tersebut diuji untuk mengetahui sesuai tidaknya dengan kebutuhan pada tahap analisis. 5. Penggunaan dan Perawatan Dalam penulisan Tugas Akhir ini, penulis tidak menyertakan tahap penggunaan dan perawatan dikarenakan pembuatan program permainan kapal perang ini hanya sampai pada tahap pengujian.

18 5 1.6 Sistematika Penulisan Laporan Tugas Akhir ini disusun dengan sistematika terstruktur. Lima (5) bab yang disusun agar pembaca dapat memahami secara jelas pokok pembahasan penulis. Sistematika penulisannya adalah sebagai berikut: BAB I : PENDAHULUAN Bab ini menguraikan latar belakang penulisan, perumusan masalah, tujuan pembahasan, ruang lingkup, metodologi rekayasa perangkat lunak, dan sistematika penulisan. BAB II : LANDASAN TEORI Pada bab ini akan dijelaskan mengenai teori-teori dasar yang digunakan dalam merancang dan membangun program permainan komputer dalam penulisan Tugas Akhir ini. BAB III : ANALISIS DAN PERANCANGAN Bab ini menjelaskan mengenai analisis masalah dan proses perancangan dari program permainan yang akan dibangun sehingga siap untuk diimplementasikan menggunakan bahasa pemrograman Visual Basic versi 6.0. BAB IV : IMPLEMENTASI DAN PENGUJIAN Bab ini menjelaskan mengenai proses pengkodean, tampilan antarmuka sistem, dan pengujian sistem. BAB V : PENUTUP Bab ini merupakan bagian akhir dari penulisan Tugas Akhir ini yang berisi kesimpulan dan saran-saran yang mengarah kepada pengembangan program permainan yang dibuat.

19 BAB II LANDASAN TEORI 2.1 Pengertian Permainan Komputer Permainan komputer (computer game) atau disebut juga dengan permainan video (video game) adalah sebuah program yang ditulis dalam sebuah bahasa pemrograman, seperti C++ atau Visual Basic, yang mengijinkan seorang pemain berinteraksi dan bereaksi terhadap kejadian-kejadian di dalam sebuah dunia imajinasi (Harbour, 2002:16) Sejarah Singkat Permainan Komputer Permainan komputer pertama kali dibuat pada tahun 1966 oleh Ralph Baer bersama dengan 500 insinyur dan teknisi. Permainan yang diproduksi oleh Baer hanya dapat dimainkan pada komputer berharga US$ Siapakah yang mau mendanai proyek Baer tersebut? Jawabannya adalah pihak militer Amerika Serikat, Pentagon. 6

20 7 Pada tahun 1965, Pentagon datang kepada Baer dan meminta dibuatkan simulasi komputer yang dapat membantu pasukan militer Amerika Serikat untuk belajar strategi dan mengukur kemampuan refleks. Proyek ini dikerjakan dengan tingkat pengamanan yang tinggi ditengah situasi perang dingin saat itu. Setelah satu bulan bekerja keras, Baer berhasil menampilkan dua titik putih yang berkejar-kejaran di layar monitor. Hal ini membuat pihak militer kagum dan memberikan dana jauh lebih besar kepada Baer sehingga ia dapat menyewa asisten lebih banyak. Tim Baer berhasil membuat permainan antara papan dan bola yang pada akhir tahun 1966 dipresentasikan di depan pejabat Pentagon. Ternyata hal tersebut tidak membuat Pentagon tertarik sehingga Baer kemudian berusaha memperoleh izin agar memproduksi mesin permainan secara komersial. Pada tahun 1970, Bill Enders yang tergabung dalam perusahaan Magnavox berusaha meyakinkan eksekutif perusahaannya untuk memberikan kesempatan kepada Baer dan mesin permainannya. Hasilnya adalah munculnya permainan video (video game) komersial pertama yaitu Magnavox Odyssey yang terjual lebih dari unit dengan harga US$ 100 per unit (Hakim, 2003:1). 2.2 Model Waterfall Salah satu metodologi untuk merancang sistem-sistem perangkat lunak adalah model Waterfall. Pendekatan model Waterfall berupaya membangun suatu lingkungan yang sangat terstruktur dimana proses pengembangan dilaksanakan secara sekuensial. Model Waterfall terdiri dari dari beberapa tahap yaitu:

21 8 1. Analisis Tahap pengembangan rekayasa perangkat lunak dimulai dengan analisis yang sasaran utamanya adalah mengidentifikasikan apa yang harus mampu dilaksanakan oleh sistem yang diajukan. 2. Perancangan Apabila analisis menitikberatkan pada apa yang harus mampu dilakukan oleh sistem yang diajukan, perancangan menitikberatkan pada bagaimana sistem melakukan hal tersebut. Pada tahap inilah struktur sistem perangkat lunak dibangun. 3. Implementasi Implementasi melibatkan penulisan aktual program-program, pembuatan berkasberkas data, dan pengembangan basis data. 4. Pengujian Pengujian sangat terkait erat dengan implementasi, karena setiap modul sistem biasanya diuji ketika diimplementasikan. 5. Penggunaan dan modifikasi/perawatan Dalam penulisan Tugas Akhir ini, penulis tidak menyertakan tahap penggunaan dan perawatan karena pembuatan program permainan hanya sampai pada tahap pengujian. Gambar 2.1 memperlihatkan metodologi pengembangan rekayasa perangkat lunak model Waterfall (Brookshear, 2003:284).

22 9 Analisis Pengembangan perangkat lunak Perancangan Implementasi Pengujian Penggunaan Perawatan Gambar 2.1. Model Waterfall 2.3 Unified Modeling Language (UML) Pengembangan sistem adalah aktifitas manusia. Tanpa adanya kemudahan untuk memahami notasi, proses pengembangan sistem kemungkinan besar akan mengalami kesalahan. Unified Modeling Language (selanjutnya disebut dengan UML) adalah sistem notasi yang sudah dibakukan di dunia pengembangan sistem, hasil kerja bersama dari Grady Booch, James Rumbaugh, dan Ivar Jacobson. Menurut Munawar (2005:17) UML adalah alat bantu yang sangat handal di dunia pengembangan sistem yang berorientasi obyek. Hal ini disebabkan karena UML menyediakan bahasa pemodelan visual yang memungkinkan bagi pengembang sistem untuk membuat cetak biru atas visi mereka dalam bentuk yang baku, mudah dimengerti serta dilengkapi dengan mekanisme yang efektif untuk berbagi dan mengkomunikasikan rancangan mereka dengan klien, programmer, dan tiap orang yang terlibat dalam proses pengembangan tersebut.

23 10 Paling tidak ada tiga karakter penting yang melekat di UML, yaitu sketsa, cetak biru, dan bahasa pemrograman. Sebagai sebuah sketsa, UML bisa berfungsi sebagai jembatan dalam mengkomunikasikan beberapa aspek dari sistem. Dengan demikian sebuah tim akan mempunyai gambaran yang sama tentang suatu sistem. UML bisa berfungsi sebagai sebuah cetak biru karena sangat lengkap dan detil. Dengan cetak biru ini maka akan bisa diketahui informasi detil tentang pengkodean program atau bahkan membaca program dan menginterpretasikannya kembali ke dalam diagram. Sebagai sebuah bahasa pemrograman, UML dapat menterjemahkan diagram yang ada di UML menjadi kode program yang siap untuk dijalankan. Di proyek pengembangan sistem apapun, fokus utama dalam analisis dan perancangan adalah model dan diagram. Model menggambarkan pandangan yang lengkap tentang suatu sistem pada suatu tahapan tertentu dan dari perspektif tertentu. Sedangkan diagram menggambarkan atau mendokumentasikan beberapa aspek dari sebuah sistem. Sebuah model mungkin mengandung satu atau lebih diagram. untuk model sederhana, satu diagram mungkin akan mencukupi. Akan tetapi biasanya sebuah model terdiri dari banyak diagram. Tabel 2.1 menampilkan beberapa tipe diagram UML. Tabel 2.1. Tipe diagram UML No Diagram Tujuan 1. Activity Perilaku prosedural & paralel 2. Class Class, fitur dan relasinya 3. Communication Interkasi diantara obyek. Lebih menekankan ke link 4. Component Struktur dan koneksi dari komponen 5. Composite Structure Dekomposisi sebuah class saat runtime 6. Deployment Penyebaran/instalasi ke klien 7. Interaction Overview Gabungan antara Activity & Sequence diagram 8. Object Contoh konfigurasi instance 9. Package Struktur hierarki saat kompilasi 10. Sequence Interaksi antar obyek. Lebih menekankan pada urutan 11. State Machine Bagaimana event mengubah sebuah obyek 12. Timing Interaksi antar obyek. Lebih menekankan pada waktu 13. Use Case Bagaimana user berinteraksi dengan sebuah sistem

24 11 Pada penulisan Tugas Akhir ini, diagram UML yang akan dibahas adalah diagram Use Case (Use Case diagram) untuk mendefinisikan kebutuhan fungsional dari aplikasi permainan yang akan dibangun, diagram State Machine (State Machine diagram) untuk menelusuri kejadian yang diterima obyek, diagram Sekuensial (Sequence diagram) untuk menggambarkan perilaku sistem, diagram Aktifitas (Activity diagram) untuk menunjukkan operasi sebuah obyek, dan diagram Deploymen (Deployment diagram) untuk melihat sistem secara fisik Diagram Use Case (Use Case Diagram) Use Case adalah deskripsi fungsi dari sebuah sistem dari perspektif pengguna. Use Case bekerja dengan cara mendeskripsikan tipikal interaksi antara pengguna sebuah sistem dengan dengan sistemnya sendiri melalui sebuah cerita bagaimana sebuah sistem dipakai. Urutan langkah-langkah yang menerangkan antara pengguna dan sistem disebut skenario. Setiap skenario mendeskripsikan urutan kejadian. Setiap urutan diinisialisasi oleh orang, sistem yang lain, perangkat keras, atau urutan waktu. Dengan demikian secara singkat Use Case adalah serangkaian skenario yang digabungkan secara bersama-sama oleh tujuan umum pengguna. Dalam pembicaraan tentang Use Case, pengguna biasanya disebut dengan aktor. Aktor adalah sebuah peran yang bisa dimainkan oleh pengguna dalam interaksinya dengan sistem. Aktor mewakili peran orang, sistem yang lain, atau alat ketika berkomunikasi dengan Use Case. Di dalam Use Case terdapat Stereotype yaitu sebuah model khusus yang terbatas untuk kondisi tertentu. Untuk menunjukkan Stereotype digunakan simbol << diawalnya dan ditutup >> diakhirnya. <<include>> digunakan untuk menggambarkan bahwa suatu Use Case seluruhnya

25 12 merupakan fungsionalitas dari Use Case lainnya. Biasanya <<include>> digunakan untuk menghindari penggandaan suatu Use Case karena sering dipakai. <<extend>> digunakan untuk menunjukkan bahwa suatu Use Case merupakan tambahan fungsional dari Use Case yang lain jika kondisi atau syarat tertentu dipenuhi (Munawar, 2005:66). Di dalam Use Case juga terdapat generalisasi. Generalisasi diantara aktor adalah spesialisasi aktor yang bisa berpartisipasi di semua Use Case yang diasosiasikan dengan aktor yang lebih umum. Tabel 2.2 menampilkan notasi-notasi dalam pemodelan diagram Use Case menurut Booch dkk (1998:187). Sedangkan contoh dari diagram Use Case diperlihatkan oleh Gambar 2.2. Tabel 2.2. Notasi-notasi dalam pemodelan diagram Use Case menurut Booch dkk No. Notasi Keterangan 1. Aktor 2. Use Case Nama sistem 3. Batas sistem (system boundary) 4. Garis penghubung (pengendali arah) 5. Gabungan (association) 6. Generalisasi (generalization) 7. Realisasi (realization) << include >> 8. Stereotype penyertaan (include) << extend >> 9. Stereotype perluasan (extend)

26 13 ATM System <<include>> Withdraw Card identification Customer Gambar 2.2. Contoh diagram Use Case sistem ATM ( Menurut Munawar (2005:179) setiap Use Case harus didokumentasikan dalam dokumen yang disebut dengan dokumen flow of event. Dokumen ini mendefinisikan apa yang harus dilakukan oleh sistem ketika Aktor mengaktifkan Use Case. Struktur dari dokumen Use Case bisa bermacam-macam, tetapi umumnya deskripsi Use Case ini setidaknya harus mengandung: a. Deskripsi singkat b. Aktor yang terlibat c. Pra kondisi, kondisi yang penting bagi Use Case untuk memulai d. Deskripsi rinci dari aliran kejadian yang mencakup: 1. Tindakan utama dari kejadian 2. Tindakan alternatif dari kejadian e. pasca kondisi, yang menjelaskan status dari sistem setelah Use Case berakhir.

27 Class Diagram Menurut Martin Fowler (2005:53) diagram kelas mendeskripsikan jenis jenis objek dalam sistem dan berbagai macam hubungan statis yang terdapat di antara mereka. Diagram kelas juga menunjukan properti dan operasi sebuah kelas dan batasan batasan yang terdapat dalam hubungan hubungan objek tersebut. Diagram kelas juga menggambarkan struktur dan deskripsi kelas, package dan objek beserta hubungan satu sama lain seperti generalization, realization, association, dan agregation. Dimana generalization adalah hubungan superclass dengan subclass atau parent dengan child, realization adalah dimana sebuah class harus mengikuti aturan class lainnya, association adalah hubungan structural antar class dan aggregation adalah hubungan antar class, dimana class yang satu adalah bagian dari class yang lainnya. Berikut pada Gambar 2.3 adalah contoh diagram kelas beserta sintaksnya. Gambar 2.3 Class diagram dan sintaksnya

28 Diagram Sekuensial (Sequence Diagram) Diagram sekuensial digunakan untuk menggambarkan perilaku pada sebuah skenario. Diagram ini menunjukkan sejumlah contoh obyek dan pesan (message) yang diletakkan diantara obyek-obyek ini di dalam Use Case (Munawar, 2005:87). Komponen utama diagram sekuensial terdiri atas obyek atau disebut juga peserta (participant) yang dituliskan dengan kotak segi empat bernama, pesan diwakili oleh garis dengan tanda panah, dan waktu yang ditunjukkan dengan garis tegak lurus. Setiap obyek terhubung dengan garis titik-titik yang disebut garis hidup (lifeline). Sepanjang garis hidup terdapat kotak yang disebut penggerakan (activation). Tabel 2.3 memperlihatkan notasi-notasi dalam pemodelan diagram Sekuensial. Contoh diagram Sekuensial ditunjukkan oleh Gambar 2.4. Tabel 2.3. Notasi-notasi dalam pemodelan diagram Sekuensial No. Notasi Keterangan 1. Aktor Nama obyek 2. Obyek 3. Batas (boundary) 4. Kendali (control) 5. Entitas (entity) 6. Penggerakan (activation) 7. Garis hidup (lifeline)

29 16 8. Pesan selaras (Synchronous message) 9. Pesan tidak selaras (Asynchronous message) 10. Pesan kembali yang tidak selaras (asynchronous return message) 11. Pesan rekursif (self message) 12. Pesan hilang (lost message) 13. Pesan ditemukan (found message) New 14. Pesan pembuatan obyek baru 15. Pesan penghapusan obyek apatient areceptionist Patient: List UnPaindBills: List Appointments: List Request Appt() LookUpPatient() New,Cancel, or Change Appt?() ApptTimes?() [PatientExist] LookUpBills() Match Appt() Create Appt() anappt: Appointments Gambar 2.4. Contoh diagram Sekuensial (Dennis dkk, 2005:239)

30 Diagram Aktifitas (Activity Diagram) Diagram Aktifitas adalah teknik untuk mendeskripsikan logika prosedural, proses bisnis, dan aliran kerja dalam banyak kasus. Diagram Aktifitas mempunyai peran seperti halnya bagan alir (Flowchart), akan tetapi perbedaannya dengan bagan alir adalah diagram Aktifitas dapat mendukung perilaku paralel sedangkan bagan alir tidak bisa (Munawar 2005:109). Tabel 2.4 memperlihatkan simbol-simbol yang sering digunakan pada saat pembuatan diagram Aktifitas. Sedangkan contoh dari penggunaan simbol-simbol yang terdapat pada Tabel 2.4 ditunjukkan oleh Gambar 2.5. Tabel 2.4. Simbol-simbol yang sering digunakan pada diagram Aktifitas No Simbol Keterangan 1. Titik awal 2. Titik akhir 3. Aktifitas (activity) 4. Pilihan untuk mengambil keputusan 5. Fork; digunakan untuk menunjukkan kegiatan yang dilakukan secara paralel atau untuk menggabungkan dua kegiatan paralel menjadi satu 6. Rake; menunjukkan adanya dekomposisi 7. Tanda waktu 8. Tanda pemgiriman 9. Tanda penerimaan 10. Aliran akhir (Flow final)

31 18 Untuk mendeskripsikan hubungan diantara dua aktifitas biasanya digunakan Flow & Edge. Ada empat cara yang bisa digunakan untuk menghubungkan dua aktifitas yang ditunjukkan oleh Gambar 2.5. Terima faktur konektor Buat pembayaran Terima faktur A A Buat pembayaran Terima faktur Order Buat pembayaran Terima faktur Buat pembayaran Semua bentuk Gambar 2.5. Macam-macam Flow & Edge hubungan pada Gambar 2.6 adalah setara. Semua bisa digunakan sesuai dengan keperluan. Dalam banyak kasus cara yang pertama/paling atas adalah yang paling sering dipakai (Munawar, 2005:115). Terima order isi order Kirim invoice Overnight delivery Regular delivery Terima pembayaran close order Gambar 2.6. Contoh diagram Aktifitas terima order barang

32 Diagram Deploymen (Deployment Diagram) Diagram Deploymen menunjukkan tata letak sebuah sistem secara fisik, menampakkan bagian-bagian perangkat lunak yang berjalan pada bagian-bagian perangkat keras. Bagian utama perangkat keras adalah node, yaitu nama umum untuk semua jenis sumber komputasi. Ada dua tipe node yang mungkin. Prosesor adalah node yang bisa mengeksekusi sebuah komponen, sedangkan Device tidak. Device adalah perangkat keras (seperti printer atau monitor) yang biasanya menjadi antarmuka dengan dunia luar. Node mengandung Artifact, dimana Artifact adalah perwujudan fisik dari perangkat lunak, biasanya berbentuk berkas. Berkas-berkas ini biasanya dapat dieksekusi (seperti: berkas bertipe.exe,.jar, binner, Assembly, dan lain-lain), atau berkas-berkas data, berkas-berkas konfigurasi, dokumen berbasis web seperti HTML, dan lain-lain. Daftar sebuah Artifact di dalam sebuah node menunjukkan bahwa Artifact tersebut disebar (deployed) ke node tersebut pada saat sistem sedang dijalankan (Munawar, 2005:125). Notasi-notasi yang digunakan pada diagram Deploymen ditunjukkan oleh Tabel 2.5. Tabel 2.5. Notasi pada diagram Deploymen No Simbol Keterangan Nama Node 1. Node 2. Koneksi (association)

33 20 Sedangkan contoh penerapan diagram Deploymen ditunjukkan oleh Gambar 2.7 yaitu diagram Deploymen pemodelan sebuah sistem klien/server (Booch dkk, 1998:343). Gambar 2.7. Contoh diagram Deploymen sistem klien/server 2.4 Pengantar Algoritma Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. Kata logis merupakan kata kunci dalam sebuah algoritma. Langkah-langkah di dalam algoritma harus logis, ini berarti hasil dari urutan langkah-langkah tersebut harus dapat ditentukan benar atau salah. 2.5 Diagram Alur (Flowchart) Diagram alur menunjukkan alur di dalam program atas prosedur sistem secara logika. Diagram alur digunakan terutama untuk alat bantu komunikasi dan untuk dokumentasi (Jogiyanto, 2005:795). Simbol-simbol tersebut dapat dilihat pada Gambar 2.8.

34 21 Gambar 2.8. Simbol-simbol diagram alur (Jogiyanto, 2005: ) Berikut adalah gambar sebuah dasar diagram alir sebagai contoh dari penggunaan simbol-simbol yang telah diberikan, lihat Gambar Start 7 Choice NO 5 Action 3 Action YES 6 Action 4 Action 7 Choice NO YES 8 End Gambar 2.9. Penggunaan simbol-simbol proses flowchart

35 Pengantar Visual Basic 6.0 Visual Basic 6.0 merupakan sebuah bahasa pemrograman komputer yang berjalan pada sistem operasi Windows. Bahasa pemrograman adalah sekumpulan perintah/instruksi yang dimengerti oleh komputer untuk mengerjakan tugas-tugas tertentu (Yuswanto, 2003:1). Visual Basic (dalam penulisan Tugas Akhir ini yang dimaksud oleh penulis dengan Visual Basic adalah Visual Basic versi 6.0) adalah pemimpin diantara bahasa tingkat tinggi dalam dukungannya dengan paradigma kejadian terkontrol (event-driven paradigm) dan pengembangan aplikasi secara cepat (rapid application development). Secara khusus, popularitas Visual Basic terlihat dalam banyak segi pengembangan aplikasi, seperti aplikasi pengaksesan basis data, purwarupa antarmuka pengguna secara grafis (graphical user interface), pembuatan komponen yang terdistribusi (distributable components), pemrograman berbasis internet (internet scripting), perancangan aplikasi Client/Server, dan bahkan pengembangan aplikasi permainan (Vine, 2001:1) Koordinat Grafik dalam Visual Basic 6.0 Grafik merupakan salah satu bagian yang sangat penting di dalam program aplikasi permainan. Grafik yang bagus dan animasi yang halus merupakan kunci program aplikasi permainan yang menarik. Visual Basic menangani grafik secara baik, sehingga memungkinkan kita untuk membuat program aplikasi permainan yang memiliki gambar yang menarik. Berbeda dengan koordinat kartesian, dalam Visual Basic sistem koordinat yang digunakan memiliki titik (0,0) pada posisi kiri atas seperti yang diperlihatkan pada Gambar 2.10.

36 23 x,y Gambar Sistem koordinat pada Visual Basic Satuan yang digunakan dalam koordinat Visual Basic ini secara standar (default) adalah Twips, dimana 1 Twip = 1/1440 inchi. Satuan ini menyulitkan dalam perhitungan, sehingga dalam program aplikasi permainan yang akan dibangun menggunakan satuan Pixel yang lebih umum dikenal. Pixel merupakan titik dalam monitor, misal pada resolusi 800 x 600 Pixel, maka pada koordinat X akan terdapat 800 titik dan pada koordinat Y akan terdapat 600 titik (Hakim, 2003:7) Win32 Application Programming Interface (Win32 API) Bahasa Visual Basic menyediakan sekumpulan fungsi, perintah, dan objek yang kaya. Tetapi di dalam banyak kasus, kumpulan fungsi, perintah, dan objek tersebut tidak dapat memenuhi semua kebutuhan seorang pemrogram profesional. Pemogram yang sudah mahir telah belajar untuk mengatasi masalah keterbatasan bahasa Visual Basic tersebut dengan memanggil secara langsung satu atau lebih fungsi Win32 Application Programming Interface (selanjutnya disebut dengan Win32 API). Win32 API merupakan fungsi yang terkandung dalam berbagai berkas

37 24 Dynamic Link Library (berkas bertipe *.dll, selanjutnya disebut dengan DLL) di dalam sistem operasi Windows yang menjadi tulang punggung sistem operasi tersebut (Hakim, 2003:13). Dynamic Link Library (DLL) adalah kode yang telah disusun yang hanya dapat diakses oleh program lain pada tingkat pemrograman (programming level). Di dalam sistem operasi Windows terdapat lebih dari 2000 fungsi Win32 API yang digunakan untuk melakukan semua jenis layanan sistem operasi Windows. Pengguna akhir (end user) tidak dapat mengakses fungsi-fungsi tersebut. Tetapi, pemrogram dapat mengakses kode yang ditulis dalam DLL melalui Win32 API dan menggunakan kode-kode tersebut di dalam program mereka (Reselman, 1999:23) Teknik Masking Mask dalam Visual Basic adalah gambar hitam putih dimana daerah hitam menunjukkan posisi/tempat yang harus digambar, sedangkan daerah putih adalah posisi/tempat yang tidak perlu digambar/ditampilkan (Hakim, 2003:19). Gambar Mask umumnya disertakan beserta dengan gambar sumber. Gambar 2.11 memperlihatkan contoh gambar sumber dan gambar Mask-nya: Gambar Gambar sumber dan gambar Mask-nya Perhatikan koordinat pada gambar 2.11 secara Visual Basic. Koordinat gambar asli adalah 0, 0. Sedangkan koordinat untuk Mask-nya adalah tinggi gambar asli, 0.

38 25 Untuk menampilkan gambar pada Visual Basic 6.0 jika tidak disertai dengan gambar Mask tersebut hanya akan menghasilkan gambar obyek berbentuk kotak dengan warna hitam. Lihat contoh pada Gambar Gambar Menampilkan obyek tanpa teknik Masking Agar gambar yang dihasilkan tidak berbentuk kotak, maka digunakan teknik Masking. Teknik ini menggunakan fungsi Win32 API yaitu BitBlt. Contoh penggunaan fungsi BitBlt dalam penggunaan teknik Masking ditunjukkan oleh Gambar BitBlt field2.hdc, curx * 30, cury * 30, 30, 30, hitmask.hdc, framenum * 32, 0, vbsrcand BitBlt field2.hdc, curx * 30, cury * 30, 30, 30, hit.hdc, framenum * 32, 0, vbsrcpaint Gambar Contoh penggunaan BitBlt untuk teknik Masking Pada Gambar Kode BitBlt pada baris pertama akan menempatkan gambar Mask pada layar dengan raster operation vbsrcand (lihat pada akhir baris pertama) dan kode BitBlt yang kedua menempatkan gambar asli dengan raster operation vbsrcpaint (lihat pada akhir baris kedua). Perpaduan kedua gambar dengan raster operation tersebut menghasilkan obyek yang tidak berbentuk kotak. Lihat Gambar Gambar Menampilkan obyek dengan teknik Masking

39 26 Raster operation menentukan operator logika yang digunakan untuk mengkombinasikan gambar tujuan dengan gambar sumber (Hakim, 2003:21). Ada beberapa konstanta raster operation yang akan digunakan dalam pengkodean aplikasi permainan yang akan penulis bangun, yaitu sebagai berikut: 1. vbsrccopy, meletakkan gambar secara utuh. 2. vbsrcand, untuk meletakkan gambar Mask. 3. vbsrcpaint, untuk meletakkan gambar asli di atas gambar Mask.

40 BAB III ANALISIS DAN PERANCANGAN 3.1 Analisis Masalah Dalam membangun aplikasi permainan komputer ini, penulis melakukan analisa yang diperlukan dalam pembuatan aplikasi tersebut. Berikut ini adalah analisa yang dilakukan terhadap kebutuhan dasar sistem: Pemain dapat meletakkan kapal perang di area atau tempat permainan atau menyusun strategi terlebih dahulu sebelum memulai permainan kapal perang ini, setelah pemain meletakkan seluruh kapal perang di area permainan barulah pemain dapat memainkan permainannya dan berperang dengan musuh. Aktor dan use case ditentukan atas dasar kebutuhan sistem. Kebutuhan sistem ini diakomodir di use case. Selanjutnya use case menyediakan nilai hasil kepada aktor. Atas dasar spesifikasi di atas ada satu aktor yaitu pemain. Untuk mendeskripsikan use case apa saja dan aktor yang terlibat dalam use case tersebut, dapat dilihat pada Tabel

41 28 Tabel 3.1 Kebutuhan sistem, aktor dan use case pada aplikasi permainan kapal perang (Battleship) No Kebutuhan Sistem Aktor Use Case 1 Pemain dapat memulai permainan, namun terlebih dahulu pemain haru meletakkan kapal ke area permainan atau menyusun strategi terlebih dahulu, barulah pemain dapat bertempur dengan musuh Pemain Mulai permainan Spesifikasi Kebutuhan Sistem Untuk aplikasi permainan yang sesuai dengan skenario permainan yang telah diuraikan di atas dapat diketahui kebutuhan sistem dari aplikasi permainan yang akan dibangun yaitu sebagai berikut: 1. Elemen permainan, terdiri dari: a. Gambar latar belakang b. Kapal (kapal pemain dan kapal musuh) c. Ledakan d. Suara efek 2. Proses Perhitungan Skor dan kehancuran kapal, yaitu sebagai berikut: a. Skor dapat diperoleh apabila pemain berhasil menghancurkan kapal musuh yang berada di daerah atau tempat lawan. b. Kapal musuh dapat hancur apabila kapal musuh tersebut tertembak oleh kapal pemain. 3. Aplikasi permainan dengan karakter kapal perang tersebut menerima respon dari pengguna melalui Mouse untuk mengontrol atau mengendalikan kapal pemain dan menembak atau menghancurkan kapal musuh.

42 Parameter Keberhasilan Aplikasi permainan dengan karakter kapal perang ini dinyatakan berhasil dibangun apabila sebagai berikut: 1. Pemain dapat meletakkan seluruh kapal perang ke area permainan. 2. Muncul ledakan akibat dari proses tubrukan, yaitu apabila kapal musuh terkena bom oleh pemain. 3.2 Diagram Use Case Diagram Use Case sangat membantu menganalisa kebutuhan-kebutuhan dari permainan yang akan dibangun. Karena diagram Use Case memperlihatkan apa yang dilakukan oleh pengguna terhadap sistem (dalam hal ini permainan komputer dengan karakter kapal perang yang akan dibangun). Kebutuhan fungsional dari aplikasi permainan dengan karakter kapal perang ditunjukkan oleh Gambar 3.1. BATTLESHIP Mengumpulkan nilai (Score) << include >> Mulai permainan Pemain Gambar 3.1. Diagram Use Case Permainan Kapal perang (Battleship) Penjelasan dari masing-masing use case dari Gambar 3.1 dapat dilihat berikut ini.

43 30 Use Case Deskripsi Singkat : Mengumpulkan nilai (Score) : Use Case ini memungkinkan pemain untuk mengumpulkan nilai (score). Aktor Kondisi Awal : Pemain : Permainan telah dimulai dan sedang berjalan. Aliran Utama : 1. Pemain menekan tombol pada mouse untuk menembak atau menghancurkan kapal musuh. 2. Pemain menggerakan kursor mouse untuk mencari dimana posisi kapal musuh yang berada di area permainan. Apabila pemain berhasil menemukan letak kapal musuh maka kapal musuh tersebut akan hancur dan pemain mendapatkan nilai (score). 3. Sistem akan menampilkan kotak dialog yang berisikan pesan bahwa kapal telah hancur. 4. Apabila pemain tidak berhasil menemukan letak kapal musuh maka kapal musuh akan tetap utuh. Aliran Alternatif : 1. Pada langkah 4, jika tidak mengenai sasaran sistem kembali kelangkah 2. Kondisi Akhir : Jika Use Case berhasil dijalankan maka pemain dapat mengumpulkan nilai (score) sebanyak mungkin.

44 31 Use Case Deskripsi Singkat : Mulai permainan : Use Case ini memungkinkan pemain untuk memulai permainan. Aktor Kondisi Awal : Pemain : Aplikasi siap untuk dimainkan. Aliran Utama : 1. Pemain menekan tombol mulai untuk melanjutkan ketahapan memulai permainan. 2. Sistem akan menjalankan ketahapan berikutnya untuk memulai permainan dengan menampilkan jendela untuk mengatur strategi permainan. 3. Pemain meletakkan posisi kapal di area permainan. 4. Pemain menekan tombol start untuk memulai permainan. 5. Sistem akan menjalankan ketahapan berikutnya untuk memulai permainan dengan menampilkan jendela arena pertempuran. Aliran Alternatif : 1. Pada langkah 1, jika pemain tidak menekan tombol mulai maka sistem tidak akan melakukan langkah Pada langkah 4, jika pemain tidak menekan tombol start maka sistem tidak akan melakukan langkah 5. Kondisi Akhir : Jika Use Case berhasil dijalankan maka permainan dimulai dan pemain dibawa ke suasana pertempuran.

45 Struktur Tabel Tabel 3.2 Tabel Ranking Atribut Tipe Panjang Keterangan Nama varchar 15 Nama pemain Score varchar 3 Nilai pemain 3.4 Class Diagram Diagram kelas mendeskripsikan jenis jenis objek dalam sistem dan berbagai macam hubungan statis yang terdapat di antara mereka. Diagram kelas juga menunjukan properti dan operasi sebuah kelas dan batasan batasan yang terdapat dalam hubungan hubungan objek tersebut. Diagram kelas juga menggambarkan struktur dan deskripsi kelas, package dan objek beserta hubungan satu sama lain seperti generalization, realization, association, dan agregation. Dimana generalization adalah hubungan superclass dengan subclass atau parent dengan child, realization adalah dimana sebuah class harus mengikuti aturan class lainnya, association adalah hubungan structural antar class dan aggregation adalah hubungan antar class, dimana class yang satu adalah bagian dari class yang lainnya (Martin Fowler (2005:53).. Class Diagram pada aplikasi permainan Battleship ditunjukkan oleh Gambar 3.2.

46 33 <<boundary>> form Main - lblareapemain : label - lblarealawan : label - lblscore : label - pic1: piturebox - pic2 : picturebox - cmdmulai : commandbutton - cmdptnjk : commandbutton - cmdranking : commandbutton - cmdstart : commandbutoon - option1 : optionbutton - option2 : optionbutton - option3 : optionbutton - option4 : optionbutton - option5 : optionbutton - image1 : image - image2 : image - image3 : image - image4 : image - fireanim_timer : timer - hitanim_timer : timer - missanim_timer : timer <<entity>> score + mengumpulkan nilai score() + menampilkan nilai score() + lblareapemain_click() + lblarealawan_click() + lblscore_click() + pic1: piturebox + pic2 : picturebox + cmdmulai _click() + cmdptnjk_click() + cmdranking_click() + cmdstart_click() + option1_click() + option2_click() + option3_click() + ption4_click() + option5_click() + image1_click() + image2_click() + image3_click() + image4_click() + fireanim_timer_click() + hitanim_timer_click() + missanim_timer_click() <<boundary>> form petunjuk - lblptnjk : label - image1 : picturebox - cmdback : commandbutton + lblptnjk_click() + image1_click() + cmdback_click() <<boundary>> form nama - txtnama : txtbox - lblnama : label - cmdok : commandbutton + txtnama_click() + lblnama_click() + cmdok_click() <<boundary>> form high - lblranking : label - lblnama : label - lblscore : label - cmdok :commandbutton + lblranking_click() + lblnama_click() + lblscore_click() + cmdok_click() Gambar 3.2. Class Diagram pada aplikasi permainan Battleship

47 34 Pada class diagram diatas dijelaskan bahwa terdapat lima kelas yang saling berhubungan. Kelas form main yang termasuk ke dalam boundary mempunyai hubungan aggregation (dimana kelas yang satu merupakan bagian dari kelas yang lain) dengan kelas form petunjuk, form nama, form high yang juga termasuk ke dalam boundary, disebut kelas boundary karena kelas tersebut berupa tampilan user interface yang merupakan sarana komunikasi antara system dengan user. Form petunjuk, form nama, form high tidak akan berjalan jika tidak ada proses dari form Main, oleh sebab itu kelas form petunjuk, form nama, form high merupakan bagian dari kelas form Main. Lalu pada form Main mempunyai hubungan generalization (hubungan antara parent dengan child) dimana kelas score yang juga entity adalah bagian dari form Main. Disebut kelas entity karena memperlihatkan proses apa saja yang akan ditawarkan oleh sistem kepada user. 3.5 Diagram Sekuensial Diagram Sekuensial digunakan ketika ingin mengetahui perilaku beberapa obyek pada Use Case tunggal. Diagram Sekuensial bagus dalam menunjukkan kolaborasi diantara obyek, namun tidak begitu bagus dalam memberikan definisi yang pasti tentang perilaku tersebut (Munawar, 2005:98). Diagram Sekuensial untuk Use Case memulai permainan ditunjukkan oleh Gambar 3.3, dan diagram Sekuensial untuk Use Case mengumpulkan nilai (sore) ditunjukkan oleh Gambar 3.4.

48 35 Pemain Kapal perang Mulai permainan Kapal musuh Meletakkan posisi kapal Klik tombol untuk memulai permainan Permainan dimulai Hancurkan musuh Gambar 3.3. Diagram Sekuensial untuk Use Case memulai permainan Pada Gambar 3.3, jika aktor pemain ingin memulai permainan, maka ia diharuskan meletakkan posisi kapal perang yang akan dimainkan. Setelah meletakkan kapal perang, pemain harus menekan tombol untuk memulai permainan pada aplikasi permainan tersebut untuk memulai permainan. Selanjutnya jika permainan telah dimulai pemain dapat menghancurkan musuh (bertempur dengan musuh).

49 36 Kapal perang menembak Kapal musuh hancur Kapal musuh tidak hancur Pemain Menekan tombol pada mouse Score bertambah Tembakan mengenai musuh Tembakan tidak mengenai musuh Gambar 3.4. Diagram Sekuensial untuk Use Case mengumpulkan nilai (score) Pada Gambar 3.4, ketika aktor pemain menekan tombol mouse sebelah kiri atau kanan, maka obyek kapal perang akan menembak, namun tidak diketahui obyek kapal perang yang mana akan menembak untuk menghancurkan kapal musuh dikarenakan pemain memiliki 10 kapal perang. Dan peluru dari kapal perang tersebut digambarkan berupa kursor mouse. Sebelum menghancurkan kapal musuh pemain harus mencari letak kapal musuh terlebih dahulu. Jika tembakan pemain mengenai obyek kapal musuh, maka obyek kapal musuh tersebut akan hancur dan pemain mendapatkan nilai (score). Namun jika tembakan pemain tidak mengenai obyek kapal musuh, maka obyek kapal musuh tersebut tidak hancur.

50 Diagram Aktifitas Diagram aktifitas merupakan pemodelan aliran kerja (workflow) sebuah proses, atau urutan aktifitas dalam suatu proses. Dengan diagram aktifitas ini kita akan lebih dapat memahami alur dari proses-proses tersebut atau dengan kata lain diagram ini akan menggambarkan langkah-langkah dari setiap aplikasi yang disediakan dalam sistem. Diagram Aktifitas untuk Use Case memulai permainan ditunjukkan oleh Gambar 3.5, dan diagram Aktifitas untuk Use Case bertempur dengan musuh ditunjukkan oleh Gambar 3.6. Mulai permainan Meletakkan kapal perang Bertempur dengan musuh Permainan berakhir Gambar 3.5. Diagram Aktifitas untuk Use Case memulai permainan. Pada Gambar 3.5, aktifitas dimulai dengan meletakkan kapal perang di arena permaianan atau menyusun strategi yang akan dimainkan. Setelah aktifitas meletakkan kapal perang atau menyusun strategi, aktifitas selanjutnya adalah

51 38 memulai permainan. Setelah permainan dimulai, aktifitas selanjutnya adalah mengumpulkan nilai (score). untuk lebih jelas mengenai aktifitas mengumpulkan nilai (score) lihat Gambar 3.6. Pada Gambar 3.6, aktifitas diawali menggerakkan kursor untuk mencari letak kapal yang tersembunyi dan menekan tombol mouse sebelah kiri untuk menghancurkan kapal musuh. Apabila berhasil menemukan atau mengenai kapal musuh, maka akan terdengar suara ledakan dan pemain mendapatkan nilai (score). Apabila tidak mengenai kapal musuh maka giliran musuh atau lawan yang menyerang atau mencari kapal pemain. Apabila musuh atau lawan berhasil menemukan atau mengenai kapal pemain maka kapal pemain hancur. Jika tidak maka giliran pemain yang kembali menyerang musuh atau lawan. Aktifitas selanjutnya adalah menentukan apakah kapal musuh atau kapal pemain sudah habis atau tidak, jika ya maka permainan berakhir dan jendela ranking yang berisi namanama dan nilai skor yang mempunyai nilai tertinggi akan ditampilkan, jika tidak maka pemain mendapat giliran lagi untuk menyerang lawan.

52 39 Menggerakkan kursor dan Menekan tombol pada mouse Tidak Mengenai kapal musuh? Ya Suara ledakan Score bertambah Lawan menyerang kapal pemain Tidak Mengenai kapal Pemain? Ya Kapal hancur Tidak Apakah kapal musuh atau kapal pemain habis? Ya Permainan berakhir Tampilkan ranking Gambar 3.6. Diagram Aktifitas untuk Use Case mengumpulkan nilai (score)

53 Diagram Deploymen (Deployment Diagram) Diagram Deploymen menyediakan gambaran bagaimana sistem secara fisik akan terlihat (Munawar, 2005:127). Diagram Deploymen dari aplikasi permainan komputer dengan karakter kapal perang (Battleship) ditunjukkan oleh Gambar 3.7. Game Application PC (Microsoft Windows OS) Visual Basic Runtime Files: Msvbvm60.dll Stdole2.tlb Oleaut32.dll Olepro32.dll Comcat.dll Asyncfilt.dll Ctl3d32.dll Battleship.exe Gambar 3.7. Diagram Deploymen dari aplikasi permainan Battleship Pada Gambar 3.7, aplikasi permainan komputer dengan karakter kapal perang tersebut dipasang pada komputer pribadi bersifat stand alone. Pada gambar tersebut terdapat node lingkungan pengeksekusian yaitu perangkat lunak yang menjadi Host atau mengandung perangkat lunak yang lain. Node lingkungan pengeksekusian tersebut yaitu Sistem Operasi Microsoft Windows. Node tersebut berfungsi sebagai tempat pengeksekusian Visual Basic Runtime files dan aplikasi permainan komputer dengan karakter kapal perang (Battleship.exe). Visual Basic Runtime files adalah berkas-berkas yang dibutuhkan bagi semua aplikasi yang dibangun dengan bahasa

54 41 pemrograman Visual Basic agar aplikasi-aplikasi yang dibangun dengan bahasa tersebut dapat berjalan sebagaimana mestinya pada komputer yang tidak mempunyai perangkat lunak Microsoft Visual Basic (Vine, 2001:311). 3.8 Algoritma Perhitungan Skor Berikut ini adalah algoritma perhitungan nilai (skor) yang akan diterapkan pada aplikasi permainan yang akan dibangun: 1. Skor awal adalah nol (0). 2. Bila bagian-bagian kapal musuh terkena bom oleh pemain maka tambahkan nilai skor dengan sepuluh (skor = skor + 10). Dan jika pemain berhasil menembak semua bagian kapal (kapal hancur) maka nilai skor ditambahkan 20 (skor = skor + 20) 3. Ulangi langkah nomor 2 hingga permainan berakhir. 3.9 Diagram Alur (flowchart) Berikut ini adalah Diagram Alur (flowchart) perhitungan nilai (skor) yang akan diterapkan pada aplikasi permainan yang akan dibangun. Pada diagram alur perhitungan nilai (skor) dimulai dengan kondisi nilai skor awal adalah 0. jika kapal hancur nilai skor bertambah. Jika tidak hancur nilai skor tidak bertambah. Dan sistem menampilkan nilai skor ke layar. Lihat Gambar 3.8.

55 42 mulai Nilai skor = 0 Kapal hancur T Y Nilai skor bertambah Nampilkan nilai skor selesai Gambar 3.8. Diagram alur perhitungan nilai (skor) 3.10 Perancangan Antarmuka Permainan Perancangan antarmuka dibutuhkan dalam rekayasa perangkat lunak agar aplikasi yang dibangun mudah digunakan oleh pengguna (user friendly). Untuk itu perlu diciptakan suatu antarmuka pengguna yang baik. Pada aplikasi permainan yang akan dibangun, terdapat empat (4) buah jendela yang berfungsi sebagai antarmuka bagi pengguna dengan aplikasi permainan yang akan dibangun tersebut dengan fungsi jendela yang berbeda-beda. Jendela-jendela tersebut yaitu jendela inisialisasi, jendela meletakkan kapal perang, jendela permainan, jendela petunjuk. Pada subbab berikut akan dijelaskan mengenai perancangan dari jendela-jendela tersebut.

56 Perancangan Jendela Inisialisasi Gambar 3.9 memperlihatkan jendela inisialisasi yang berfungsi sebagai jendela pertama yang muncul di layar monitor ketika program aplikasi permainan Battleship dijalankan. Pada Gambar 3.9 Pemain dapat meletakkan atau menyiapkan strategi kapal perang yang akan dimainkan sebelum permainan dimulai dengan mengklik tombol mulai. Pemain dapat melihat petunjuk cara penggunaan permainan kapal perang yang akan dimainkan dengan mengklik tombol petunjuk. Pemain dapat melihat nilai tertinggi dengan mengklik tombol ranking. Gambar Mulai Petunjuk Ranking Gambar Latar Belakang Gambar 3.9. Perancangan jendela inisialisasi Perancangan Jendela Meletakkan Kapal Perang Apabila pemain mengklik tombol mulai permainan, maka jendela untuk meletakkan atau menyusun strategi kapal perang muncul di layar monitor dan jendela inisialisasi akan dihilangkan dari layar monitor. Pada jendela meletakkan kapal

57 44 perang, pemain dapat meletakkan kapal perang yang berbeda ketempat area permainan. Jendela meletakkan kapal perang ditunjukkan oleh Gambar AREA PEMAIN Choose a ship to pleace on your field Gambar O Battleship 1 left Gambar Gambar Gambar O Cruiser 2 left O Submarine 3 left O Destroyer 4 left O Clear Current Selection Gambar Start BATTHELSHIP Gambar Perancangan jendela meletakkan kapal perang Perancangan Jendela Permainan Apabila pemain telah meletakkan seluruh atau semua kapal perang pada jendela meletakkan kapal perang, maka jendela permainan akan muncul di layar monitor dan jendela meletakkan kapal perang akan dihilangkan dari layar monitor. Untuk memulai permainan, pemain dapat mengklik tombol bertuliskan Start yang ada di jendela meletakkan kapal perang. Apabila permainan mulai berjalan maka kapal perang (battleship) akan ditampilkan pada layar permainan dan pemain sudah

58 45 dapat memulai permainan. Perancangan dari jendela permainan ditunjukkan oleh Gambar Gambar AREA PEMAIN AREA LAWAN SCORE Gambar Perancangan jendela permainan Perancangan Jendela Petunjuk Pemain dapat melihat atau membaca petunjuk yang digunakan untuk mejelaskan bagai mana cara menggunakan permainan yang akan dimainkan dengan mengklik tombol Petunjuk pada jendela inisialisasi. Perancangan untuk jendela petunjuk ditunjukkan oleh Gambar 3.12.

59 46 Petunjuk game battleship Gambar disertai teks yang berisi penjelasan bagaimana cara menggunakan game battleship. Tombol untuk kembali ke jendela inisialisasi. Gambar Perancangan jendela petunjuk Perancangan Jendela Nama Setelah permainan selesai pemain dapat mengisikan namanya di jendela nama yang kemudian pemain akan dapat melihat namanya apakah masuk ke dalam ranking lima besar atau tidak. Perancangan jendela nama ditunjukkan oleh Gambar ENTER YOUR NAME OK Gambar Perancangan jendela nama

60 Perancangan Jendela Ranking Pemain dapat melihat daftar nama-nama dan nilai-nilai tertinggi yang ada di jendela ranking dengan mengklik tombol Ranking pada jendela inisialisasi. Perancangan untuk jendela ranking ditunjukkan oleh Gambar RANKING Nama Score Ok Gambar Perancangan jendela ranking

61 BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM 4.1 Implementasi Setelah tahap analisis dan perancangan selesai dilakukan, maka tahap selanjutnya adalah tahap implementasi. Pada subbab berikut akan dijelaskan implementasi dari aplikasi permainan komputer dengan karakter kapal perang yang penulis bangun yang terdiri dari lingkungan implementasi, pengkodean, dan antarmuka dari aplikasi permainan tersebut Lingkungan Implementasi Aplikasi permainan komputer dengan karakter kapal perang dibangun dan diimplementasikan pada seperangkat komputer pribadi (Personal Computer) dengan spesifikasi sebagai berikut: 1. Perangkat Keras yang digunakan: a. Prosesor : Intel Celeron 1.7 Ghz. b. Motherboard : Matsonic MS9138D 48

62 49 c. Memori : 256 MB SDRAM d. VGA : NVidia GeForce2 MX/MX MB e. Harddisk : Maxtor 40 Gb 7200 Rpm 2. Perangkat Lunak yang digunakan: a. Microsoft Windows XP Professional, sebagai Sistem Operasi. b. Microsoft Visual Basic versi 6.0 edisi profesional, sebagai alat (tool) untuk membangun aplikasi permainan tersebut 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,

63 50 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. berikut: Contoh penggunaan dari deklarasi fungsi BitBlt tersebut di atas adalah sebagai 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.

64 51 Kode 4.1. Potongan kode program menggambar kapal Battleship 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 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

65 52 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 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 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.

66 53 Kode 4.3. Potongan kode program menggambar kapal Submarine 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 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 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 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.

67 54 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 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 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. 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 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 5 End Sub 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.

68 55 Kode 4.7. Potongan kode program timer animasi ledakan 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 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 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 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.

69 Antarmuka Permainan Gambar latar belakang, gambar pesawat, gambar ledakan, dan berkas suara (audio file) yang digunakan dalam aplikasi permainan kapal perang (Battleship) ini tidak dibuat oleh penulis pribadi, melainkan berasal dari beberapa aplikasi permainan lain yang telah ada. Pada subbab berikut akan dijelaskan implementasi Antarmuka permainan kapal perang (Battleship) yang telah dibangun tersebut Jendela Inisialisasi Ketika pemain menjalankan aplikasi permainan kapal perang yang telah penulis bangun, yang pertama kali ditampilkan kepada pemain adalah jendela inisialisasi. Pada jendela tersebut pemain dapat meletakkan kapal pemain diarea permainan atau menyusun strategi terlebih dahulu dengan menekan tombol bertuliskan kalimat MULAI. Pemain dapat membaca petunjuk bagai mana cara menggunakan permainan yang akan dimainkannya dengan menekan tombol bertuliskan kata PETUNJUK. Untuk lebih jelas lihat Gambar 4.1. Gambar 4.1. Tampilan Jendela Inisialisasi

70 Jendela Meletakkan Kapal Perang Pada jendela meletakkan kapal perang pemain harus meletakkan seluruh kapal perang yang ada ketempat atau area pamain. Untuk lebih jelasnya lihat Gambar 4.2. Jika seluruh kapal perang sudah diletakkan di tempat atau area pemain, maka pemain harus menekan tombol start untuk memulai permainan dan berperang dengan musuh. Untuk lebih jelasnya lihat Gambar 4.3. Gambar 4.2. Tampilan Jendela meletakkan kapal perang yang belum terisi kapal perang Gambar 4.3. Tampilan Jendela meletakkan kapal perang yang sudah terisi kapal perang

71 Jendela Permainan Setelah pemain meletakkan seluruh kapal perang ke tempat atau area pemain dan menekan tombol start untuk memulai permainan maka pemain sudah dapat memulai permainan dan langsung berperang dengan musuh. Untuk lebih jelas lihat Gambar 4.4. Gambar 4.4. Tampilan jendela permainan Pemain mengerakkan kursor pada muose untuk mencari dimana letak kapal musuh yang tersembunyi di tempat lawan kemudian menekan tombol mouse sebelah kiri untuk menembak atau menghancurkan kapal musuh. Apabila pemain berhasil menemukannya dan kapal musuh terkena tembakan, maka kapal musuh tersebut akan hancur dan ledakan ditampilkan ke layar permainan seperti yang diperlihatkan oleh Gambar 4.5.

72 59 Gambar 4.5. Tampilan jendela Ledakan yang terjadi karena proses tembakan dari pemain Jendela Petunjuk Pada jendela petunjuk ini pemain dapat melihat atau membaca petunjuk yang digunakan untuk mejelaskan bagai mana cara menggunakan permainan yang akan dimainkan. Untuk lebih jelasnya lihat Gambar 4.6. Gambar 4.6. Tampilan jendela petunjuk

73 Jendela Nama Pada jendela nama ini Setelah pemain dapat mengisikan namanya di jendela nama yang kemudian pemain akan dapat melihat namanya apakah masuk ke dalam ranking lima besar atau tidak. Untuk lebih jelasnya lihat Gambar 4.7. Gambar 4.7. Tampilan jendela nama Jendela Ranking Pada jendela Ranking ini pemain dapat melihat daftar nama-nama dan nilainilai tertinggi yang ada di jendela ranking. Untuk lebih jelasnya lihat Gambar 4.8. Gambar 4.8. Tampilan jendela ranking

74 Pengujian Pengujian terhadap aplikasi perpustakaan digital dilakukan dengan menggunakan metode white box dan black box, yang akan dijelaskan pada sub bab berukut Metode Pengujian Metode White Box Testing yaitu metode perancangan test case yang menggunakan struktur control dari perancangan prosedural untuk mendapatkan test case. Dengan menggunakan metode white box, akan dapat diperolah: 1. Memberikan jaminan bahwa semua jalur independen pada suatu modul telah digunakan paling tidak satu kali. 2. Menggunakan semua keputusan logis pada sisi true dan false. 3. Mengeksekusi semua loop pada batasan mereka dan pada batasan semua operasional mereka. 4. Menggunakan struktur data internal untuk menjamin validitasnya (Pressman, 2002:551). Metode Black Box Testing yaitu Pengujian untuk menemukan kesalahan dalam lingkup kategori sebagai berikut: 1. Fungsi-fungsi yang tidak benar atau hilang. 2. Kesalahan Antarmuka. 3. Kesalahan dalam struktur data atau akses basis data. 4. Kesalahan kinerja (Pressman, 2002:551). Pengujian-pengujian yang akan dilakukan terdiri atas skenario pengujian, hasil pengujian, dan analisis hasil pengujian yang akan dijelaskan pada subbab berikut ini.

75 Pengujian Basis Path Pengujian basis path adalah pengujian white box yang diusulkan pertama kali oleh Tom McCabe. Metode basis path ini memungkinkan desainer test case mengukur kompleksitas logis dari desain procedural dan menggunakannya sebagai pedoman untuk menetapkan basis set dari jalur eksekusi. Tes case yang dilakukan untuk menggunakan basis set tersebut dijamin untuk menggunakan setiap statemen di dalam program paling tidak sekali selama pengujian. Pengujian basis path untuk aplikasi permainan komputer dengan karakter kapal perang yang lebih lengkap dapat dilihat pada Gambar 4.9. Gambar Table 4.1. Gambar Gambar Table 4.2. Gambar Gambar Table 4.3 Gambar 4.9. Bagan alir meletakkan kapal perang Gambar Grafik alir meletakkan kapal perang

76 63 Tabel 4.1 Jalur pengujian white box pada grafik alir meletakkan kapal perang Jalur Jalur Jalur Jalur Jalur Gambar Bagan alir set kapal perang secara horizontal dan vertical Gambar Grafik alir set kapal perang secara horizontal dan vertical Tabel 4.2 Jalur pengujian white box pada grafik alir set kapal perang secara horizontal dan vertical Jalur Jalur Jalur Jalur

77 64 Gambar Bagan alir mengumpulkan nilai (score) Gambar Grafik alir mengumpulkan nilai (score) Tabel 4.3 Jalur pengujian white box pada grafik alir mengumpulkan nilai (score) Jalur Jalur Skenario Pengujian Skenario pengujian digunakan untuk menentukan langkah-langkah dalam melakukan pengujian. Pengujian dilakukan dengan menjalankan aplikasi permainan terlebih dahulu. Kemudian dilakukan pengujian dengan menekan tombol-tombol yang terdapat pada jendela-jendela dari aplikasi permainan tersebut apakah sesuai

78 65 dengan yang diharapkan. Selanjutnya pengujian dilakukan ketika permainan sedang berlangsung. Skenario pengujian untuk aplikasi permainan komputer dengan karakter kapal perang yang lebih lengkap dapat dilihat pada Tabel 4.4. Tabel 4.4. Tabel skenario pengujian No Antarmuka yang diuji Bagian dari Antarmuka 1. Jendela meletakkan kapal 2 Jendela meletakkan kapal 3. Jendela permainan 4. Jendela permainan Status permainan yang diuji - Permainan belum dimulai Tombol untuk memulai permainan Permainan belum dimulai - Permainan telah dimulai - Permainan telah dimulai Skenario pengujian Pemain menekan tombol pada mouse Klik tombol untuk memulai permainan Pemain menekan tombol kiri pada mouse Arahkan bom yang digambarkan melelui kursor mouse ke area lawan Jalankan aplikasi ini pada komputer bersistem operasi Windows dan Linux Hasil yang diharapkan Seluruh kapal diletakkan di area permainan. Permainan akan dimulai. Kapal perang mengeluarkan bom. Bila bom kapal perang mengenai kapal musuh, maka kapal musuh tersebut akan meledak dan akan terdengar suara ledakan. Aplikasi permainan Battleship dapat berjalan pada kedua sistem operasi yaitu Windows dan Linux Hasil Pengujian Setelah aplikasi permainan komputer dengan karakter kapal perang tersebut selesai diuji berdasarkan skenario pengujian pada Tabel 4.1, maka dapat diperoleh hasil pengujian dari aplikasi permainan tersebut. Untuk lebih jelas lihat Tabel 4.2.

79 66 Tabel 4.5. Tabel hasil pengujian No Antarmuka yang diuji Bagian dari antarmuka 1. Jendela meletakkan kapal 2. Jendela meletakkan kapal 3. Jendela permainan Status permainan yang diuji - Permainan belum dimulai Tombol untuk memulai permainan Permainan belum dimulai - Permainan telah dimulai Hasil pengujian Kapal perang yang diletakkan di area permainan sebanyak 10 buah kapal yang terdiri dari, 1 buah kapal perang (Battleship), 2 buah kapal penjelajah (Cruiser), 3 buah kapal selam (Submarine), dan 4 buah kapal penghancur (Destroyer). Permainan dapat dimulai. Kapal perang dapat mengeluarkan bom. 4. Jendela permainan - Permainan telah dimulai Ketika bom dari kapal perang mengenai kapal musuh, maka kapal musuh tersebut meledak atau hancur dan pemain mendapatkan nilai (score) Aplikasi permainan Battleship hanya dapat berjalan pada komputer bersistem operasi Windows 32 Bit Analisis Hasil Pengujian Setelah dilakukan pengujian secara menyeluruh terhadap aplikasi permainan komputer dengan karakter kapal perang tersebut, didapatkan beberapa keterbatasan dari aplikasi permainan tersebut yaitu sebagai berikut: 1. Suara efek ketika terjadi ledakan hanya dapat terdengar apabila kapal musuh terkena bom oleh pemain, namun apabila kapal perang pemain terkena bom oleh musuh atau lawan tidak ada suara efek ledakan. 2. Jika bagian-bagian kapal musuh terkena bom oleh pemain maka tambahkan nilai skor dengan sepuluh (skor = skor + 10). Dan jika pemain berhasil menembak semua bagian kapal (kapal hancur) maka nilai skor ditambahkan 20 (skor = skor + 20)

80 67 3. Apabila aplikasi permainan tersebut dijalankan pada komputer dengan sistem operasi Linux, aplikasi tersebut tidak dapat berjalan sebagaimana mestinya. Hal ini dikarenakan aplikasi tersebut dibangun sepenuhnya menggunakan fungsi Win32 API yang digunakan untuk mengakses fitur-fitur yang dimiliki oleh sistem operasi Windows 32 Bit. Solusinya adalah jalankan aplikasi permainan Battleship pada komputer bersistem operasi Windows 32 Bit.

81 BAB V PENUTUP 5.1 Kesimpulan Setelah aplikasi permainan komputer dengan karakter kapal perang selesai dibangun dan diuji, maka dapat diambil beberapa kesimpulan sebagai berikut: 1. Dalam aplikasi permainan komputer ini pemain memiliki 10 buah kapal perang yang terdiri dari, 1 buah kapal perang (Battleship), 2 buah kapal penjelajah (Cruiser), 3 buah kapal selam (Submarine), dan 4 buah kapal penghancur (Destroyer). 2. Dalam aplikasi permainan komputer ini. Penulis menambahkan nilai (score) dan ranking sebagai pengembangan dari aplikasi permainan computer tersebut. 3. Dalam pengembangan aplikasi permainan komputer ini dibutuhkan satu buah tabel database, yaitu tabel ranking. 68

82 Saran Aplikasi permainan yang telah dibangun dirasakan masih memiliki beberapa kekurangan. Penulis menjadikan kekurangan tersebut sebagai saran untuk pengembangan aplikasi selanjutnya di masa yang akan datang. Beberapa kekurangan tersebut adalah sebagai berikut: 1. Aplikasi permainan komputer dengan karakter kapal perang yang telah dibangun tersebut hanya dapat dimainkan oleh satu pemain. Disarankan untuk mengembangkan permainan tersebut agar dapat dimainkan oleh dua pemain atau banyak pemain (multiplayer). 2. Bila kapal perang terkena bom dari lawan atau musuh tidak terdengar suara efek ledakan. Disarankan untuk mengembangkan aplikasi permainan komputer ini dengan menambah suara efek ledakan apabila kapal perang pemain terkena bom oleh musuh atau lawan. 3. Aplikasi permainan komputer dengan karakter kapal perang yang telah dibangun tersebut tidak memiliki tingkatan-tingkatan atau yang disebut dengan level. Disarankan untuk mengembangkan permainan tersebut dengan menambahkan level permainan.

83 DAFTAR PUSTAKA Booch, Grady dkk The Unified Modeling Language User Guide. Canada: Addison-Wesley Publishing Company. Brookshear, J. Glenn Computer Science: Suatu Pengantar. Edisi ke tujuh. Jakarta: Erlangga. Buenaventura, Aris. The VB Source Code Site. Dennis, Alan dkk Systems Analysis and Design with UML Version 2.0. New Jersey: Wiley. Hakim, Lukman Pemrograman Game dengan Visual Basic. Yogyakarta: Penerbit Andi. Harbour, Jonathan S Microsoft Visual Basic Game Programming with DirectX. Arizona: Premier Press. Munawar Pemodelan Visual dengan UML. Yogyakarta: Penerbit Graha Ilmu. Pressman, Roger S Rekayasa Perangkat Lunak Buku 1. Yogyakarta: Penerbit Andi. Reselman, Bob dkk Using Visual Basic 6.0. Indianapolis: Macmilan Computer Publishing. Vine, Michael A Microsoft Visual Basic for the Absolut Beginner. California: Prime Publishing. Yuswanto Pemrograman Dasar Microsoft Visual Basic 6.0. Cetakan pertama. Surabaya: Prestasi Pustaka. 70

84 Kode Program Form Main Option Explicit Dim rs As Recordset Dim con As Connection Dim rs1 As Recordset Dim con1 As Connection Dim mess As String 'used for displaying game status messages Dim curx As Integer 'latest shot X coord Dim cury As Integer 'latest shot Y coord Dim user As String 'opponents nick Dim zone1(0 To max - 1, 0 To max - 1) 'Stores info on where your ships are located Dim zone2(0 To max - 1, 0 To max - 1) 'Stores info on where you have shot before Dim zonecomp(0 To max - 1, 0 To max - 1) 'Stores info on where computer ships are located Dim zone1flame(1 To 20) As flame 'Stores flames Dim ships(1 To 10) As shipclass 'Stores your ships Dim compships(1 To 10) As shipclass 'Stores computer ships Function allset() As Boolean 'Function dermines if all of the ships have been placed 'in order to start the game Dim i As Integer 'counter allset = True 'initialize to true 'Loop through all ships to see if any of them 'are not set For i = 1 To 10 If ships(i) Is Nothing Then allset = False Exit Function Next i End Function Sub changeturn() 'This sub changes the turns 'Set every boolean to opposite of what it is now user1 = Not user1 field2.enabled = Not field2.enabled 'user1 = true means your turn If user1 Then 'Set state caption lblstate.caption = "It is your turn!"

85 'Enable the turntaggle timer which makes the state caption blink turntaggle.enabled = True Else 'Set state caption lblstate.caption = "It is " & user & "'s turn!" 'Disable blinking turntaggle.enabled = False lblstate.backcolor = &HF0C4A6 'If gametype = single mode then computer shoots If gametype = 1 Then compshoot End Sub Sub compshoot() On Error Resume Next Dim cx As Integer Dim cy As Integer Dim tempx As Integer Dim tempy As Integer Dim headx As Integer Dim heady As Integer Dim i As Integer Dim j As Integer Dim k As Integer Dim r As Integer Dim counter As Integer Dim xstart As Integer Dim ystart As Integer Dim xend As Integer Dim yend As Integer Dim minx As Integer Dim maxx As Integer Dim miny As Integer Dim maxy As Integer Dim mark As Integer Dim s As Integer 'current X 'current Y 'temp x 'temp y 'head x of ship 'head y of ship 'return value 'used for shot selection 'used for shot selection 'used for shot selection 'used for shot selection 'used for shot selection 'used for shot selection 'used for shot selection 'used for shot selection 'used for shot selection 'If no shot was predetermined then randomly choose one If nextshotx = -1 Then Do Randomize

86 cx = Int(Rnd() * 10) Randomize cy = Int(Rnd() * 10) Loop While zonecomp2(cx, cy) > 0 Else cx = nextshotx cy = nextshoty 'Mark shot zonecomp2(cx, cy) = 1 tempx = cx tempy = cy 'Hit If zone1(cx, cy) > 0 And zone1(cx, cy) < 5 Then zone1(cx, cy) = zone1(cx, cy) + 4 'Find ship headx Do tempx = tempx - 1 If tempx < 0 Then Exit Do Loop Until zone1(tempx, cy) = 0 headx = tempx + 1 'Find ship heady Do tempy = tempy - 1 If tempy < 0 Then Exit Do Loop Until zone1(cx, tempy) = 0 heady = tempy + 1 'Find ship from array For i = 1 To 10 If ships(i).headx = headx And ships(i).heady = heady Then 'Wound ship r = ships(i).cripple()

87 'Mark as hit zonecomp2(cx, cy) = 2 'If dead If r Then If isover() Then drawremaincomp MsgBox ("Anda kalah!!!") MsgBox "Game Over - Nilai Secore Anda: " & score & Chr(10) & "Terima Kasih Anda Telah Bermain Game Battleship." frmnama.show 1 Set rs1 = New Recordset Set con1 = New Connection 'If Text1.Text <> "" And IsNumeric(Text2.Text) = True Then con1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\hangman\aaa.mdb;Persist Security Info=False" rs1.open "select * from a ", con1, adopendynamic, adlockoptimistic rs1.addnew Array("name", "score"), Array(frmnama.Text1.Text, score.caption) rs1.close con1.close con1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\hangman\aaa.mdb;Persist Security Info=False" rs1.open "select * from a order by score desc ", con1, adopendynamic, adlockoptimistic For s = 0 To 4 frmhigh.label1(s).fontsize = 10 frmhigh.label1(s).fontbold = True frmhigh.label1(s).forecolor = vbred frmhigh.label1(s).alignment = 2 frmhigh.label1(s).caption = rs1!name frmhigh.label2(s).fontsize = 10 frmhigh.label2(s).fontbold = True frmhigh.label2(s).forecolor = vbblue frmhigh.label2(s).alignment = 2 frmhigh.label2(s).caption = rs1!score rs1.movenext Next rs1.close con1.close frmhigh.show 1 frmmain.hide Else 'Get area in and around the ship and mark as shot 'since there cannot be any ships around a ship

88 mark = ships(i).length If ships(i).direction = vbkeyright Then If ships(i).headx > 0 Then xstart = ships(i).headx - 1 Else xstart = 0 If ships(i).headx + mark < max Then xend = ships(i).headx + mark Else xend = max - 1 If ships(i).heady > 0 Then ystart = ships(i).heady - 1 Else ystart = 0 If ships(i).heady < max - 1 Then yend = ships(i).heady + 1 Else yend = max - 1 Else If ships(i).headx > 0 Then xstart = ships(i).headx - 1 Else xstart = 0 If ships(i).headx < max - 1 Then xend = ships(i).headx + 1 Else xend = max - 1 If ships(i).heady > 0 Then ystart = ships(i).heady - 1 Else ystart = 0 If ships(i).heady + mark < max Then yend = ships(i).heady + mark Else yend = max - 1 For k = xstart To xend

89 For j = ystart To yend zonecomp2(k, j) = 1 Next j Next k 'Get next shot randomly Do Randomize nextshotx = Int(Rnd() * 10) Randomize nextshoty = Int(Rnd() * 10) Loop While zonecomp2(nextshotx, nextshoty) > 0 Else 'Crippled minx = cx - 1 maxx = cx + 1 miny = cy - 1 maxy = cy + 1 'If it is the first part of ship hit then mark areas around it 'as potential candidates for hit If zonecomp2(minx, cy) < 2 And zonecomp2(maxx, cy) < 2 And zonecomp2(cx, maxy) < 2 And zonecomp2(cx, miny) < 2 Then If zonecomp2(minx, cy) <> 1 And zonecomp2(minx, cy) <> 2 Then zonecomp2(minx, cy) = 5 If zonecomp2(maxx, cy) <> 1 And zonecomp2(maxx, cy) <> 2 Then zonecomp2(maxx, cy) = 5 If zonecomp2(cx, maxy) <> 1 And zonecomp2(cx, maxy) <> 2 Then zonecomp2(cx, maxy) = 5 If zonecomp2(cx, miny) <> 1 And zonecomp2(cx, miny) <> 2 Then zonecomp2(cx, miny) = 5 Else 'If this not the first part of ship then mark previously selected 'squares for candidates as misses because now you know the 'direction of the ship If (zonecomp2(minx, cy) = 2 And minx <> cx) Or (zonecomp2(maxx, cy) = 2 And maxx <> cx) Then If (zonecomp2(minx, cy) = 2 And minx <> cx) Then zonecomp2(maxx, cy) = 5 Else

90 zonecomp2(minx, cy) = 5 zonecomp2(cx, miny) = 1 zonecomp2(cx, maxy) = 1 zonecomp2(maxx, miny) = 1 zonecomp2(maxx, maxy) = 1 zonecomp2(minx, miny) = 1 zonecomp2(minx, maxy) = 1 'You can unrem these bitblt's to see how the comp thinks 'BitBlt field1.hdc, cx * 30, miny * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, cx * 30, maxy * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, maxx * 30, miny * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, maxx * 30, maxy * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, minx * 30, miny * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, minx * 30, maxy * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy ElseIf (zonecomp2(cx, miny) = 2 And miny <> cy) Or (zonecomp2(cx, maxy) = 2 And maxy <> cy) Then If (zonecomp2(cx, miny) = 2 And miny <> cy) Then zonecomp2(cx, maxy) = 5 Else zonecomp2(cx, miny) = 5 zonecomp2(minx, cy) = 1 zonecomp2(maxx, cy) = 1 zonecomp2(maxx, miny) = 1 zonecomp2(minx, miny) = 1 zonecomp2(minx, maxy) = 1 zonecomp2(maxx, maxy) = 1 'You can unrem these bitblt's to see how the comp thinks 'BitBlt field1.hdc, minx * 30, cy * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, maxx * 30, cy * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, maxx * 30, miny * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, maxx * 30, maxy * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'BitBlt field1.hdc, minx * 30, miny * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy

91 'BitBlt field1.hdc, minx * 30, maxy * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'This gets the next potential shot if any For k = 0 To max - 1 For j = 0 To max - 1 If zonecomp2(k, j) = 5 Then nextshotx = k nextshoty = j changeturn field1.refresh 'Set new flame 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 Sub Next j Next k nextshotx = -1 nextshoty = -1 'Set new flame 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 Next i Else

92 'Miss BitBlt field1.hdc, cx * 30, cy * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy 'See if any candidates exist otherwise set next to -1 so it chooses randomly next time For k = 0 To max - 1 For j = 0 To max - 1 If zonecomp2(k, j) = 5 Then nextshotx = k nextshoty = j changeturn field1.refresh Exit Sub Next j Next k nextshotx = -1 nextshoty = -1 changeturn field1.refresh End Sub Sub drawfield() 'This sub draws all the tiles on field1 (left field) Dim i As Integer 'counter Dim j As Integer 'counter 'Draw tile on each available square For i = 0 To max - 1 For j = 0 To max - 1 BitBlt field1.hdc, i * 30, j * 30, tile.scalewidth, tile.scaleheight, tile.hdc, 0, 0, vbsrccopy Next j Next i field1.refresh 'Make field1 visible field1.visible = True End Sub

93 Sub drawremaincomp() Dim i As Integer For i = 1 To 10 If Not compships(i).isdead Then compships(i).drawship2 Next i End Sub Sub drawships() 'This sub draws all the ships on field1 (left field) Dim i As Integer 'For each ship draw it For i = 1 To 10 ships(i).drawship Next End Sub Sub drawwater() 'This sub draws water tiles on field1 (left field) and empty tiles on field2 (right field) Dim i As Integer 'counter Dim j As Integer 'counter 'Go through each available sqaure For i = 0 To max - 1 For j = 0 To max - 1 BitBlt field1.hdc, i * 30, j * 30, tile.scalewidth, tile.scaleheight, water.hdc, 0, 0, vbsrccopy BitBlt field2.hdc, i * 30, j * 30, tile.scalewidth, tile.scaleheight, tile.hdc, 0, 0, vbsrccopy Next j Next i field1.refresh field2.refresh End Sub Sub getbackimage(byval x, ByVal y, ByRef backimage As PictureBox, ByRef backimagemask As PictureBox) 'This sub gets the image and its mask from x and y coords supplied Dim tempx As Integer 'temp X coord Dim tempy As Integer 'temp Y coord Dim headx As Integer 'head X of ship Dim heady As Integer 'head Y of ship Dim size As Integer 'size of ship Dim direc As Integer 'direction of ship

94 Dim i As Integer 'counter Dim section As Integer 'current section tempx = x 'set temp X to x tempy = y 'set temp Y to y 'Check if coords actually point to a ship If zone1(tempx, tempy) <> 0 Then 'Find headx of ship by going backwards from given point Do tempx = tempx - 1 If tempx < 0 Then Exit Do Loop Until zone1(tempx, y) = 0 headx = tempx + 1 'Find heady of ship by going backwards from given point Do tempy = tempy - 1 If tempy < 0 Then Exit Do Loop Until zone1(x, tempy) = 0 heady = tempy + 1 'Loop through all ships to find the one that is on x and y For i = 1 To 10 If ships(i) Is Nothing Then 'Do nothing ElseIf ships(i).headx = headx And ships(i).heady = heady Then direc = ships(i).direction size = ships(i).length section = ships(i).sectionnumber(x, y) Exit For Next i 'Direction determines the back image If direc = vbkeyright Then 'Size determines the back image If size = 1 Then Set backimage = shipsinglehor Set backimagemask = shipsinglehormask

95 ElseIf size = 2 Then If section = 1 Then Set backimage = shipleftend Set backimagemask = shipleftendmask ElseIf section = 2 Then Set backimage = shiprightend Set backimagemask = shiprightendmask ElseIf size = 3 Then If section = 1 Then Set backimage = shipleftend Set backimagemask = shipleftendmask ElseIf section = 2 Then Set backimage = shipmid1 Set backimagemask = shipmid1mask ElseIf section = 3 Then Set backimage = shiprightend Set backimagemask = shiprightendmask ElseIf size = 4 Then If section = 1 Then Set backimage = shipleftend Set backimagemask = shipleftendmask ElseIf section = 2 Then Set backimage = shipmid1 Set backimagemask = shipmid1mask ElseIf section = 3 Then Set backimage = shipmid2 Set backimagemask = shipmid2mask ElseIf section = 4 Then Set backimage = shiprightend Set backimagemask = shiprightendmask Else 'Size determines the back image If size = 1 Then Set backimage = shipsinglehor Set backimagemask = shipsinglehormask ElseIf size = 2 Then If section = 1 Then Set backimage = shipupend Set backimagemask = shipupendmask ElseIf section = 2 Then Set backimage = shipdownend

96 Set backimagemask = shipdownendmask ElseIf size = 3 Then If section = 1 Then Set backimage = shipupend Set backimagemask = shipupendmask ElseIf section = 2 Then Set backimage = shipmid2down Set backimagemask = shipmid2downmask ElseIf section = 3 Then Set backimage = shipdownend Set backimagemask = shipdownendmask ElseIf size = 4 Then If section = 1 Then Set backimage = shipupend Set backimagemask = shipupendmask ElseIf section = 2 Then Set backimage = shipmid2down Set backimagemask = shipmid2downmask ElseIf section = 3 Then Set backimage = shipmid1down Set backimagemask = shipmid1downmask ElseIf section = 4 Then Set backimage = shipdownend Set backimagemask = shipdownendmask End Sub Function isover() As Boolean 'This function returns true if the game is over Dim i As Integer 'counter 'Initialize isover to true isover = True 'Go through each ship and test if all are dead For i = 1 To 10 If Not ships(i).isdead Then isover = False Exit Function Next i End Function

97 Function isovercomp() As Boolean 'This function returns true if the game is over Dim i As Integer 'counter 'Initialize isover to true isovercomp = True 'Go through each ship and test if all are dead For i = 1 To 10 If Not compships(i).isdead Then isovercomp = False Exit Function Next i End Function Sub setcomputerships() 'This sub randomly places the computer ships 'This sub could be done without code repetition 'but I am lazy Dim OK As Boolean 'OK if valid position Dim cx As Integer 'current X coord Dim cy As Integer 'current Y coord Dim direc As Integer 'direction Dim i As Integer Dim k As Integer 'Set battleship OK = False Do 'Get random X Randomize cx = Int(Rnd() * 10) 'Get random Y Randomize cy = Int(Rnd() * 10) 'Get random direction direc = Int(Rnd() * 2) + 1 If direc = 1 Then direc = vbkeyright Else direc = vbkeydown

98 'Check validity of position If checkvaliditycomp(cx, cy, direc, 4) And zonecomp(cx, cy) = 0 Then Set compships(1) = New shipclass compships(1).setvalues cx, cy, 4, direc If direc = vbkeyright Then For i = 0 To 3 zonecomp(cx + i, cy) = 4 Next i Else For i = 0 To 3 zonecomp(cx, cy + i) = 4 Next i OK = True i = 0 Loop Until OK 'Set two cruisers For k = 2 To 3 OK = False i = 0 Do Randomize cx = Int(Rnd() * 10) Randomize cy = Int(Rnd() * 10) direc = Int(Rnd() * 2) + 1 If direc = 1 Then direc = vbkeyright Else direc = vbkeydown If checkvaliditycomp(cx, cy, direc, 3) And zonecomp(cx, cy) = 0 Then Set compships(k) = New shipclass compships(k).setvalues cx, cy, 3, direc If direc = vbkeyright Then For i = 0 To 2 zonecomp(cx + i, cy) = 3 Next i Else For i = 0 To 2 zonecomp(cx, cy + i) = 3 Next i

99 OK = True i = 0 Loop Until OK Next k 'Set three subs For k = 4 To 6 OK = False i = 0 Do Randomize cx = Int(Rnd() * 10) Randomize cy = Int(Rnd() * 10) direc = Int(Rnd() * 2) + 1 If direc = 1 Then direc = vbkeyright Else direc = vbkeydown If checkvaliditycomp(cx, cy, direc, 2) And zonecomp(cx, cy) = 0 Then Set compships(k) = New shipclass compships(k).setvalues cx, cy, 2, direc If direc = vbkeyright Then For i = 0 To 1 zonecomp(cx + i, cy) = 2 Next i Else For i = 0 To 1 zonecomp(cx, cy + i) = 2 Next i OK = True i = 0 Loop Until OK Next k 'Set four destroyers For k = 7 To 10 OK = False i = 0 Do Randomize

100 cx = Int(Rnd() * 10) Randomize cy = Int(Rnd() * 10) direc = Int(Rnd() * 2) + 1 If direc = 1 Then direc = vbkeyright Else direc = vbkeydown If checkvaliditycomp(cx, cy, direc, 1) And zonecomp(cx, cy) = 0 Then Set compships(k) = New shipclass compships(k).setvalues cx, cy, 1, direc zonecomp(cx, cy) = 1 OK = True i = 0 Loop Until OK Next k End Sub Private Sub Command1_Click() frmptnjk.show 1 End Sub Private Sub Command2_Click() Dim s As Integer Set rs1 = New Recordset Set con1 = New Connection 'If Text1.Text <> "" And IsNumeric(Text2.Text) = True Then con1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\hangman\aaa.mdb;Persist Security Info=False" rs1.open "select * from a ", con1, adopendynamic, adlockoptimistic rs1.addnew Array("name", "score"), Array(frmnama.Text1.Text, score.caption) rs1.close con1.close con1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\hangman\aaa.mdb;Persist Security Info=False" rs1.open "select * from a order by score desc ", con1, adopendynamic, adlockoptimistic For s = 0 To 4 frmhigh.label1(s).fontsize = 10 frmhigh.label1(s).fontbold = True frmhigh.label1(s).forecolor = vbred frmhigh.label1(s).alignment = 2 frmhigh.label1(s).caption = rs1!name

101 frmhigh.label2(s).fontsize = 10 frmhigh.label2(s).fontbold = True frmhigh.label2(s).forecolor = vbblue frmhigh.label2(s).alignment = 2 frmhigh.label2(s).caption = rs1!score rs1.movenext Next rs1.close con1.close frmhigh.show 1 End Sub Private Sub Command4_Click() 'This is the begin button 'I got example of winsock usage from PSC so thank 'to whoever posted it If Option1.Value Then 'Set field for play in single mode timer1.enabled = False lblstatus.visible = False Frame1.Visible = True lblstate.visible = True Command5.Visible = True lblstatus.visible = False frametype.visible = False lblstatus.visible = False framefield1.visible = True drawfield setcomputerships user = "Computer" End Sub Private Sub Command5_Click() 'The start button 'Set field for play field2.enabled = False lblreply.visible = True If gametype = 2 Then txtreceive.visible = True lblreceive.visible = True

102 Else bigship.visible = True Frame1.Visible = False framefield2.visible = True field1.enabled = False drawwater box.visible = False field1.refresh field2.enabled = True user1 = True drawships Command5.Visible = False txtreceive.enabled = False 'Set state caption lblstate.caption = "It is your turn!" 'Enable the turntaggle timer which makes the state caption blink turntaggle.enabled = True End Sub Private Sub field1_mousedown(button As Integer, Shift As Integer, x As Single, y As Single) 'field1 (left field) On Error GoTo handler Dim tempoption As OptionButton 'current option select Dim templbl As Label 'corresponding label Dim curship As Integer 'current ship index Dim tempx As Integer 'temp x Dim tempy As Integer 'temp y Dim headx As Integer 'head x Dim heady As Integer 'head y Dim direc As Integer 'direction of ship Dim size As Integer 'size of ship Dim i As Integer 'counter Dim mark As Integer 'current mark (1-4 ship type) Dim tempwidth As Integer 'temp width of box Dim clickedx As Integer 'clicked x Dim clickedy As Integer 'clicked y Dim r 'return value

103 'left button If Button = 1 Then 'Find the next available place for a ship in ship array 'Loop through ship array until one is = nothing For curship = 1 To 9 If ships(curship) Is Nothing Then Exit For Next 'Determine what ship you are placing (1-4) If Option7.Value Then mark = 1 Set tempoption = Option7 Set templbl = lbl7 ElseIf Option6.Value Then mark = 2 Set tempoption = Option6 Set templbl = lbl6 ElseIf Option5.Value Then mark = 3 Set tempoption = Option5 Set templbl = lbl5 ElseIf Option4.Value Then mark = 4 Set tempoption = Option4 Set templbl = lbl4 Else 'erase mark mark = 0 'Erase code If mark = 0 Then clickedx = Int((box.Left + 10) / 30) clickedy = Int(y / 30) tempx = clickedx tempy = clickedy 'Check if ship is there If zone1(tempx, tempy) <> 0 Then 'Find headx of ship Do tempx = tempx - 1 If tempx < 0 Then Exit Do

104 Loop Until zone1(tempx, clickedy) = 0 headx = tempx + 1 'Find shipy of ship Do tempy = tempy - 1 If tempy < 0 Then Exit Do Loop Until zone1(clickedx, tempy) = 0 heady = tempy + 1 'Find ship with headx and heady For i = 1 To 10 If ships(i) Is Nothing Then 'Do nothing ElseIf ships(i).headx = headx And ships(i).heady = heady Then direc = ships(i).direction size = ships(i).length Set ships(i) = Nothing 'erase ship Exit For Next i 'Draw tiles where the ship was 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 'Modify the ship availability captions If size = 4 Then Option4.Enabled = True lbl4.caption = Val(lbl4.Caption) + 1 & " left" ElseIf size = 3 Then

105 Option5.Enabled = True lbl5.caption = Val(lbl5.Caption) + 1 & " left" ElseIf size = 2 Then Option6.Enabled = True lbl6.caption = Val(lbl6.Caption) + 1 & " left" ElseIf size = 1 Then Option7.Enabled = True lbl7.caption = Val(lbl7.Caption) + 1 & " left" field1.refresh Else 'set ship 'if direction is horizontal If box.width >= box.height Then 'Check validity If checkvalidity(int((box.left + 10) / 30), Int(y / 30), vbkeyright, mark) Then 'play place sound r = sndplaysound(app.path & "\slap.wav", SND_ASYNC) 'Place a mark on every square where ship placed For i = Int((box.Left + 10) / 30) To Int((box.Left + 10) / 30) + mark - 1 zone1(i, Int(y / 30)) = mark Next i 'Initialize new ship Set ships(curship) = New shipclass ships(curship).setvalues Int((box.Left + 10) / 30), Int(y / 30), mark, vbkeyright 'Draw ship ships(curship).drawship Else MsgBox ("Invalid position!") Exit Sub Else 'direction is vertical If checkvalidity(int(x / 30), Int((box.Top + 10) / 30), vbkeydown, mark) Then 'play place sound r = sndplaysound(app.path & "\slap.wav", SND_ASYNC) 'Place a mark on every square where ship placed For i = Int((box.Top + 10) / 30) To Int((box.Top + 10) / 30) + mark - 1 zone1(int(x / 30), i) = mark Next i

106 'Initialize new ship Set ships(curship) = New shipclass ships(curship).setvalues Int(x / 30), Int((box.Top + 10) / 30), mark, vbkeydown 'Draw ship ships(curship).drawship Else MsgBox ("Invalid position!") Exit Sub 'Modify ship availablity captions and set focus to next available ship option templbl.caption = Val(Left(tempLbl.Caption, 1)) - 1 & " left" 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 Else 'right button 'Change direction of box tempwidth = box.width box.width = box.height box.height = tempwidth 'Check if all ships are set If allset() Then Command5.Enabled = True Else Command5.Enabled = False Exit Sub 'This can only happen if ship is being placed out of bound

107 'but should never get here handler: End Sub Function checkvalidity(byval x As Integer, ByVal y As Integer, ByVal dir As Integer, ByVal mark As Integer) As Boolean 'This long function checks if the placement of the ship 'is valid (in bounds and at least one square away from other ships Dim xstart As Integer 'ship start X coord Dim ystart As Integer 'ship start Y coord Dim xend As Integer 'ship end X coord Dim yend As Integer 'ship end Y coord Dim i As Integer 'counter 1 Dim k As Integer 'counter 2 'Direction determines how to look for start and end of ship If dir = vbkeyright Then 'These if's set the coord Start and End variables to be one square over 'where they actually are. This is how I check if the ship being placed 'is at least one square away from the others 'Also makes surtain you don't go out of bounds If x > 0 Then xstart = x - 1 Else xstart = 0 If x + mark < max Then xend = x + mark Else xend = max - 1 If y > 0 Then ystart = y - 1 Else ystart = 0 If y < max - 1 Then yend = y + 1 Else yend = max - 1 'Check if all clear For i = xstart To xend For k = ystart To yend

108 If zone1(i, k) <> 0 Then checkvalidity = False Exit Function Next k Next i Else 'Same as above but different direction If x > 0 Then xstart = x - 1 Else xstart = 0 If x < max - 1 Then xend = x + 1 Else xend = max - 1 If y > 0 Then ystart = y - 1 Else ystart = 0 If y + mark < max Then yend = y + mark Else yend = max - 1 For i = xstart To xend For k = ystart To yend If zone1(i, k) <> 0 Then checkvalidity = False Exit Function Next k Next i 'if still in the function then all clear checkvalidity = True End Function

109 Function checkvaliditycomp(byval x As Integer, ByVal y As Integer, ByVal dir As Integer, ByVal mark As Integer) As Boolean 'This is basically the same function as checkvalidity 'but it is modified since computer can actually go out of bounds 'and you have to modify a bit, but the comments in checkvalidity hold true 'here As well (i am lazy) Dim xstart As Integer Dim ystart As Integer Dim xend As Integer Dim yend As Integer Dim i As Integer Dim k As Integer 'Check for in bounds If x + mark < max And y + mark < max Then If dir = vbkeyright Then If x > 0 Then xstart = x - 1 Else xstart = 0 If x + mark < max Then xend = x + mark Else xend = max - 1 If y > 0 Then ystart = y - 1 Else ystart = 0 If y < max - 1 Then yend = y + 1 Else yend = max - 1 For i = xstart To xend For k = ystart To yend If zonecomp(i, k) <> 0 Then checkvaliditycomp = False Exit Function Next k Next i Else

110 If x > 0 Then xstart = x - 1 Else xstart = 0 If x < max - 1 Then xend = x + 1 Else xend = max - 1 If y > 0 Then ystart = y - 1 Else ystart = 0 If y + mark < max Then yend = y + mark Else yend = max - 1 For i = xstart To xend For k = ystart To yend If zonecomp(i, k) <> 0 Then checkvaliditycomp = False Exit Function Next k Next i checkvaliditycomp = True Else checkvaliditycomp = False End Function Private Sub field1_mousemove(button As Integer, Shift As Integer, x As Single, y As Single) 'Box movement sub 'Make box visible If Not box.visible Then box.visible = True 'Make cursor be in the middle of the box box.left = x - box.width / 2

111 box.top = y - box.height / 2 'Make sure the box stays in bounds If box.left < 0 Then box.left = 0 If box.top < 0 Then box.top = 0 If box.left + box.width > 300 Then box.left = box.width If box.top + box.height > 300 Then box.top = box.height End Sub Private Sub field2_mousedown(button As Integer, Shift As Integer, x As Single, y As Single) 'Shot sub Dim r As Integer 'return value Dim i As Integer Dim tempx As Integer Dim tempy As Integer Dim headx As Integer Dim heady As Integer curx = Int(x / 30) cury = Int(y / 30) field2.enabled = False 'if empty square If zone2(curx, cury) = 0 Then zone2(curx, cury) = 1 'Check shot result If zonecomp(curx, cury) > 0 And zonecomp(curx, cury) < 5 Then 'animate explosion hitanim.enabled = True score = score + 10 'play hit sound r = sndplaysound(app.path & "\bang.wav", SND_ASYNC) tempx = curx tempy = cury Do

112 tempx = tempx - 1 If tempx < 0 Then Exit Do Loop Until zonecomp(tempx, cury) = 0 headx = tempx + 1 Do tempy = tempy - 1 If tempy < 0 Then Exit Do Loop Until zonecomp(curx, tempy) = 0 heady = tempy + 1 For i = 1 To 10 If compships(i).headx = headx And compships(i).heady = heady Then r = compships(i).cripple If r Then isdead = True Next i Else 'animate miss missanim.enabled = True 'play miss sound r = sndplaysound(app.path & "\miss.wav", SND_ASYNC) Else field2.enabled = True End Sub Private Sub field2_mousemove(button As Integer, Shift As Integer, x As Single, y As Single) 'Set mousepointer to crosshairs field2.mousepointer = 99 End Sub Private Sub fireanim_timer() 'Sub that animates the fire Dim i As Integer 'counter i = 1 'Here is how typ is used to check when to stop looping

113 'Loop through all fires and draw a frame of each Do Until zone1flame(i).typ = 0 'Draw fire mask BitBlt field1.hdc, zone1flame(i).x * 30, zone1flame(i).y * 30, 30, 30, firemask.hdc, zone1flame(i).frame * 30, 0, vbsrcand 'Draw fire BitBlt field1.hdc, zone1flame(i).x * 30, zone1flame(i).y * 30, 30, 30, fire.hdc, zone1flame(i).frame * 30, 0, vbsrcpaint 'Increment frame zone1flame(i).frame = zone1flame(i).frame + 1 'Reset frame If zone1flame(i).frame = 19 Then zone1flame(i).frame = 0 'Increment counter i = i + 1 'Should almost never be greater then 20 only at the end of game If i > 20 Then fireanim.enabled = False Exit Sub Loop field1.refresh 'Reset counter i = 1 'For each fire draw backimage and its mask Do Until zone1flame(i).typ = 0 BitBlt field1.hdc, zone1flame(i).x * 30, zone1flame(i).y * 30, tile.scalewidth, tile.scaleheight, zone1flame(i).backimagemask.hdc, 0, 0, vbsrcand BitBlt field1.hdc, zone1flame(i).x * 30, zone1flame(i).y * 30, tile.scalewidth, tile.scaleheight, zone1flame(i).backimage.hdc, 0, 0, vbsrcpaint i = i + 1 Loop End Sub Private Sub Form_Load() 'Center frametype and status label frametype.left = Me.Width / 2 - frametype.width / 2 frametype.top = Me.Height / 2 - frametype.height / lblstatus.left = frametype.left - 70 lblstatus.top = frametype.top + frametype.height + 300

114 Option1.Value = True 'Initialize compshot nextshotx = -1 End Sub Private Sub hitanim_timer() 'Sub that animates explosion Dim r As Integer 'return value Dim s As Integer 'Draw explosion frame BitBlt field2.hdc, curx * 30, cury * 30, 30, 30, hitmask.hdc, framenum * 32, 0, vbsrcand BitBlt field2.hdc, curx * 30, cury * 30, 30, 30, hit.hdc, framenum * 32, 0, vbsrcpaint 'Increment flame framenum = framenum + 1 field2.refresh 'Stop animation If framenum = 19 Then framenum = 0 hitanim.enabled = False BitBlt field2.hdc, curx * 30, cury * 30, tile.scalewidth, tile.scaleheight, shipdead.hdc, 0, 0, vbsrccopy field2.refresh 'Play sunk sound if dead If isdead Then r = sndplaysound(app.path & "\sunk.wav", SND_ASYNC) If gametype = 1 Then score = score + 20 MsgBox ("Kapal Hancur") If isovercomp Then MsgBox ("Selamat Anda Menang!!!") MsgBox "Anda Menang - Nilai Secore Anda: " & score & Chr(10) & "Terima Kasih Anda Telah Bermain Game Battleship." frmnama.show 1 Set rs1 = New Recordset Set con1 = New Connection 'If Text1.Text <> "" And IsNumeric(Text2.Text) = True Then con1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\hangman\aaa.mdb;Persist Security Info=False" rs1.open "select * from a ", con1, adopendynamic, adlockoptimistic rs1.addnew Array("name", "score"), Array(frmnama.Text1.Text,

115 score.caption) rs1.close con1.close con1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\hangman\aaa.mdb;Persist Security Info=False" rs1.open "select * from a order by score desc ", con1, adopendynamic, adlockoptimistic For s = 0 To 4 frmhigh.label1(s).fontsize = 10 frmhigh.label1(s).fontbold = True frmhigh.label1(s).forecolor = vbred frmhigh.label1(s).alignment = 2 frmhigh.label1(s).caption = rs1!name frmhigh.label2(s).fontsize = 10 frmhigh.label2(s).fontbold = True frmhigh.label2(s).forecolor = vbblue frmhigh.label2(s).alignment = 2 frmhigh.label2(s).caption = rs1!score rs1.movenext Next rs1.close con1.close frmhigh.show 1 frmmain.hide isdead = False If gametype = 1 Then field2.enabled = True changeturn End Sub Private Sub missanim_timer() 'sub that animates a miss 'Draw miss frame BitBlt field2.hdc, curx * 30, cury * 30, 30, 30, wateranim.hdc, framenum * 30, 0, vbsrccopy 'Increment miss frame number framenum = framenum + 1

116 field2.refresh 'Stop animation If framenum = 4 Then framenum = 0 missanim.enabled = False BitBlt field2.hdc, curx * 30, cury * 30, tile.scalewidth, tile.scaleheight, watermiss.hdc, 0, 0, vbsrccopy field2.refresh 'Change turn if single player If gametype = 1 Then field2.enabled = True changeturn End Sub Private Sub Option4_Click() 'Battleship option box.bordercolor = &HF0C4A6 'Draw current ship piccurrent.cls BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, shipleftendmask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, shipleftend.hdc, 0, 0, vbsrcpaint BitBlt piccurrent.hdc, 30, 0, tile.scalewidth, tile.scaleheight, shipmid1mask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 30, 0, tile.scalewidth, tile.scaleheight, shipmid1.hdc, 0, 0, vbsrcpaint BitBlt piccurrent.hdc, 60, 0, tile.scalewidth, tile.scaleheight, shipmid2mask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 60, 0, tile.scalewidth, tile.scaleheight, shipmid2.hdc, 0, 0, vbsrcpaint BitBlt piccurrent.hdc, 90, 0, tile.scalewidth, tile.scaleheight, shiprightendmask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 90, 0, tile.scalewidth, tile.scaleheight, shiprightend.hdc, 0, 0, vbsrcpaint piccurrent.refresh 'Change box size box.width = 30 * 4 box.height = 30 End Sub

117 Private Sub Option5_Click() 'Cruiser option box.bordercolor = &HF0C4A6 'draw current ship piccurrent.cls BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, shipleftendmask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, shipleftend.hdc, 0, 0, vbsrcpaint BitBlt piccurrent.hdc, 30, 0, tile.scalewidth, tile.scaleheight, shipmid1mask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 30, 0, tile.scalewidth, tile.scaleheight, shipmid1.hdc, 0, 0, vbsrcpaint BitBlt piccurrent.hdc, 60, 0, tile.scalewidth, tile.scaleheight, shiprightendmask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 60, 0, tile.scalewidth, tile.scaleheight, shiprightend.hdc, 0, 0, vbsrcpaint piccurrent.refresh 'Change box size box.width = 30 * 3 box.height = 30 End Sub Private Sub Option6_Click() 'sub option box.bordercolor = &HF0C4A6 'Draw current ship piccurrent.cls BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, shipleftendmask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, shipleftend.hdc, 0, 0, vbsrcpaint BitBlt piccurrent.hdc, 30, 0, tile.scalewidth, tile.scaleheight, shiprightendmask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 30, 0, tile.scalewidth, tile.scaleheight, shiprightend.hdc, 0, 0, vbsrcpaint piccurrent.refresh 'Change box size box.width = 30 * 2 box.height = 30 End Sub

118 Private Sub Option7_Click() 'Destroyer option box.bordercolor = &HF0C4A6 'Draw current ship piccurrent.cls BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, shipsinglehormask.hdc, 0, 0, vbsrcand BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, shipsinglehor.hdc, 0, 0, vbsrcpaint piccurrent.refresh 'Change box size box.width = 30 * 1 box.height = 30 End Sub Private Sub Option8_Click() 'erase option box.bordercolor = vbred 'draw current ship piccurrent.cls BitBlt piccurrent.hdc, 0, 0, tile.scalewidth, tile.scaleheight, tile.hdc, 0, 0, vbsrccopy 'Change box size box.width = 30 * 1 box.height = 30 End Sub Kode Program Form Petunjuk Private Sub Command1_Click() Unload Me End Sub Kode Program Form Nama Private Sub Command1_Click() If Text1.Text = "" Then MsgBox "Please enter name"

119 Else: frmnama.hide End Sub Private Sub Form_Load() Text1.FontSize = 8 End Sub Kode Program Form High Private Sub Command1_Click() Unload Me End Sub Module1 'Basic function declaration used throughout the program Option Explicit 'This function gets the current user login from the computer Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nsize As Long) As Long 'BitBlt used for drawing Public 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 Declare Function mcisendstring Lib "winmm.dll" Alias "mcisendstringa" (ByVal lpstrcommand As String, ByVal lpstrreturnstring As String, ByVal ureturnlength As Long, ByVal hwndcallback As Long) As Long Public IsMusicOn As Boolean Public RetValue As Long 'Used to play wav files

120 Declare Function sndplaysound Lib "winmm.dll" Alias "sndplaysounda" (ByVal lpszsoundname As String, ByVal uflags As Long) As Long 'Some constants associates with sndplaysound Public Const SND_ASYNC = &H1 Public Const SND_LOOP = &H8 Public Const SND_NODEFAULT = &H2 Public Const SND_SYNC = &H0 Public Const SND_NOSTOP = &H10 Public Const SND_MEMORY = &H4 Public Const max = 10 'max field size Public curflame 'next available flame index Public framenum 'used with hitanim and missanim Public framenum2 'used with nothing Public isdead 'true when ship is dead Public score As Single Public gametype As Integer '1-for single and 2-for multi Public nextshotx As Integer 'computer's next shot X coord Public nextshoty As Integer 'computer's next shot Y coord 'This structure is used to store each flame info Public Type flame typ As Integer 'was used for type of flame, but later changed to 1 type so now it is used in a diff way (check fireanim) frame As Integer 'current frame the fireanim is on x As Integer 'X coord of flame y As Integer 'Y coord of flame backimage As PictureBox 'This stores the original field image for x and y backimagemask As PictureBox 'This stores the original field image mask for x and y End Type Sub main() frmmain.show 1 End End Sub Class Module Public headx As Integer 'X coord of ship start (0-10) Public heady As Integer 'Y coord of ship start (0-10) Public length As Integer 'Length of the ship Public direction As Integer 'Direction of the ship (hor = vbkeyright or vert = vbkeydown)

121 Dim status() As Integer 'Stores info about each section of the ship (hit or not) Sub drawship() 'This sub draws the ship on field1 (left field) 'It draws the human opponents' ships 'The length determines how the ship is drawn 'I multiply each coord by 30 because thats the length 'of each section of the ship Select Case length Case 1 BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipsinglehormask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipsinglehor.hdc, 0, 0, vbsrcpaint Case 2 'Direction determines how the ship is drawn If direction = vbkeyright Then BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipleftendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipleftend.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, (headx + 1) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shiprightendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, (headx + 1) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shiprightend.hdc, 0, 0, vbsrcpaint ElseIf direction = vbkeydown Then BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipupendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipupend.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, headx * 30, (heady + 1) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipdownendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, (heady + 1) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipdownend.hdc, 0, 0, vbsrcpaint Case 3 'Direction determines how the ship is drawn If direction = vbkeyright Then BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipleftendmask.hdc, 0, 0, vbsrcand

122 BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipleftend.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, (headx + 1) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid1mask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, (headx + 1) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid1.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, (headx + 2) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shiprightendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, (headx + 2) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shiprightend.hdc, 0, 0, vbsrcpaint ElseIf direction = vbkeydown Then BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipupendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipupend.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, headx * 30, (heady + 1) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid1downmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, (heady + 1) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid1down.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, headx * 30, (heady + 2) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipdownendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, (heady + 2) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipdownend.hdc, 0, 0, vbsrcpaint Case 4 'Direction determines how the ship is drawn If direction = vbkeyright Then BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipleftendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipleftend.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, (headx + 1) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid1mask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, (headx + 1) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid1.hdc, 0, 0, vbsrcpaint

123 BitBlt frmmain.field1.hdc, (headx + 2) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid2mask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, (headx + 2) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid2.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, (headx + 3) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shiprightendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, (headx + 3) * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shiprightend.hdc, 0, 0, vbsrcpaint ElseIf direction = vbkeydown Then BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipupendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, heady * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipupend.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, headx * 30, (heady + 1) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid2downmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, (heady + 1) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid2down.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, headx * 30, (heady + 2) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid1downmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, (heady + 2) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipmid1down.hdc, 0, 0, vbsrcpaint BitBlt frmmain.field1.hdc, headx * 30, (heady + 3) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipdownendmask.hdc, 0, 0, vbsrcand BitBlt frmmain.field1.hdc, headx * 30, (heady + 3) * 30, frmmain.tile.scalewidth, frmmain.tile.scaleheight, frmmain.shipdownend.hdc, 0, 0, vbsrcpaint End Select frmmain.field1.refresh End Sub Function sectionnumber(byval x, ByVal y) As Integer 'This function returns the section number of the ship 'from the start of it given x and y coord Dim tempx As Integer 'temp X coord Dim tempy As Integer 'temp Y coord

124 tempx = headx 'set temp X to head X of ship tempy = heady 'set temp Y to head Y of ship sectionnumber = 1 'initialize sectionnum to 1 'Direction determines how to look up the section If direction = vbkeyright Then 'Loop through the ship's section until you hit the right one Do Until tempx = x tempx = tempx + 1 sectionnumber = sectionnumber + 1 Loop Else 'Loop through the ship's section until you hit the right one Do Until tempy = y tempy = tempy + 1 sectionnumber = sectionnumber + 1 Loop End Function Sub setvalues(byval x As Integer, ByVal y As Integer, ByVal s As Integer, ByVal dir As Integer) 'This initializes the ship Dim i As Integer 'counter headx = x 'head X coord of ship heady = y 'head Y coord of ship length = s 'size of ship direction = dir 'direction of ship (vbkeyright or vbkeydown) ReDim status(1 To s) 'Set the status array to be the size of ship 'Initialize status array to all 0's For i = 1 To s status(i) = 0 Next i End Sub Function cripple() As Boolean 'This function updates the status of the ship 'when a section of it has been hit 'It returns false if the ship is crippled and 'true if the ship is sunk. Dim i As Integer 'counter

125 'Basically everytime a ship gets hit I set the next 'available place in the status() to 1 meaning hit. 'When all of status() is equal to 1 then the ship 'is sunk 'Loop through array and set the next available space 'to 1 For i = 1 To length If status(i) = 0 Then status(i) = 1 cripple = isdead() 'Checks if ship is sunk Exit Function Next i cripple = isdead() 'Checks if ship is sunk End Function Function isdead() As Boolean 'This basically just goes through the status array 'and if all of it is set to 1 then return true (for dead) Dim i As Integer 'counter For i = 1 To length If status(i) = 0 Then isdead = False Exit Function Next i isdead = True End Function

PENGEMBANGAN APLIKASI PERMAINAN NINJA VAMPIRE

PENGEMBANGAN APLIKASI PERMAINAN NINJA VAMPIRE PENGEMBANGAN APLIKASI PERMAINAN NINJA VAMPIRE Laporan Tugas Akhir Diajukan untuk melengkapi persyaratan mencapai gelar sarjana strata satu (S1) Program Studi Teknik Informatika oleh IRVANTO WAHYUDHIE NIM

Lebih terperinci

PENGEMBANGAN APLIKASI SHOOTER GAME MENGGUNAKAN VISUAL BASIC 6.0

PENGEMBANGAN APLIKASI SHOOTER GAME MENGGUNAKAN VISUAL BASIC 6.0 PENGEMBANGAN APLIKASI SHOOTER GAME MENGGUNAKAN VISUAL BASIC 6.0 Laporan Tugas Akhir Diajukan untuk melengkapi salah satu persyaratan mencapai gelar sarjana strata satu (S1) Program Studi Teknik Informatika

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA II.1. Pengertian Sistem Sistem merupakan salah satu yang terpenting dalam sebuah perusahaan yang dapat membentuk kegiatan usaha untuk mencapai kemajuan dan target yang dibutuhkan.

Lebih terperinci

Gambar Use Case Diagram

Gambar Use Case Diagram 1. Use Case Diagram Use case adalah abstraksi dari interaksi antara system dan actor. Use case bekerja dengan cara mendeskripsikan tipe interaksi antara user sebuah system dengan sistemnya sendiri melalui

Lebih terperinci

SISTEM MONITORING PENGANTARAN OBAT PADA PT. XYZ DENGAN PEMROGRAMAN JAVA ANDROID DAN WEB

SISTEM MONITORING PENGANTARAN OBAT PADA PT. XYZ DENGAN PEMROGRAMAN JAVA ANDROID DAN WEB SISTEM MONITORING PENGANTARAN OBAT PADA PT. XYZ DENGAN PEMROGRAMAN JAVA ANDROID DAN WEB Rivan Junizar 41513120145 FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA 2015 SISTEM MONITORING PENGANTARAN OBAT

Lebih terperinci

BAB II LANDASAN TEORI. pendekatan komponen.dengan pendekatan prosedur, sistem dapat didefinisikan

BAB II LANDASAN TEORI. pendekatan komponen.dengan pendekatan prosedur, sistem dapat didefinisikan 6 BAB II LANDASAN TEORI 2.1. Konsep Dasar Sistem Sistem dapat didefinisikan dengan pendekatan prosedur dan dengan pendekatan komponen.dengan pendekatan prosedur, sistem dapat didefinisikan sebagai kumpulan

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI II.1 Pengertian Aplikasi Aplikasi adalah suatu subkelas perangkat lunak komputer yang memanfaatkan kemampuan komputer langsung untuk melakukan suatu tugas yang diinginkan pengguna.

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA II. 1. Aplikasi Pengertian aplikasi adalah program siap pakai yang dapat digunakan untuk menjalankan perintah dari pengguna aplikasi tersebut dengan tujuan mendapatkan hasil yang

Lebih terperinci

Notasi Unified Modeling Language (UML) Versi 2.0

Notasi Unified Modeling Language (UML) Versi 2.0 Notasi Unified Modeling Language (UML) Versi 2.0 Unified Modeling Language (UML) adalah notasi yang lengkap untuk membuat visualisasi model suatu sistem. Sistem berisi informasi dan fungsi, tetapi secara

Lebih terperinci

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM III.1. Analisis Memainkan game dikomputer sangat menyenangkan, namun akan lebih menyenangkan bila kita dapat memainkannya secara bersamaan dengan dua komputer

Lebih terperinci

BAB II DASAR TEORI an dan sekitar awal 1960-an. Pada tahun 1968, NATO menyelenggarakan

BAB II DASAR TEORI an dan sekitar awal 1960-an. Pada tahun 1968, NATO menyelenggarakan BAB II DASAR TEORI 2.1 Rekayasa Perangkat Lunak Istilah software engineering, pertama kali digunakan pada akhir tahun 1950-an dan sekitar awal 1960-an. Pada tahun 1968, NATO menyelenggarakan konfrensi

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Teori Pendukung Dalam merancang sebuah perogram, terlebih dahulu mempelajari teori-teori yang berhubungan dengan program yang dirancang. Hal ini dilakukan supaya program yang

Lebih terperinci

Yuli Purwati, M.Kom USE CASE DIAGRAM

Yuli Purwati, M.Kom USE CASE DIAGRAM Yuli Purwati, M.Kom USE CASE DIAGRAM UML UML (Unified Modeling Language) merupakan pengganti dari metode analisis berorientasi object dan design berorientasi object (OOA&D) yang dimunculkan sekitar akhir

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA II.1. Sistem Sistem merupakan kumpulan dari unsur atau elemen-elemen yang saling berkaitan/berinteraksi dan saling memengaruhi dalam melakukan kegiatan bersama untuk mencapai suatu

Lebih terperinci

DAFTAR ISI LEMBAR PENGESAHAN SURAT PERNYATAAN

DAFTAR ISI LEMBAR PENGESAHAN SURAT PERNYATAAN DAFTAR ISI LEMBAR PENGESAHAN... i SURAT PERNYATAAN... ii ABSTRACT... iii ABSTRAKSI... iv KATA PENGANTAR... v DAFTAR ISI... vii DAFTAR TABEL... x DAFTAR GAMBAR... xi DAFTAR SIMBOL... xiii DAFTAR LAMPIRAN...

Lebih terperinci

Unified Modelling Language UML

Unified Modelling Language UML Unified Modelling Language UML Unified Modelling Language (UML) adalah sebuah "bahasa" yang telah menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak.

Lebih terperinci

PEMBANGUNAN APLIKASI PENCATATAN PENANGANAN GANGGUAN PT. TELKOM REGIONAL BANDUNG

PEMBANGUNAN APLIKASI PENCATATAN PENANGANAN GANGGUAN PT. TELKOM REGIONAL BANDUNG PEMBANGUNAN APLIKASI PENCATATAN PENANGANAN GANGGUAN PT. TELKOM REGIONAL BANDUNG TUGAS AKHIR Disusun sebagai salah satu syarat untuk kelulusan Program Strata 1, di Program Studi Teknik Informatika, Universitas

Lebih terperinci

BAB III METODOLOGI PENELITIAN

BAB III METODOLOGI PENELITIAN BAB III METODOLOGI PENELITIAN 3.1. Desain Penelitian Desain penelitian merupakan tahapan atau gambaran yang akan dilakukan dalam melakukan penelitian. Tahapan-tahapan yang dilakukan dalam penelitian ini

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI Pada Bab ini menjelaskan mengenai dasar-dasar teori yang digunakan untuk menunjang pembuatan tugas akhir membangun sistem pengolahan data absensi karyawan pada PT.Solusi Coporindo

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI 7 BAB 2 LANDASAN TEORI 2.1 Konsep Pemodelan Objek Pemodelan objek merupakan suatu metode untuk menggambarkan struktur sistem yang memperlihatkan semua objek yang ada pada sistem. (Nugroho, 2005, hal:37).

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Manajemen Proyek 2.1.1. Pengertian Manajemen Menurut James A.F. Stoner (2006) Manajemen adalah suatu proses perencanaan, pengorganisasian, kepemimpinan, dan pengendalian upaya

Lebih terperinci

MAKALAH ANALISIS & PERANCANGAN SISTEM II USE CASE DIAGRAM

MAKALAH ANALISIS & PERANCANGAN SISTEM II USE CASE DIAGRAM MAKALAH T02/Use Case Diagram ANALISIS & PERANCANGAN SISTEM II USE CASE DIAGRAM Nama : Abdul Kholik NIM : 05.05.2684 E mail : [email protected] Sumber : http://artikel.webgaul.com/iptek/unifiedmodellinglanguage.htm

Lebih terperinci

BAB III ANALISIS DAN PERANCANGAN

BAB III ANALISIS DAN PERANCANGAN BAB III ANALISIS DAN PERANCANGAN 3.1 Identifikasi Masalah 3 dimensi atau biasa disingkat 3D atau disebut ruang, adalah bentuk dari benda yang memiliki panjang, lebar, dan tinggi. Istilah ini biasanya digunakan

Lebih terperinci

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI 2.1. Tinjauan Pustaka Tinjauan Pustaka yang berhubungan dengan topik yang penulis bahas adalah sistem penerimaan siswa baru SMA Al-Muayyad Surakarta (http://psb.sma-almuayyad.sch.id/),

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Permainan Catur Permainan catur adalah permainan kuno yang telah dimainkan berabadabad lamanya. Permainan catur dimainkan di atas papan yang memiliki 64 kotak (blok). Terdapat

Lebih terperinci

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM III.1 Analisis Masalah EHCPanelskripsi adalah software penghubung antara hosting dengan website dan domain. Saat menyewa sebuah hosting maupun memesan website,

Lebih terperinci

UNIFIED MODELING LANGUAGE

UNIFIED MODELING LANGUAGE UNIFIED MODELING LANGUAGE UML (Unified Modeling Language) adalah metode pemodelan secara visual sebagai sarana untuk merancang dan atau membuat software berorientasi objek. Karena UML ini merupakan bahasa

Lebih terperinci

SISTEM INFORMASI PENDISTRIBUSIAN BIBIT UNGGUL BERBASIS WEB DI KEMENTERIAN PERTANIAN INDONESIA

SISTEM INFORMASI PENDISTRIBUSIAN BIBIT UNGGUL BERBASIS WEB DI KEMENTERIAN PERTANIAN INDONESIA - SISTEM INFORMASI PENDISTRIBUSIAN BIBIT UNGGUL BERBASIS WEB DI KEMENTERIAN PERTANIAN INDONESIA Laporan Tugas Akhir DIAJUKAN UNTUK MELENGKAPI SALAH SATU SYARAT MEMPEROLEH GELAR SARJANA KOMPUTER Oleh: CHANDRA

Lebih terperinci

SEJARAH UML DAN JENISNYA

SEJARAH UML DAN JENISNYA SEJARAH UML DAN JENISNYA Elya Hestika Asiyah [email protected] :: http://penulis.com Abstrak UML (Unified Modeling Language) adalah sebuah bahasa untuk menetukan, visualisasi, kontruksi, dan mendokumentasikan

Lebih terperinci

DAFTAR ISI. KATA PENGANTAR... i. DAFTAR ISI... iii. DAFTAR GAMBAR... xi. DAFTAR TABEL... xvii. DAFTAR SIMBOL... xx BAB I PENDAHULUAN...

DAFTAR ISI. KATA PENGANTAR... i. DAFTAR ISI... iii. DAFTAR GAMBAR... xi. DAFTAR TABEL... xvii. DAFTAR SIMBOL... xx BAB I PENDAHULUAN... DAFTAR ISI KATA PENGANTAR... i DAFTAR ISI... iii DAFTAR GAMBAR... xi DAFTAR TABEL... xvii DAFTAR SIMBOL... xx BAB I PENDAHULUAN... 1 1.1 Latar Belakang... 1 1.2 Rumusan Masalah... 2 1.3 Maksud dan Tujuan...

Lebih terperinci

PEMANFAATAN ARDUINO DALAM PENGEMBANGAN SISTEM RUMAH PINTAR BERBASIS MOBILE DAN WEB (Studi Kasus : Penjadwalan Lampu Rumah)

PEMANFAATAN ARDUINO DALAM PENGEMBANGAN SISTEM RUMAH PINTAR BERBASIS MOBILE DAN WEB (Studi Kasus : Penjadwalan Lampu Rumah) PEMANFAATAN ARDUINO DALAM PENGEMBANGAN SISTEM RUMAH PINTAR BERBASIS MOBILE DAN WEB (Studi Kasus : Penjadwalan Lampu Rumah) TUGAS AKHIR Disusun sebagai salah satu syarat untuk kelulusan Program Strata 1,

Lebih terperinci

BAB III OBJEK DAN METODE PENELITIAN. domain & Web Hosting. Untuk lebih jelas mengenai gambaran umum perusahaan,

BAB III OBJEK DAN METODE PENELITIAN. domain & Web Hosting. Untuk lebih jelas mengenai gambaran umum perusahaan, BAB III OBJEK DAN METODE PENELITIAN 3.1. Objek Penelitian Penulis melakukan objek penelitian pada Qwords.com perusahaan penyedia jasa layanan Web Hosting (Web Hosting Provider) yang melayani registrasi

Lebih terperinci

DAFTAR SIMBOL. case. Dependency 2. Generalization 3. 4 Include. 5 Extend. 6 Associaton

DAFTAR SIMBOL. case. Dependency 2. Generalization 3. 4 Include. 5 Extend. 6 Associaton DAFTAR SIMBOL Daftar Simbol Pada Use Case Diagram Menspesifikasikan himpunan Actor peran yang pengguna mainkan ketika berinteraksi dengan use 1. case. Dependency 2. Generalization 3. 4 Include 5 Extend

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 RAPAT UMUM PEMEGANG SAHAM Peraturan Otoritas Jasa Keuangan Nomor 32 /Pojk.04/2014 Tentang Rencana Dan Penyelenggaraan Rapat Umum Pemegang Saham Perusahaan Terbuka. Pasal 2. 1.

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 CRM (CUSTOMER RELATIONSHIP MANAGEMENT) CRM merupakan suatu strategi bisnis yang terdiri dari software dan layanan yang di desain untuk meningkatkan keuntungan, pendapatan dan

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Konsep Dasar Sistem Dalam membangun sebuah system informasi diperlukan suatu pemahaman mengenai system itu sendiri sehingga tujuan dari pembangunan system informasi dapat tercapai.

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Konsep dasar sistem Suatu sistem pada dasarnya adalah sekolompok unsur yang erat hubungannya satu dengan yang lain, yang berfungsi bersama-sama untuk mencapai tujuan tertentu.secara

Lebih terperinci

BAB II TINJAUAN PUSTAKA. yang ditandai dengan saling berhubungan dan mempunyai satu fungsi atau tujuan

BAB II TINJAUAN PUSTAKA. yang ditandai dengan saling berhubungan dan mempunyai satu fungsi atau tujuan BAB II TINJAUAN PUSTAKA 2.1 Pengertian Sistem Sistem dapat beroperasi dalam suatu lingkungan, jika terdapat unsur unsur yang ditandai dengan saling berhubungan dan mempunyai satu fungsi atau tujuan utama

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 UNIFIED MODELLING LANGUAGE Menurut Fowler (2005:1) Unified Modelling Language (selanjutnya disebut UML) adalah keluarga notasi grafis yang didukung meta-model tunggal, yang membantu

Lebih terperinci

ABSTRACT ABSTRAKSI KATA PENGANTAR

ABSTRACT ABSTRAKSI KATA PENGANTAR DAFTAR ISI ABSTRACT... i ABSTRAKSI... ii KATA PENGANTAR... iii DAFTAR ISI... v DAFTAR TABEL... ix DAFTAR GAMBAR... x DAFTAR SIMBOL... xiii DAFTAR LAMPIRAN... xvi BAB I PENDAHULUAN 1.1 Latar Belakang...

Lebih terperinci

DAFTAR SIMBOL. Notasi Keterangan Simbol. Titik awal, untuk memulai suatu aktivitas. Titik akhir, untuk mengakhiri aktivitas.

DAFTAR SIMBOL. Notasi Keterangan Simbol. Titik awal, untuk memulai suatu aktivitas. Titik akhir, untuk mengakhiri aktivitas. DAFTAR SIMBOL DAFTAR SIMBOL DIAGRAM ACTIVITY Initial Titik awal, untuk memulai suatu aktivitas. Final Titik akhir, untuk mengakhiri aktivitas. Activity Menandakan sebuah aktivitas Decision Pilihan untuk

Lebih terperinci

RANCANGAN SISTEM ADMINISTRASI PASIEN DI RUMAH SAKIT HUSADA DENGAN MENGGUNAKAN VB.NET. Laporan Tugas Akhir

RANCANGAN SISTEM ADMINISTRASI PASIEN DI RUMAH SAKIT HUSADA DENGAN MENGGUNAKAN VB.NET. Laporan Tugas Akhir RANCANGAN SISTEM ADMINISTRASI PASIEN DI RUMAH SAKIT HUSADA DENGAN MENGGUNAKAN VB.NET Laporan Tugas Akhir Diajukan sebagai salah satu syarat untuk memperoleh gelar strata satu (S-1) Ilmu Komputer Oleh :

Lebih terperinci

BAB III METODOLOGI PENELITIAN. dalam pengumpulan data atau informasi guna memecahkan permasalahan dan

BAB III METODOLOGI PENELITIAN. dalam pengumpulan data atau informasi guna memecahkan permasalahan dan BAB III METODOLOGI PENELITIAN 3.1 Metodologi Penelitian Metodologi penelitian adalah langkah dan prosedur yang akan dilakukan dalam pengumpulan data atau informasi guna memecahkan permasalahan dan menguji

Lebih terperinci

PERANCANGAN APLIKASI LAPORAN GANGGUAN TELEPON BERBASIS WEB PADA PT. TELEKOMUNIKASI INDONESIA (AREA JAKARTA BARAT) Oleh: Roy Setiadi

PERANCANGAN APLIKASI LAPORAN GANGGUAN TELEPON BERBASIS WEB PADA PT. TELEKOMUNIKASI INDONESIA (AREA JAKARTA BARAT) Oleh: Roy Setiadi PERANCANGAN APLIKASI LAPORAN GANGGUAN TELEPON BERBASIS WEB PADA PT. TELEKOMUNIKASI INDONESIA (AREA JAKARTA BARAT) Oleh: Roy Setiadi 4150401-008 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS

Lebih terperinci

PENGANTAR RUP & UML. Pertemuan 2

PENGANTAR RUP & UML. Pertemuan 2 PENGANTAR RUP & UML Pertemuan 2 PENGANTAR RUP Rational Unified Process (RUP) atau dikenal juga dengan proses iteratif dan incremental merupakan sebuah pengembangan perangkat lunak yang dilakukan secara

Lebih terperinci

BAB III LANDASAN TEORI

BAB III LANDASAN TEORI BAB III LANDASAN TEORI 3.1 Rancang Bangun Menurut Jogiyanto (2005), Rancang Bangun (desain) adalah tahap dari setelah analisis dari siklus pengembangan sistem yang merupakan pendefinisian dari kebutuhankebutuhan

Lebih terperinci

PERANCANGAN ALAT KENDALI PINTU KERETA API OTOMATIS DAN PENGAMATAN JADWAL KERETA API. Oleh: DARIL PARAS PASHA

PERANCANGAN ALAT KENDALI PINTU KERETA API OTOMATIS DAN PENGAMATAN JADWAL KERETA API. Oleh: DARIL PARAS PASHA PERANCANGAN ALAT KENDALI PINTU KERETA API OTOMATIS DAN PENGAMATAN JADWAL KERETA API Oleh: DARIL PARAS PASHA 41505010127 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA

Lebih terperinci

DAFTAR ISI... LEMBAR JUDUL LEMBAR PENGESAHAN... SURAT PERNYATAAN... ABSTRAK... ABSTRACT... KATA PENGANTAR... DAFTAR TABEL... DAFTAR GAMBAR...

DAFTAR ISI... LEMBAR JUDUL LEMBAR PENGESAHAN... SURAT PERNYATAAN... ABSTRAK... ABSTRACT... KATA PENGANTAR... DAFTAR TABEL... DAFTAR GAMBAR... DAFTAR ISI LEMBAR JUDUL LEMBAR PENGESAHAN... SURAT PERNYATAAN... ABSTRAK... ABSTRACT... KATA PENGANTAR... DAFTAR ISI... DAFTAR TABEL... DAFTAR GAMBAR... i ii iii iv v vii xi xiii BAB I PENDAHULUAN... I-1

Lebih terperinci

Bagian 7 ANALISIS DESAIN PADA PEMROGRAMAN BERORIENTASI OBJECT DENGAN UML

Bagian 7 ANALISIS DESAIN PADA PEMROGRAMAN BERORIENTASI OBJECT DENGAN UML Bagian 7 ANALISIS DESAIN PADA PEMROGRAMAN BERORIENTASI OBJECT DENGAN UML Apa itu UML? Unified Modelling Language (UML) adalah sebuah "bahasa" yg telah menjadi standar dalam industri untuk visualisasi,

Lebih terperinci

SIMULASI PERANCANGAN SISTEM APLIKASI TARIK TUNAI PADA BANK BTPN MENGGUNAKAN VERIFIKASI SIDIK JARI EKO SUTRISNO

SIMULASI PERANCANGAN SISTEM APLIKASI TARIK TUNAI PADA BANK BTPN MENGGUNAKAN VERIFIKASI SIDIK JARI EKO SUTRISNO SIMULASI PERANCANGAN SISTEM APLIKASI TARIK TUNAI PADA BANK BTPN MENGGUNAKAN VERIFIKASI SIDIK JARI EKO SUTRISNO 41505110081 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA

Lebih terperinci

APLIKASI GAME TEBAK GAMBAR, MEWARNAI DAN MENCOCOKKAN GAMBAR UNTUK ANAK TINGKAT PRA SEKOLAH MENGGUNAKAN MACROMEDIA FLASH. Laporan Tugas Akhir

APLIKASI GAME TEBAK GAMBAR, MEWARNAI DAN MENCOCOKKAN GAMBAR UNTUK ANAK TINGKAT PRA SEKOLAH MENGGUNAKAN MACROMEDIA FLASH. Laporan Tugas Akhir APLIKASI GAME TEBAK GAMBAR, MEWARNAI DAN MENCOCOKKAN GAMBAR UNTUK ANAK TINGKAT PRA SEKOLAH MENGGUNAKAN MACROMEDIA FLASH Laporan Tugas Akhir Diajukan Untuk Melengkapi Salah Satu Persyaratan Memperoleh Gelar

Lebih terperinci

BAB III ANALISIS MASALAH DAN PERANCANGAN PROGRAM

BAB III ANALISIS MASALAH DAN PERANCANGAN PROGRAM BAB III ANALISIS MASALAH DAN PERANCANGAN PROGRAM III.1. Analisis Masalah Perkembangan ilmu pengetahuan dan teknologi saat ini telah membawa manusia kepada peradaban yang lebih baik. Banyak manfaat dan

Lebih terperinci

BAB II TINJAUAN PUSTAKA. permintaan pengguna dengan tujuan tertentu. Jenis program ini mempunyai sifat

BAB II TINJAUAN PUSTAKA. permintaan pengguna dengan tujuan tertentu. Jenis program ini mempunyai sifat BAB II TINJAUAN PUSTAKA 2.1 Landasan Teori 2.1.1 Aplikasi Menurut Supriyanto (2005: 117) aplikasi adalah software program yang memiliki aktifitas pemrosesan perintah yang diperlukan untuk melaksanakan

Lebih terperinci

LEMBARAN SOAL ULANGAN KENAIKAN KELAS Tahun 2014/ Komunikasi Paket Keahlian

LEMBARAN SOAL ULANGAN KENAIKAN KELAS Tahun 2014/ Komunikasi Paket Keahlian PEMERINTAH KABUPATEN WONOSOBO DINAS PENDIDIKAN PEMUDA DAN OLAHRAGA SMK NEGERI 1 WONOSOBO Jl. Bhayangkara 12 Telp./ Fax. 321219/ 325073 Wonosobo 56300 website : www.smkn1-wnb.sch.id email : info@smkn1-

Lebih terperinci

APLIKASI MENGUBAH POLARISASI FRAME GAMBAR 2 DIMENSI MENJADI 3 DIMENSI

APLIKASI MENGUBAH POLARISASI FRAME GAMBAR 2 DIMENSI MENJADI 3 DIMENSI APLIKASI MENGUBAH POLARISASI FRAME GAMBAR 2 DIMENSI MENJADI 3 DIMENSI ABDUL ARDI 41507110115 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA 2014 APLIKASI MENGUBAH

Lebih terperinci

DAFTAR SIMBOL. Yaitu Memperlihatkan Hubungan-hubungan yang terjadi antara actor-aktor SIMBOL NAMA KETERANGAN. Aktor. Use Case.

DAFTAR SIMBOL. Yaitu Memperlihatkan Hubungan-hubungan yang terjadi antara actor-aktor SIMBOL NAMA KETERANGAN. Aktor. Use Case. DAFTAR SIMBOL 1. Use case Diagram Yaitu Memperlihatkan Hubungan-hubungan yang terjadi antara actor-aktor dengan uses case-uses case dalam sistem Aktor Use Case Seseorang atau sesuatu yang berinteraksi

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Pengembangan Sistem Informasi 2.1.1 SDLC (System Development Life Cycle) Menurut Dennis, Barbara, dan Roberta (2012:6) System Development Life Cycle (SDLC) merupakan proses menentukan

Lebih terperinci

APLIKASI PROTOTYPE MODELING DAN SIMULASI PERMAINAN LEMPARAN BOLA BASKET. Marsad Nur Ubay

APLIKASI PROTOTYPE MODELING DAN SIMULASI PERMAINAN LEMPARAN BOLA BASKET. Marsad Nur Ubay APLIKASI PROTOTYPE MODELING DAN SIMULASI PERMAINAN LEMPARAN BOLA BASKET Marsad Nur Ubay 41508010175 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA 2012 APLIKASI

Lebih terperinci

APLIKASI GAME PESAWAT TEMPUR BERBASIS ANDROID

APLIKASI GAME PESAWAT TEMPUR BERBASIS ANDROID APLIKASI GAME PESAWAT TEMPUR BERBASIS ANDROID Dibuat Oleh : Nama : Ahmadi Yanto NIM : 41812120195 PROGRAM STUDI SISTEM INFORMASI FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA 2015 APLIKASI GAME

Lebih terperinci

SISTEM ADMINISTRASI PELAYANAN SERVICE DAN PENJUALAN SPAREPART MOTOR PADA BENGKEL TAWAKAL AGUNG APRIANDI

SISTEM ADMINISTRASI PELAYANAN SERVICE DAN PENJUALAN SPAREPART MOTOR PADA BENGKEL TAWAKAL AGUNG APRIANDI SISTEM ADMINISTRASI PELAYANAN SERVICE DAN PENJUALAN SPAREPART MOTOR PADA BENGKEL TAWAKAL AGUNG APRIANDI 41806010040 PROGRAM STUDI SISTEM INFORMASI FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA

Lebih terperinci

DAFTAR ISI. ABSTRACT... i. ABSTRAK... ii. KATA PENGANTAR... iii. DAFTAR ISI... vi. DAFTAR GAMBAR... x. DAFTAR TABEL... xii. DAFTAR SIMBOL...

DAFTAR ISI. ABSTRACT... i. ABSTRAK... ii. KATA PENGANTAR... iii. DAFTAR ISI... vi. DAFTAR GAMBAR... x. DAFTAR TABEL... xii. DAFTAR SIMBOL... DAFTAR ISI LEMBAR PENGESAHAN TUGAS AKHIR SURAT PERNYATAAN ABSTRACT... i ABSTRAK... ii KATA PENGANTAR... iii DAFTAR ISI... vi DAFTAR GAMBAR... x DAFTAR TABEL... xii DAFTAR SIMBOL... xiii DAFTAR LAMPIRAN...

Lebih terperinci

BAB 2 LANDASAN TEORI. Data adalah fakta atau bagian dari fakta yang digambarkan dengan simbol-simbol,

BAB 2 LANDASAN TEORI. Data adalah fakta atau bagian dari fakta yang digambarkan dengan simbol-simbol, BAB 2 LANDASAN TEORI 2.1 Data dan Informasi Data adalah fakta atau bagian dari fakta yang digambarkan dengan simbol-simbol, gambar-gambar, nilai-nilai, bilangan-bilangan, uraian karakter yang mempunyai

Lebih terperinci

Materi 1. 1 Rekayasa Perangkat Lunak

Materi 1. 1 Rekayasa Perangkat Lunak 1 Rekayasa Perangkat Lunak Materi 1 Rekayasa Perangkat Lunak Rekayasa perangkat lunak telah berkembang sejak pertama kali ddiciptakan pada tahun 1940-an hingga kini. Focus utama pengembangannya adalah

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI II.1. Sistem Informasi Sistem informasi adalah sekumpulan elemen yang saling bekerja sama baik secara manual atau berbasis komputer yang didalamnya ada pengumpulan, pengolahan, pemprosesan

Lebih terperinci

Pemodelan Berorientasi Objek

Pemodelan Berorientasi Objek 1 Pemodelan Berorientasi Objek Perancangan Sistem dengan Analisis Dinamis Adam Hendra Brata Pemodelan Kebutuhan Sistem 2 Ruang Lingkup Masalah Analisis Kebutuhan Diagram Use Case Pemodelan Perangkat Lunak

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA II.1. Pengertian Sistem Informasi II.1.1. Sistem Sistem pada dasarnya adalah sekelompok unsur yang erat hubungannya satu dengan yang lain, yang berfungsi bersama-sama untuk mencapai

Lebih terperinci

REKAYASA PERANGKAT LUNAK. 3 sks Sri Rezeki Candra Nursari reezeki2011.wordpress.com

REKAYASA PERANGKAT LUNAK. 3 sks Sri Rezeki Candra Nursari reezeki2011.wordpress.com REKAYASA PERANGKAT LUNAK 3 sks Sri Rezeki Candra Nursari reezeki2011.wordpress.com Referensi Rekayasa Perangkat Lunak Pendekatan Praktisi, Roger S. Pressman, Ph.D, Andi Jogyakarta, 2012 Buku 1 Rekayasa

Lebih terperinci

BAB II TINJAUAN PUSTAKA. 2.1 Komponen Sumber Daya Manusia dalam Ruang Lingkup Fakultas. Nuraeny (2010) mengemuckakan bahwa Sumber Daya Manusia

BAB II TINJAUAN PUSTAKA. 2.1 Komponen Sumber Daya Manusia dalam Ruang Lingkup Fakultas. Nuraeny (2010) mengemuckakan bahwa Sumber Daya Manusia BAB II TINJAUAN PUSTAKA 2.1 Komponen Sumber Daya Manusia dalam Ruang Lingkup Fakultas Nuraeny (2010) mengemuckakan bahwa Sumber Daya Manusia yang ada dalam ruang lingkup Universitas khususnya pada tiap

Lebih terperinci

MEMAHAMI PENGGUNAAN UML

MEMAHAMI PENGGUNAAN UML MEMAHAMI PENGGUNAAN UML Reza Kurniawan [email protected] Abstrak Saat ini sebagian besar para perancang sistem informasi dalam menggambarkan informasi dengan memanfaatkan UML diagram dengan tujuan

Lebih terperinci

DIAGRAM SEQUENCE UML

DIAGRAM SEQUENCE UML DIAGRAM SEQUENCE UML Makalah ini di susun oleh : 1) Banu Hardian (51412367) 2) Mutia Sulisetyani (55412178) 3) Raditya Rafian (55412868) 4) Tio Dwi Akbar (57412395) GUNADARMA UNIVERSITY 1 KATA PENGANTAR

Lebih terperinci

Bab 3 Metode dan Rancangan Sistem

Bab 3 Metode dan Rancangan Sistem 13 Bab 3 Metode dan Rancangan Sistem 3.1 Metode Pengembangan Sistem Pembahasan Metode Prototype Metode penelitian yang digunakan pada pembuatan aplikasi ini adalah model prototype. Model prototype merupakan

Lebih terperinci

BAB III ANALISA DAN PERANCANGAN

BAB III ANALISA DAN PERANCANGAN 28 BAB III ANALISA DAN PERANCANGAN III.1. Analisis Masalah Tujuan dari tahap analisis adalah memahami dengan sebenar-benarnya kebutuhan dari aplikasi baru dan mengembangkan sebuah sistem dalam menentukan

Lebih terperinci

PEMBANGUNAN APLIKASI NEWS AGGREGATOR BERBASIS ANDROID DILENGKAPI FITUR BERITA PILIHAN

PEMBANGUNAN APLIKASI NEWS AGGREGATOR BERBASIS ANDROID DILENGKAPI FITUR BERITA PILIHAN PEMBANGUNAN APLIKASI NEWS AGGREGATOR BERBASIS ANDROID DILENGKAPI FITUR BERITA PILIHAN TUGAS AKHIR Disusun sebagai salah satu syarat untuk kelulusan Program Strata 1, di Program Studi Teknik Informatika,

Lebih terperinci

DAFTAR ISI... LEMBAR JUDUL LEMBAR PENGESAHAN... SURAT PERNYATAAN... ABSTRAK... ABSTRACT... KATA PENGANTAR... DAFTAR TABEL... DAFTAR GAMBAR...

DAFTAR ISI... LEMBAR JUDUL LEMBAR PENGESAHAN... SURAT PERNYATAAN... ABSTRAK... ABSTRACT... KATA PENGANTAR... DAFTAR TABEL... DAFTAR GAMBAR... DAFTAR ISI LEMBAR JUDUL LEMBAR PENGESAHAN... SURAT PERNYATAAN... ABSTRAK... ABSTRACT... KATA PENGANTAR... DAFTAR ISI... DAFTAR TABEL... DAFTAR GAMBAR... i iii iv v vi viii xiii xv BAB I BAB II PENDAHULUAN

Lebih terperinci

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM III.1. Analisis Masalah Tujuan dari tahap analisis adalah memahami dengan sebenar-benarnya kebutuhan dari aplikasi baru dan mengembangkan sebuah sistem dalam

Lebih terperinci

BAB III OBJEK DAN METODOLOGI PENELITIAN. sesuai dengan pendapat Sugiyono (2003:58) mendefinisikan bahwa:

BAB III OBJEK DAN METODOLOGI PENELITIAN. sesuai dengan pendapat Sugiyono (2003:58) mendefinisikan bahwa: BAB III OBJEK DAN METODOLOGI PENELITIAN 3.1. Objek Penelitian Objek penelitian merupakan sasaran untuk mendapatkan suatu data, sesuai dengan pendapat Sugiyono (2003:58) mendefinisikan bahwa: Objek penelitian

Lebih terperinci

APLIKASI PERANGKAT AJAR PENGELOLAAN DAN PERHITUNGAN EKSPRESI MATEMATIKA DARYANTO

APLIKASI PERANGKAT AJAR PENGELOLAAN DAN PERHITUNGAN EKSPRESI MATEMATIKA DARYANTO APLIKASI PERANGKAT AJAR PENGELOLAAN DAN PERHITUNGAN EKSPRESI MATEMATIKA DARYANTO 41508110097 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA 2012 APLIKASI PERANGKAT

Lebih terperinci

APLIKASI ANTRIAN PELANGGAN DENGAN FITUR VIDEO, SMS, DAN SUARA HARIS MAWARDI

APLIKASI ANTRIAN PELANGGAN DENGAN FITUR VIDEO, SMS, DAN SUARA HARIS MAWARDI APLIKASI ANTRIAN PELANGGAN DENGAN FITUR VIDEO, SMS, DAN SUARA HARIS MAWARDI 41507110065 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA 2012 KATA PENGANTAR Puji

Lebih terperinci

DAFTAR ISI. ABSTRAK... i. ABSTRACT... ii. KATA PENGANTAR... iii. DAFTAR ISI... v. DAFTAR GAMBAR... xvi. DAFTAR TABEL... xxiii. DAFTAR SIMBOL...

DAFTAR ISI. ABSTRAK... i. ABSTRACT... ii. KATA PENGANTAR... iii. DAFTAR ISI... v. DAFTAR GAMBAR... xvi. DAFTAR TABEL... xxiii. DAFTAR SIMBOL... DAFTAR ISI ABSTRAK... i ABSTRACT... ii KATA PENGANTAR... iii DAFTAR ISI... v DAFTAR GAMBAR... xvi DAFTAR TABEL... xxiii DAFTAR SIMBOL... xxvi BAB I : PENDAHULUAN... 1 1.1 Latar Belakang... 1 1.2 Rumusan

Lebih terperinci

SURAT PERNYATAAN ABSTRACT ABSTRAK KATA PENGANTAR

SURAT PERNYATAAN ABSTRACT ABSTRAK KATA PENGANTAR DAFTAR ISI LEMBAR PENGESAHAN... i SURAT PERNYATAAN... ii ABSTRACT... iii ABSTRAK... iv KATA PENGANTAR... v DAFTAR ISI... vii DAFTAR TABEL... x DAFTAR GAMBAR... xi DAFTAR SIMBOL... xiii DAFTAR LAMPIRAN...

Lebih terperinci

Daftar Isi. Abstract... Abstrak... Kata Pengantar... Daftar Isi... Daftar Tabel... Daftar Gambar... Daftar Simbol... Daftar Lampiran...

Daftar Isi. Abstract... Abstrak... Kata Pengantar... Daftar Isi... Daftar Tabel... Daftar Gambar... Daftar Simbol... Daftar Lampiran... Daftar Isi Abstract... Abstrak..... Kata Pengantar.... Daftar Isi... Daftar Tabel.... Daftar Gambar.... Daftar Simbol...... Daftar Lampiran...... i ii iii vi ix x xii xvi Bab I Pendahuluan 1.1 Latar Belakang...

Lebih terperinci

PERANCANGAN APLIKASI TES MASUK PADA SMPN 6 KOTA TANGERANG SELATAN MENGGUNAKAN VISUAL BASIC. NET

PERANCANGAN APLIKASI TES MASUK PADA SMPN 6 KOTA TANGERANG SELATAN MENGGUNAKAN VISUAL BASIC. NET PERANCANGAN APLIKASI TES MASUK PADA SMPN 6 KOTA TANGERANG SELATAN MENGGUNAKAN VISUAL BASIC. NET Laporan Tugas Akhir Diajukan Sebagai Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Oleh : JOKO SETIAWAN

Lebih terperinci

SISTEM INFORMASI PENGADAAN IMPOR BARANG PADA BUT. SAKA INDONESIA PANGKAH LIMITED BERBASIS WEB

SISTEM INFORMASI PENGADAAN IMPOR BARANG PADA BUT. SAKA INDONESIA PANGKAH LIMITED BERBASIS WEB SISTEM INFORMASI PENGADAAN IMPOR BARANG PADA BUT. SAKA INDONESIA PANGKAH LIMITED BERBASIS WEB ARIF NASHRULLAH 41809120005 PROGRAM STUDI SISTEM INFORMASI FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA

Lebih terperinci

APLIKASI PERPUSTAKAAN BERBASIS WEB DENGAN MENGGUNAKAN PHP MYSQL DAN BARCODE AZHARI

APLIKASI PERPUSTAKAAN BERBASIS WEB DENGAN MENGGUNAKAN PHP MYSQL DAN BARCODE AZHARI APLIKASI PERPUSTAKAAN BERBASIS WEB DENGAN MENGGUNAKAN PHP MYSQL DAN BARCODE AZHARI 41506010072 PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS MERCU BUANA JAKARTA 2011 APLIKASI PERPUSTAKAAN BERBASIS WEB DENGAN

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI II.1. Perancangan Perancangan adalah penggambaran, perencanaan dan pembuatan sketsa atau pengaturan dari beberapa elemen yang terpisah ke dalam satu kesatuan yang utuh dan berfungsi.

Lebih terperinci

BAB II TINJAUAN PUSTAKA. kumpulan dari elemen-elemen yang berinteraksi untuk mencapai

BAB II TINJAUAN PUSTAKA. kumpulan dari elemen-elemen yang berinteraksi untuk mencapai BAB II TINJAUAN PUSTAKA 2.1 Konsep Dasar Sistem A. Pengertian sistem Hartono (2005) mengemukakan bahwa sistem adalah kumpulan dari elemen-elemen yang berinteraksi untuk mencapai suatu tujuan tertentu.

Lebih terperinci

MATERI PEMODELAN PERANGKAT LUNAK KELAS XI RPL

MATERI PEMODELAN PERANGKAT LUNAK KELAS XI RPL MATERI PEMODELAN PERANGKAT LUNAK KELAS XI RPL Oleh : Samsul Arifin, S.Kom Email : [email protected] Konsep Pemodelan Perangkat Lunak (PL) Konsep rekayasa PL. Suatu disiplin ilmu yang membahas semua

Lebih terperinci

OTENTIKASI KEAMANAN INTERNET PERBANKAN DENGAN SECURITY TOKEN

OTENTIKASI KEAMANAN INTERNET PERBANKAN DENGAN SECURITY TOKEN OTENTIKASI KEAMANAN INTERNET PERBANKAN DENGAN SECURITY TOKEN ANOM ABRAHAM 41505110170 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA 2012 OTENTIKASI KEAMANAN INTERNET

Lebih terperinci

OOAD (Object Oriented Analysis and Design) UML part 2 (Activity diagram, Class diagram, Sequence diagram)

OOAD (Object Oriented Analysis and Design) UML part 2 (Activity diagram, Class diagram, Sequence diagram) OOAD (Object Oriented Analysis and Design) UML part 2 (Activity diagram, Class diagram, Sequence diagram) Gentisya Tri Mardiani, S.Kom., M.Kom ADSI-2015 Activity Diagram Activity diagram digunakan untuk

Lebih terperinci

MODUL PEMBELAJARAN ANALISIS DESAIN BERORIENTASI OBJEK DENGAN MENGGUNAKAN FLASH BERBASIS WEB

MODUL PEMBELAJARAN ANALISIS DESAIN BERORIENTASI OBJEK DENGAN MENGGUNAKAN FLASH BERBASIS WEB MODUL PEMBELAJARAN ANALISIS DESAIN BERORIENTASI OBJEK DENGAN MENGGUNAKAN FLASH BERBASIS WEB Disusun oleh : Dika Andy Prasetya (0934010074) JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS

Lebih terperinci

BAB III ANALISA DAN PERANCANGAN

BAB III ANALISA DAN PERANCANGAN BAB III ANALISA DAN PERANCANGAN Metode yang digunakan dalam mengembangkan Visualisasi 3D Gedung Tower Universitas Mercu Buana ini melalui dua tahap yaitu: Tahap Pra produksi Tahap Produksi 3.1. Tahap Pra

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Android versi 2.2 (Froyo :Frozen Yoghurt) Pada 20 Mei 2010, Android versi 2.2 (Froyo) diluncurkan. Perubahanperubahan umumnya terhadap versi-versi sebelumnya antara lain dukungan

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI II.1. Pengertian Perancangan Pembuatan aplikasi game dibutuhkan adanya perancangan tentang apa yang akan dibuat dan apa yang akan dihasilkan. Adanya suatu rancangan dalam aplikasi,

Lebih terperinci

BAB III ANALISA DAN PERANCANGAN

BAB III ANALISA DAN PERANCANGAN BAB III ANALISA DAN PERANCANGAN 3.1 Analisa Sistem Dalam tahap ini penulis menganalisa kebutuhan sistem, permasalahan yang menjadi faktor analisa sehingga jika diketahui permasalahan yang ada dalam pembuatan

Lebih terperinci

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM III.1. Analisis Aplikasi 3D mempunyai fungsi utama untuk membuat pemodelan 3D. Dari pemodelan 3D dapat diciptakan karya yang spektakuler seperti special efek

Lebih terperinci

BAB III LANDASAN TEORI. Menurut Soendoro dan Haryanto (2005), definisi dari sistem dapat

BAB III LANDASAN TEORI. Menurut Soendoro dan Haryanto (2005), definisi dari sistem dapat BAB III LANDASAN TEORI 3.1 Sistem Menurut Soendoro dan Haryanto (2005), definisi dari sistem dapat dilakukan dengan 2 pendekatan, yaitu pendekatan prosedur dan pendekatan komponen. Dengan pendekatan prosedur

Lebih terperinci

SOAL PRA UTS PSBO. 1.SIMULA di perkenalkan pertama kali pada tahun.. a d b e c. 1970

SOAL PRA UTS PSBO. 1.SIMULA di perkenalkan pertama kali pada tahun.. a d b e c. 1970 SOAL PRA UTS PSBO 1.SIMULA di perkenalkan pertama kali pada tahun.. a. 1950 d. 1980 b. 1960 e. 1990 c. 1970 2. Hal penting dalam pengembangan berorientasi objek adalah:... a.konsep mengidentifikasi dan

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA II.1 Media Dalam kamus bahasa indonesia media disebut alat bantu, ditinjau dari segi bahasa kata media berasal dari bahasa latin dan merupakan bentuk jamak dari kata medium yang

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA Bab Tinjauan Pustaka memuat uraian gambaran umum dan fungsi-fungsi pada perpustakaan, pengertian sistem informasi, dan kaitan antara perpustakaan dan sistem informasi. 2.1. Perpustakaan

Lebih terperinci