BAB III ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem Analisis sistem merupakan proses penguraian konsep ke dalam bagian-bagian yang lebih sederhana, sehingga struktur logisnya menjadi lebih jelas. Pada analisis sistem ini akan mencakup analisis masalah yang berhubungan dengan game yang akan di bangun, mulai dari analisis terhadap game sejenis serta analisis kebutuhan non-fungsional dan analisis kebutuhan fungsional.
3.1.1 Analisis Masalah Berdasarkan
pada bab I yang telah diuraikan, yang menjadi titik
permasalahan dalam penelitian ini adalah sebagai berikut : 1. Mengenalkan sosok pahlawan K.H. Zanenal Mustofa melalui media game. 2. Menyampaikan materi sejarah mengenai pahlawan K.H. Zanenal Mustofa melalui media game.
3.1.2 Analisis Game Yang Sejenis Analisis game sejenis dilakukan untuk memberikan gambaran sistem agar lebih mudah dalam pembangunan dan sebagai pembanding untuk kesempurnaan game yang akan dicapai.
3.1.2.1 Game Mario Bros Mario Bros adalah suatu permainan platform yang dikembangkan dan diterbitkan oleh Nintendo pada akhir 1985 untuk konsol Nintendo Entertainment System Permainan ini membawa pengaruh yang besar pada perkembangan dunia hiburan rumahan dan merupakan salah satu permainan terlaris dengan penjualan lebih dari 40 juta salinan hingga saat ini. Dengan latar permainan yang
33
34
cerah dan alur cerita yang berkembang, Super Mario Bros. berhasil mengubah wajah industri permainan video. Meskipun sering disalah persepsikan sebagai permainan platform bergulir (scrolling) pertama (yang pada kenyataannya paling tidak ada setengah lusin permainan serupa yang telah muncul sebelumnya), Super Mario Bros. bisa dianggap sebagai pelopor jenis permainan tersebut unruk media permainan konsol. A. Pengenalan Game Mario Bros Game Mario bros sangat popular di Indonesia pada tahun 1990. Game ini di ciptakan oleh Shigeru Miyamoto dan merupakan game yang bisa kita mainkan pada consule seperti Nontendo dan Spica. Permainan Ini dikembangkan dan diterbitkan oleh Nintendo pada akhir 1985, tampilan game mario bros dapat dilihat pada gambar 3.1.
Gambar 3.1 Game Mario Bros B. Gameplay Super Mario Bros adalah game bertipe platform, pemain akan mendapati dirinya sebagai mario atau saudaranya luigi, dalam petualangan menyelamakan putri dari kura-kura raksasa bernama Bowser. Meski menyelamatkan putri terdengar cukup klise dan tidak original, untuk game semacam ini cerita tidaklah terlalu penting. dengan setting di mushrom kingdom, super mario bros memiliki banyak musuh yang inovatif dan menantang, alur permainan game mario bros dapat dilihat pada gambar 3.2.
35
Gambar 3.2 Alur permainan pada game mario bros
C. Skenario Game Skenario Pada game ini pemain berperan sebagai Mario dan pemain kedua berperan sebagai kakak Mario yaitu Luigi. Tujuan utamanya dan menyelamatkan Princess Peach yang ditahan oleh Raja yang menyerupai buaya bernama Koppa. Mario memiliki kemampuan menghindar sekaligus mengalahkan musuhnya dengan cara melompat di atas musuh-musuhnya. Musuh Mario Bros pada game ini adalah jamur pengkhianat, yang dikenal sebagai Goombas, dan tentara kura-kura dikenal sebagai Koopa Troopas. Jika menemukan box atau kotak yang memiliki tanda tanya kita dapat menyundulnya. Saat menyundulnya akan menemuan jamur ajaib. Mario juga dapat memperoleh 1-up melalui menemukan 1-up jamur dan dengan mengumpulkan 100 koin. Semua musuh memiliki satu persamaan dasar, loncat dan injak kepala mereka untuk membunuhnya. Mario memiliki beragam kekuatan yang terus bertambah sampai sekarang. Mario biasanya memiliki tiga buah kekuatan dasar seperti, Jamur untuk membesar, bunga api untuk membuat Mario menembakkan api dan bintang yang membuat Mario tidak bisa dilukai oleh serangan apapun.
36
Permainan terdiri dari 4 sub dunia, yaitu: 1. Sub-dunia diatas tanah. 2. Dalam sebuah penjara bawah tanah atau air. 3. Serangakian platform tergantung tinggi di langit. 4. Benteng atau puri Semua dunia terjadi di siang hari kecuali dunia ke 3 dan ke 6. Pada akhir setiap tingkat benteng, Mario berhadapan dengan Raja Koopa, melintasi sebuah jembatan di atas kolam lava. Di akhir dunia (dunia 6-8), Raja Koopa melemparkan palu serta sesekali semburan api napas. Raja Koopa dapat dikalahkan dalam salah satu dari dua cara,yaitu: 1. Dengan menyentuh kapak di ujung jembatan (sehingga menjatuhkan Raja Koopa ke dalam lava 2. Seperti Fiery Mario, melemparkan bola api pada dia untuk mengalahkan dia secara langsung dan mengungkapkan apa musuh menyamar. Setelah menyelesaikan permainan, pemain diberi pilihan untuk memulai permainan lagi di 'Hard' Mode, dimana semua Goombas digantikan oleh Buzzy Beetles (Koopa Troopa yaitu musuh yang tidak dapat dibunuh oleh bola api), dan semua musuh berjalan cepat. Selain itu lift juga berjalan lebih cepat 60% dari Mario pada mode biasa. Kelebihan dari game Mario bros adalah : 1. Game ini adalah game yang sangat menarik dimasanya. 2. Game ini pada layar dan background mempunyai gerakan yang khas yaitu double screen, pada era itu umumnya hanya mempunyai single screen, sehinga gameplay pada umumnya berpindah screen, dan jika ada game yang memiliki screen scrolling yang sama dengan metode Mario bros. 3. Game ini merupakan game dengn penjualan terbanyak versi Guiness Word of Record.
37
Kekurangan dari game Mario bros ini adalah: 1. Game ini pada saat ini terlihat kurang begitu menarik karena peralihan game semakin canggih pada saat ini. 2. Game Mario bros layar hanya bisa bergeser dari kiri ke kanan. Player utama dapat berjalan dan melompat serta dapat menginjak musuhnya 3. Musuh dalam game Mario bros hanya bisa berjalan secara random dan tidak dapat mengejar player utama.
3.1.3 Analisis Game yang Dibangun 3.1.3.1 Pengenalan Game Game yang akan dibangun adalah Game Side Scrolling Sejarah Perjuangan K.H. Zaenal Mustofa. Game ini dibangun dengan mengaplikasikan teknologi sebagai jembatan untuk mengenalkan sosok tokoh pahlawan yang bernama K.H. Zaenal Mustofa pada anak-anak usia 9 tahun keatas. Game ini dibangun dengan grafis 2D (2 dimensi). Pada game Sejarah Perjuangan K.H Zaenal Mustofa tujuannya untuk melawan dan mengalahkan penjajah. Game Sejarah Perjuangan K.H Zaenal Mustofa ini dimainkan oleh satu pemain (single player). Dalam kisahnya game ini akan menampilkan perlawanan K.H Zaenal Mustofa (player utama) terhadap penjajah dengan cara melemparkan bambu runcing, menebaskan goloknya, serta bisa mengeluarkan jurus golok berputar dan jurus hantam bumi kepada musuh dengan misi mengalahkan semua penjajah serta mengalahkan jendral.
3.1.3.2 Storyline Game
ini
bercerita
tentang
perjuangan
seorang
pahlawan
yang
memperjuangkan rakyat dan melawan penjajah di Tasikmalaya yang bernama K.H Zaenal Mustofa. Pada masa penjajahan Belanda K.H Zaenal Mustofa melakukan perlawanan kepada penjajah dengan cara melakukan khotbah yang memacu semangat semangat kebangsaan melawan penjajah. Pada masa penjajahan jepang beliau dengan terang – terangan menentang ajaran Jepang yang
38
bertentangan dengan agama. Misalnya, ajaran memberi hormat kearah matahari terbit karena bisa
merusak akidah umat Islam. Tidak hanya itu, dia juga
menentang pelaksanaan Romusha (kerja paksa) yang menyengsarakan rakyat Indonesia. Pada game ini, K.H Zaenal Mustofa harus bisa melewati tantangan yang ada pada game ini, yaitu dengan melakukan perlawanan terhadap penjajah dengan menggunakan bambu runcing dan golok sebagai alat untuk melawan para penjajah, serta bisa mengeluarkan golok berputar dan jurus hantaman bumi.
3.1.3.3 Game Play Pada permainan ini, tugas utama pemain adalah untuk melakukan perlawan terhadap penjajah serta harus mengalahkan musuh, terdapat 3 level dalam game ini, disetiap level game ini akan menampilkan cerita dari perjuangan K.H. Zaenal Mustofa, kemudian akan masuk pada arena game untuk menghadapi musuh yang mempunyai kekuatan berbeda dalam tiap levelnya. Pemain dapat mengawali permainan dengan memilih pilihan menu cerita. Dalam game ini karakter akan melakukan perjalanan dan melawan musuh yang menghadang, karakter akan menyerang musuh dengan menggunakan golok, bamboo runcing dan jurus golok berputar serta jurus hantaman bumi. Alur sistem dari permainan game Sejarah Perjuangan K.H. Zaenal Mustofa dapat di gambarkan melalui activity diagram berikut ini :
39
Pemain
sistem
memilih menu cerita
menampilkan cerita
memulai permainan
menampilkan permainan
Gambar 3.3 Activity Alur permaian
3.1.3.4 Tingkat Kesulitan Dalam Game Side Scrolling Sejarah Perjuangan K.H. Zaenal Mustofa, terdapat 3 level yang masing – masing level berbeda tingkat kesulitannya. Dilevel 1, pemain akan menghadapi musuh prajurit Belanda yang mempunyai kekuatan tembakan (1 damage) dan pukulan (1 damage) dan Jendral Belanda yang mempunyai kekuatan jurus batu (2 damage), jurus tendangan berputar (2 damage), pukulan dan tendangan (1 damage). Dilevel 2 pemain akan menghadapi musuh prajurit Jepang yang mempunyai kekuatan tembakan dan pukulan (1 damage) dan Jendral Jepang yang mempunyai kekuatan jurus batu (3 damage) , jurus sabetan samurai (3 damage), tebasan, tusukan, sayatan (2 damage). Dilevel 3 pemain akan menghadapi musuh prajurit Belanda, Prajurit Jepang yang mempunyai kekuatan tembakan dan pukulan (1 damage) dan Kapten Jepang yang mempunyai kekuatan jurus api terbang (3 damage), jurus sayatan ganda (4 damage), tebasan, tusukan, sayatan, tembakan (2 damage).
40
3.1.4 Analisis Teknik Pencarian pada game sejarang perjuangan K.H Zaenal Mustofa ini adalah pencarian yang dilakukan dengan pencarian secara mendalam dimana jika K.H Zaenal Mustofa di ujung kiri maka si NPC akan mengejar dulu ke kiri sampai dapat, apabila K.H. Zaenal Mustofa loncat maka NPC akan memutar arah menuju posisi K.H. Zaenal Mustofa berada.
Play er
NP C
player
NPC
Gambar 3.4 Teknik Pencarian 1
Pada gambar 3.4 dapat dilihat bahwa berwarna merah melambangkan NPC sedangkan yang berwarna kuning melambangkan player, sedangkan warna hijau melambangkan penghalang atau pijakan. Posisi awal pencarian adalah NPC yang berwarna merah sedangkan goal adalah player yang berwarna kuning
player
a
NPC
b
.
Gambar 3.5 Teknik Pencarian 2
41
Pada gambar 3.5 dapat dilihat bahwa yang berwarna merah atau NPC melakukan pencarian ke node a dan b, dimana arah node a menunjukkan pencarian ke kiri dan node b menunjukan pencarian ke arah kanan NPC.
C
player
A
B
NPC
D
2
Gambar 3.6 Teknik Pencarian 3 Pada gambar 3.6 node a mempunyai node anak yaitu c sedangkan node b mempunyai node anak yaitu node d. Karena pencarian nya mengutamakan pencarian ke arah anak kiri maka node a yang di cek terlebih dahulu. Kemudian node c di cek apakah node ini sama dengan node player atau goal, karena node c bukan sama dengan node player maka node c di tandai dengan warna biru yang artinya sudah di cek bahwa node c ini bukanlah node player atau goal.
player e
c
a
NPC
2
Gambar 3.7 Teknik Pencarian 4
b
d
e
42
Pada gambar 3.7 node c mempunyai anak node yaitu node player sedangkan node d mempunyai anak node yaitu node e, karena node a bukanlah goal yang di cari maka pencarian dilanjutkan ke left child yaitu node c. Karena pencarian mengutamakan pencarian ke arah anak kiri maka node c yang di cek terlebih dahulu. Kemudian node Player di cek apakah node ini sama dengan node player atau goal, karena node player sama dengan node player maka pencarian selesai.
3.2 Analisis Kebutuhan Non Fungsional Analisis kebutuhan sistem non fungsional dilakukan untuk mengetahui spesifikasi kebutuhan untuk sistem. Spesifikasi kebutuhan melibatkan analisis pengguna, analisis perangkat keras, analisis perangkat lunak.
3.2.1 Analisis Kebutuhan Perangkat Lunak Perangkat lunak yang dibutuhkan untuk memainkan game K.H. Zaenal Mustofa ini adalah sebagai berikut : 1. Sistem Operasi Windows Xp ke atas. 2. Greenfoot 2.0 ke atas. 3. JDK 1.6 ke atas.
3.2.2 Analisis Kebutuhan Perangkat Keras Perangkat keras yang dibutuhkan untuk memainkan game Side Scrolling sejarah perjuangan K.H.Zaenal Mustofa ini adalah sebagai berikut : 1. Processor
: 1.8 Ghz ke atas.
2. Hardisk
: 40 Gb.
3. Memory
: 512 Mb.
4. VGA
: 128 Mb.
5. Monitor 6. Keyboard
43
3.2.3 Analisi Kebutuhan User Game yang dibangun ditujukan untuk user 9 tahun keatas, alasannya adalah untuk mengenalkan sosok pahlawan kepada anak – anak, untuk melatih ketangkasan dalam memainkan sebuah game, sehingga tanpa disadari, gamer telah mengenal sosok pahlawan, tetapi dengan cara yang tidak membosankan, di usia ini juga merupakan usia yang efektif untuk mempelajari berbagai hal, dan di usia ini juga waktu yang sangat kritis dalam hal tumbuh kembang fisik, mental anak. Game yang di buat merupakan game PC (Personal Computer). 3.3 Analisi Kebutuhan Fungsional 3.3.1 Identifikasi Aktor Tahap Pertama yang dilakukan dalam melakukan analisis berorientasi objek menggunakan UML adalah menentukan aktor atau pengguna sistem. Kata aktor dalam kontek UML, menampilkan peran (roles) yang pengguna (sesuatu diluar sistem yang dikembangkan yang dapat berupa perangkat keras, end user, sistem yang lain dan sebagainya).
3.3.2 Use Case Diagram Use Case merupakan gambaran skenario dari interaksi antara user dengan sistem. Sebuah diagram Use Case menggambarkan hubungan antara aktor dan kegiatan yang dapat dilakukannya terhadap aplikasi. KHZaenalMustofa <
> Memilih Cerita *
tampilkan Cerita Level 1 <>
Tampilkan cerita Level 2
* *
<> memilih petunjuk User
* Tampilkan cerita Level 3
Gambar 3.8 Diagram Use Case K.H Zaenal Mustofa
44
3.3.3 Definisi Use Case Definisi Use Case berfungsi untuk menjelaskan proses yang terdapat pada setiap Use Case. Definisinya dapat dilihat pada tabel dibawah ini :
Tabel 3.1. Use Case No
Use Case
Deskripsi
1
Memilih Cerita
Proses untuk memulai permainan
2
Memilih Petunjuk
Proses untuk memilih petunjuk cara bermain game
3
Tampilkan Cerita Level 1
Proses untuk menampilkan level 1
4
Tampilkan Cerita Level 2
Proses untuk menampilkan level 2
5
Tampilkan Cerita Level 3
Proses untuk menampilkan level 3
1. Skenario Use Case Memilih Cerita Skenario pada diagram use case ini berisi mengenai interaksi antara user dan sistem pada memilih cerita
Tabel 3.2. Skenario Use Case Memilih Cerita Nomor Nama Tujuan Deskripsi Aktor Kondisi Awal Aksi Aktor 1. Memilih menu “cerita”
Kondisi Akhir
Identifikasi 1 Memilih Cerita Menampilkan cerita level 1 Proses untuk melihat cerita level 1 User Skenario Utama User berada dibagian menu utama Reaksi Sistem
2. Aplikasi merespon dengan cara masuk ke cerita Level 1 Aplikasi menampilkan cerita level 1
2. Skenario Use Case Memilih Petunjuk Skenario pada diagram use case ini berisi mengenai interaksi antara user dan sistem pada memilih Petunjuk
45
Tabel 3.3. Skenario Use Case Memilih Petunjuk Nomor Nama Tujuan Deskripsi Aktor Kondisi Awal Aksi Aktor 3. Memilih menu “petunjuk”
Kondisi Akhir
Identifikasi 2 Memilih Petunjuk Menampilkan Petunjuk permainan Proses untuk melihat petunjuk permainan User Skenario Utama User berada dibagian menu utama Reaksi Sistem
4. Aplikasi merespon dengan cara masuk ke petunjuk permainan Aplikasi menampilkan petunjuk permainan
3. Skenario Use Case Tampilkan Cerita Level 1 Skenario pada diagram use case ini berisi mengenai interaksi antara user dan sistem pada memilih cerita level 1
46
Tabel 3.4. Skenario Use Case Tampilkan Cerita Level 1 Identifikasi 3 Memilih Tampilkan Cerita Level 1 Menampilkan cerita level 1 Proses untuk melihat cerita level 1 User Skenario Utama User berada dibagian menu utama Reaksi Sistem
Nomor Nama Tujuan Deskripsi Aktor Kondisi Awal Aksi Aktor 5. Memilih menu “mulai”
6. Aplikasi merespon dengan cara masuk ke permainan level 1 Aplikasi menampilkan level 1
Kondisi Akhir
4. Skenario Use case Tampilkan Cerita Level 2 Skenario pada diagram use case ini berisi mengenai interaksi antara user dan sistem pada memilih cerita level 2
Tabel 3.5. Skenario Tampilkan level 2 Identifikasi Nomor Nama Tujuan Deskripsi Aktor Kondisi Awal Aksi Aktor 7. Memilih menu “mulai”
Kondisi Akhir
4 Tampilkan cerita Level 2 Menampilkan Level 2 Proses untuk memainkan level 2 User Skenario Utama User berada dibagian menu utama Reaksi Sistem
8. Aplikasi merespon dengan cara masuk ke permainan level 2 Aplikasi menampilkan level 2
5. Skenario Use case Tampilkan Cerita Level 3 Skenario pada diagram use case ini berisi mengenai interaksi antara user dan sistem pada memilih level 3
47
Tabel 3.6. Skenario Tampilkan Cerita level 3 Nomor Nama Tujuan Deskripsi Aktor Kondisi Awal Aksi Aktor 9. Memilih menu “mulai”
Kondisi Akhir
Identifikasi 4 Tampilkan cerita Level 3 Menampilkan Level 3 Proses untuk memainkan level 3 User Skenario Utama User berada dibagian menu utama Reaksi Sistem
10. Aplikasi merespon dengan cara masuk ke permainan level 3 Aplikasi menampilkan level 3
3.3.4 Activity Diagram Activity diagram menggambarkan berbagai aliran aktivitas dalam sistem yang sedang dirancang. Berikut ini beberapa activity diagram yang terdapat pada game tersebut yaitu :
1. Activity Proses Menu Cerita Activity digram menggambarkan berbagai aliran aktivitas dalam sistem yang sedang berjalan, bagaimana masing-masing alir berawal, proses yang terjadi dan bagaimana mereka berakhir
48
Pemain
Menjalankan Game
Memilih cerita
Sistem
Menampilkan menu utama
Tampilkan Cerita Level 1
menampilkan Level 1
Tampilkan Cerita Level 2
menampilkan Level 2
Tampilkan permainan Usai
Tampilkan Cerita level 3
menampilkan Level 3
Menampilkan tamat
Gambar 3.9 Activity Diagram Cerita
49
2. Activity Proses Petunjuk Menu control digunakan pemain untuk melihat petunjuk permainan, proses yang terjadi pada menu petunjuk bisa di lihat pada gambar
Pemain
Sistem
Menjalankan Game
Menampilkan Menu utama game
Memilih Petunjuk
Menampilkan tampilan petunjuk
Gambar 3.10 Activity Diagram petunjuk
3.3.5 Class Diagram Class diagram adalah suatu diagram yang memperlihatkan suatu struktur dari sebuah system. Nama nama kelas yang ada dalam game ini adalah sebagai berikut :
50
KeluarkanMusuh
world
DarahKaptenJepang
MidiPlayer +world() +setBackground(greenfottImage image): void {final} +getbackground(): greenfootImage +getwidth(): int +getheight(): int +getCellSize(): int +act(): void +started(): void
latar +lebar: int {static final} +tinggi: int {static final} +tengah: int {static final} -kecepatanBergeser: int {static final} -index: int -level: int -akhir: int {static} ~hidup: boolean ~isPermainanUsai: boolean ~istamat: boolean ~isCerita1: boolean ~isCerita2: boolean ~isCerita3: boolean ~isPetunjuk: boolean -posisiAwal: int -jumlahMusuh: int{static final} -jumlahMusuh2: int {static final} -jumlahMusuh3: int {static final} -latar: greenfootImage -latarbelakang: greenfootImage -latarBergerak: greenfootImage -tanah: color -akhirlevel: color -km: keluarkanmusuh ~tm: TombolMulai ~tp: tombolPetunjuk ~tktombolKembali ~ps: PermainanSelesai ~g: gagal ~tpk: TampilanPetunjuk ~khz: KHZaenalMustofa ~dkhz: darahKHZaenalMustofa ~pb: PrajuritBelanda ~jb: JendralBelanda ~djb: darahJendralBelanda ~pj: prajuritJepang ~djj: DarahJendralJepang ~jj: JendralJepang ~kj: KaptenJepang ~dkj: darahKaptenJepang ~t: tamat ~tc: TombolCerita ~c1: Cerita1 ~c2: cerita2 ~tm2: tombolMulai2 ~c3: cerita3 ~tm3: TombolMulai3 ~tk2: TombolKembali2 ~tmu: TampilanMenuUtama
-tipemusuh: int +posisiMusuh: int
-sequencer: sequencer -isFileOpen: boolean +CONTINUOUS: int {static final} -midiFile: string
-jumlahdarah: int -gambardarah: greenfootImage -latar 1 ~kj: KaptenJepang
+MidiPlayer() +MidiPlayer(string file) +getIsFileopen(): boolean +getloopCount(): int +isPlaying(): boolean +getMidiFile(): string +toString(): string +setLoopCount(int count): void +open(): void +load(string File): void +play(): void +stop(): void +close(): void
+DarahKaptenJepang() +addedToWorld(world world): void +deretGambar(): void +KenaSerang(): void +KenaSerang2(): void +kenaSerang3(): void +getJumlahDarah(): int
TombolPetunjuk -tombol1: greenfootImage -tombol2: GreenfootImage +TombolPetunjuk() +act(): void +berubahBentuk(): void
WavPlayer
+TombolMulai() +act(): void +TombolMulai() +BerubahBentuk(): void
KHZaenalMustofa
+latar() +menugame(): void +act(): void +tampilanPetunjuk(): void +tampilanCerita1(): void +TampilanCerita2(): void +tampilancerita3(): void +gagal(): void +tamat(): void +geser(int d) +geser2(int d): boolean -pergeseran(int x): void -tentukanposisiawal(int x) +jenisMusuhLevel1(): void +jenisMusuhLevel2(): void +jenisMusuhLevel3(): void -cetak(): void -posisimusuhlevel1(): void -posisiMusuhLevel2(): void -posisiMusuhLevel3(): void +level1(): void +Level2(): void +level3(): void +tanahpijakan(int xPos, int yPos): boolean +getKHZaenalMustofa(): KHZaenalMustofa +getdarah1(): DarahKHZaenalMustofa +getPrajuritBelanda(): PrajuritBelanda +getJendralBelanda(): Jendralbelanda +getdarah2(): DarahJendralBelanda +getPrajuritJepang(): PrajuritJepang +getjendraljepang(): JendralJepang +getdarah3(): darahJendralJepang +getKaptenJepang(): KaptenJepang() +getDarah4(): DarahKaptenJepanng
-1: latar -Kecepatan: int -kecepatan2: int -percepatan: int -kuatLoncat: int -batas1: int -batas2: int -hadapkanan: boolean -loncat: boolean -serang: boolean -jurus1: boolean -jurus2: boolean -hidup: boolean +nangkis: boolean +serngkanan: greenfootimage +serangkiri: greenfootimage +juruskanan: greenfootimage +juruskiti: greenfootimage +lemparbambukanan: greenfootimage +lemparbambukiri: greenfootimage +loncatkanan: greenfootimage +loncatkiri: greenfootimage +tangkiskanan: greenfootimage +tangkiskiri: greenfootimage +matikanan: greenfootimage +matikiri: greenfootimage +Jurusbatukanan: greenfootimage +jurusbatukiri: greenfootimage ~bambu1 ~bambu2 +KHZaenalMustofa() +addedToworld(world world): void -cetak(): void +run(): void +mati(): void +jatuh(): void +tombol(): void +kenaserang(): void +nangkis(): void +isNangkis(): boolean +isSerang(): boolean +isjurus1(): boolean +isJurus2(): boolean -lempar(): void -jurus(): void -jurus2(): void -serang(): void -serangjurus1(): void -serangjurus2(): void -loncat(): void +geserkanan(int x): void +jalankanan(int x): void +jalanKiri(): void
KaptenJepang -jalankanan: greenfootImage -jalanKiri: greenfootImage -tusukakanan: greenfootImage -tusukkiri: greenfootImage -tebaskanan: greenfootImage -tembakkanan: greenfootImage -tembakkiri: greenfootImage -matikanan: greenfootImage -matikiri: greenfootImage -jurus1kanan: greenfootImage -jurus2kanan: greenfootImage -jurus2kiri: greenfootImage -kenaserangkanan: greenfootImage -kenaserangkiri: greenfootImage -sayatkanan: greenfootImage -sayatkiri: greenfootImage -1: latar -hitung: int -kecepatan2: int -percepatan: int -penghalang1: int -penghalang2: int -KecepatanJalan: double -hadapkanan: boolean +hidup: boolean +jurus1: boolean +jurus2: boolean +serang: boolean ~khz: KHZaenalMustofa ~dkhz: darahKHZaenalMustofat -t: thread{volatile} -kecepatan1: int -kuatloncat: int ~darahkaptenJepang ~pj1: pelurujendral1 ~pj2: pelurujendral2 -tambahcepat: double +KaptenJepang() +cetak(): void +addedToWorld(world world): void +run(): void -meloncat(): void -hatuh(): void -mengejar(): void +tumbukan(): void{synchronized} +isSerang(): boolean +isJurus1(): boolean -serangjurus1(): void -serangjurus2(): void -serangan(): void +kenaserang(): void{synchronized} +mati(): void -gambarjalan(): void
+TombolCerita() +act(): void +berubahBentuk(): void
+TombolKembali2() +act(): void +BerubahBentuk(): void
DarahJendralJepang
PeluruJendral2
+tombolKembali() +act() +BerubahBentuk(): void
-Thread t: volatile -hidup: boolean -batas2: int
-jumlahDarah: int -gambarDarah: greenfootImage -latar 1 +DarahJendralJepang() +addedToWorld(world world): void +deretGambar(): void +kenaSerang(): void +Operation1() +kenaserang2(): void +kenaserang3(): void +getjumlahdarah(): int
+peluruJendral2() DarahKHZaenalMustofa -jumlahDarah: int -gambarDarah: greenfottImage -Latar 1 ~khz: KHZaenalMustofa +DarahKHZaenalMustofa() +addedToWorld(world world) +cetak(): void +kenaSerang(): void +kenaSerang2(): void +kenaSerang3(): void +kenaSerang4(): void +tangkis(): void +getJumlahDarah(): int
Pergerakan
PrajuritBelanda -Thread t: volatile +PrajuritBelanda() +cetak(): void +trkenaSerangan(): void +run(): void -gambarJalan(): void -jatuh(): void +mati(): void -meloncat(): void -mengejar(): void peluru2
-kecepatanJalan: double {static final} +jalan(): void +jalan(double distance): void
DarahJendralBelanda -jumlahDarah -Gambardarah: greenfootImage -latar 1 ~jb: jendralBelanda
~khz: KHZaenalMustofa ~dkhz: darahKHZaenalMustofa -Thread t: volatile ~1: latar -Hidup: boolean +Batas2: int +Peluru2() +addedToWorld(world world) +run()
Bambu1 Bambu2
+darahJendralBelanda() +addedToWorld(world World) +deretGambar(): void +KenaSerang(): void +KenaaSerang2(): void +kenaSerang3(): void +getjumlahDarah(): int
~pb: prajuritBelanda -Thread t: volatile +1: latar -hidup: boolean -batas2: int ~pj: prajuritJepang ~jb: jendralJepang ~djj: darahJendralJepang ~jj: jendralJepang ~djj: darahJendralJepang ~kj: kaptenJepang ~dkj: darahKaptenJepang JendralJepang
+bambu2() +addedToWorld(world world): void +run(): void
TombolCerita -tombol1: GreenfootImage -Tombol2: GreenfootImage
tombolKembali2
-tombol 1: greenfoot Image +Attribute1 -Tombol 2: GreenfootImage
Bambu1
+tombolMulai3() +act(): void +berunahBentuk(): void
-Tombol1: GreenfootImage -Tombol2: GreenfootImage
TombolKembali
~pb: prajuritBelanda -Thread t: volatile +1: latar -hidup: boolean -batas2: int ~pj: prajuritJepang ~jb: jendralJepang ~djj: darahJendralJepang ~jj: jendralJepang ~djj: darahJendralJepang ~kj: kaptenJepang ~dkj: darahKaptenJepang
TombolMulai3 -tombol1: GreenfootImage -tombol2: GreenfootImage
+WavPlayer() +setLoops(int n): void +Operation1() +getloopCount(): int +getIsPlaying(): boolean +open(string name): boolean +reset(): void +close(): boolean +play(): boolean +stop(): void
+actor() +getX(): int +getY(): int +getRotation(): int +setRotation(): int +turnTowards(int x, int y): void +setLocation(int x, int y): void +move(int distance): void +turn(int amount): void +getWorld(): world #addedToWorld(world world) +getImage(): GreenfootImage +setImage(greenfootImage image): void +intersects(actor other): boolean
-Tombol1: GreenfootImage -Tombol2: GreenfootImage
+TombolMulai2() +act(): void +berubahBentuk(): void
-stream: AudioinputStream -line: SourceDataLine -loops: int -loopCount: int -isPlaying: boolean -filename: string +totalRead: long
actor TombolMulai
tombolMulai2 -Tombol1: GreenfootImage -Tombol2: GreenfootImage
+KeluarkanMusuh() +tentukanTipeMusuh(int x): void +tentukanPosisiMusuh(int x): void +dapatkanTipeMusuh(): int +dapatkanposisimusuh(): int
-jalankanan: greenfootImage -jalanKiri: greenfootImage -tusukakanan: greenfootImage -tusukkiri: greenfootImage -tebaskanan: greenfootImage -tebaskiri: greenfootImage -tembakkanan: greenfootImage -tembakkiri: greenfootImage -matikanan: greenfootImage -matikiri: greenfootImage -jurus1kanan: greenfootImage -jurus1kiri: greenfootImage -jurus2kanan: greenfootImage -jurus2kiri: greenfootImage -kenaserangkanan: greenfootImage -kenaserangkiri: greenfootImage -sayatkanan: greenfootImage -sayatkiri: greenfootImage -1: latar -hitungan: int -kecepatan2: int -percepatan: int -pengahalan1: int -penghalang2: int -KecepatanJalan: double -hadapkanan: boolean +hidup: boolean +jurus1: boolean +jurus2: boolean +serang: boolean ~khz: KHZaenalMustofa ~dkhz: darahKHZaenalMustofat -t: thread{volatile} -kecepatan1: int -kuatloncat: int ~djj: darahjendraljepang ~pj1: pelurujendral1 ~pj2: pelurujendral2 -tambahcepat: double +Attribute1
+bambu2() +addedToWorld(world world): void +run(): void
PrajuritJepang +jumlahDarah: int +PrajuritJepang() -seranganSabetan(): void +public isSabetan(): boolean +cetak(): void +addedToWorld(World World): void +terkenaSerangan(): void +run(): void -gambarJalan(): void -synchronized tumbukan(): void -jatuh(): void +mati(): void -meloncat(): void -mengejar(): void +Operation1()
PeluruJendral1 -Thread t: volatile -hidup: boolean -batas2: int +PeluruJendral1() +addToWorld(world word): void +run(): void
+JendralJepang() +cetak(): void +addedToWorld(world world): void +run(): void -meloncat(): void -jatuh(): void -mengejar(): void +tumbukan(): void{synchronized} +isSerang(): boolean +isJurus1(): boolean +isJurus2(): boolean -serangjurus1(): void -serangjurus2(): void -serangan(): void +kenaserang(): void{synchronized} +mati(): void -gambarjalan(): void
Gambar 3.11 Class Diagram
Peluru1 -Thread t: volatile -hidup: boolean -batas2: int +peluru1() +addedToWorld(world world) +run()
JendralBelanda -latar 1 -hitungan: int -Kecepatan2: int -perceptan: int -penghalan1: int -penghalang2: int -Thread t: volatile +JendralBelanda() +cetak(): void +addedToWorld(world world) +run() -meloncat(): void -jatuh() -mengejar(): void -tumbukan(): void +isSerang(): boolean +isJurus1(): boolean
51
Setiap kelas memiliki jenis kelasnya masing – masing seperti yang terlihat pada Tabel 3.7. Tabel 3.7. Deskripsi Class Diagram Deskripsi Class No
Nama
Jenis
1.
World
Boundary
2.
Latar
Boundary
3.
Actor
Boundary
4.
Tombolmulai2
Boundary
5.
Tombolmulai3
Boundary
6.
Tombolcerita
Boundary
7.
MidiPlayer
Boundary
8.
Tombolmulai
Boundary
9.
Tombolkembali2
Boundary
10. Tombolkembali
Boundary
11. Wavplayer
Boundary
12. TombolPetunjuk
Boundary
13. darahkaptenJepang
Entity
14. KHZaenalMustofa
Entity
15. darahKHZaenalMustofa
Entity
16. DarahJendralBelanda
Entity
17. KeluarkanMusuh
Entity
18. darahJendralJepang
Entity
19. Pergerakan
Control
20. JendralJepang
Control
21. Bambu1
Control
22. Bambu2
Control
23. KaptenJepang
Control
24. JedralBelanda
Control
25. Peluru2
Control
52
Deskripsi Class 26. Peluru1
Control
27. PeluruJendral2
Control
28. PrajuritBelanda
Control
29. Pelurujendral1
Control
30. PrajuritJepang
Control
3.3.6 Sequence Diagram Sequence diagram menggambarkan interaksi antar objek di dalam dan disekitar sistem (termasuk pengguna, display, dan sebagainya). Sequence diagram terdiri atas dimensi vertical (waktu) dan dimensi horizontal (objekobjek yang terkait). Pada Sequence diagram ini menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan pada sistem sebagai respon dari sebuah event untuk menghasilkan output tertentu. actor
Latar
KHZaenalMustofa
darahKHZaenalMustofa
PrajuritBelanda
darahPrajuritBelanda
Star app getKHZaenalMustofa()
return KHZaenalMustofa() get darahKHZaenalMustofa()
return DarahKHZaenalMustofa() getPrajuritBelanda()
return PrajuritBelanda() get darahprajuritBelanda()
return darahPrajuritBelanda() getJendralBelanda()
return JendralBelanda get DarahJendralBelanda()
Show game
return darahJendralBelanda()
Gambar 3.12 Sequence Diagram Tampilkan Level 1
JendralBelanda
darahJendralBelanda
53
actor
Latar
KHZaenalMustofa
darahKHZaenalMustofa
Prajuritjepang
darahPrajuritJepang
Jendraljepang
darahJendralJepang
Star app getKHZaenalMustofa()
return KHZaenalMustofa() get darahKHZaenalMustofa()
return DarahKHZaenalMustofa() getPrajuritJepang()
return PrajuritJepang() get darahprajuritJepang()
return darahPrajuritJepang() getJendralJepang()
return JendralJepang() get DarahJendralJepang()
Show game
return darahJendralJepang()
Gambar 3.13 Sequence Diagram Tampilkan Level 2
actor
latar
KHZaenalMustofa
darahKHZaenalMustofa
prajuritBelanda
darahPrajuritBelanda
PrajuritJepang
star app
getKHZaenalMustofa() return KHZaenalMustofa getDarahKHZaenalMustofa() return KHZaenalMustofa
getprajuritBelanda return Prajuritbelanda() getdarahPrajuritBelanda() return darahprajurit belanda getPrajuritJepang return PrajuritJepang getPrajuritJepang return PrajuritJepang getKaptenJepang return KaptenJepang get DarahKaptenJepang return darahKaptenJepang
show game screen
Gambar 3.14 Sequence Tampilkan Level 3
darahPrajuritJepang
Kaptenjepang
DarahKaptenJepang
54
3.4
Perancangan Perangkat Lunak
3.4.1 Karakter Game Karakter yang terdapat pada game adalah sebagai berikut:
Tabel 3.8. Karakter Game Nama Karakter K.H Zaenal Mustofa
Gambar
Penjelasan K.H
Zaenal
Mustofa
adalah
karakter utama yang dikendalikan oleh pemain. Kekuatan yang dimiliki: - Jurus
hantaman
bumi
:
3
damage - jurus golok berputar : 2 damage - tabasan golok dan bambu : 1 damage Prajurit Belanda
Tentara belanda adalah karakter musuh Kekuatan yang dimiliki: - tembakan : 1 damage - pukulan : 1 damage
Prajurit Jepang
Tentara belanda adalah karakter musuh Kekuatan yang dimiliki: - Tembakan : 1 damage - pukulan : 1 damage
55
Jendral Belanda
Jendral Belanda adalah karakter yang mempunyai kekuatan lebih dari pada prajurit Kekuatan yang dimiliki: - jurus batu : 2 damage - jurus tendangan berputar dan peluru : 2 damage - pukulan, tendangan : 1 damage
Jendral Jepang
Jendral Jepang adalah karakter yang mempunyai kekuatan lebih dari pada prajurit Kekuatan yang dimiliki: - jurus batu : 3 damage - jurus sabetan samurai
: 3
damage - tebasan, tusukan, sayatan dan peluru : 2 damage Kapten Jepang
Kapten Jepang adalah karakter yang paling kuat Kekuatan yang dimiliki: - jurus api terbang : 3 damage - jurus sayatan ganda : 4 damage - tebasan, tusukan, sayatan dan peluru : 2 damage
3.4.2 Storyboard Storyboard adalah sketsa gambar yang disusun berurutan sesuai dengan naskah, dengan menggunakan storyboard dapat menyampaikan ide cerita kepada orang lain dengan lebih mudah karena dapat dengan storyboard dapat mengimajinasikan khayalan yang sesuai dengan gambar-gambar yang ada sehingga dapat menghasilkan persepsi yang sama pada ide cerita yang dibuat.
56
Berikut beberapa storyboard dari Aplikasi Game K.H. Zaenal Mustofa yaitu :
Gambar 3.15 toryboard level 1
Gambar 3.16 Storyboard level 2
Gambar 3.17 Storyboard level 3
3.4.3 Perancangan Antar Muka 3.4.3.1. Menu Utama Antarmuka adalah salah satu bagian terpenting dalam perancangan suatu sistem, karena antarmuka yang akan berhadapan langsung dengan user. Antarmuka Menu Utama dapat dilihat pada gambar berikut:
57
01 - Menu Mulai untuk masuk ke 03 - Menu Petunjuk untuk masuk ke 02
Cerita
Petunjuk Latar
Reset
Run
- Ukuran layar 600 x 400 pixel - Form ini tampilan menu utama yang berisi 2 menu yaitu mulai dan petunjuk
Gambar 3.18 Antar Muka Menu Utama
3.4.3.2. Menu Petunjuk 02
Tampilan Petunjuk .......................................................................................... ........................................................................................... .......................................................................................... ........................................................................................... .......................................................................................... ........................................................................................... .......................................................................................... ..........................................................................................
- tombol reset untuk mengulang permainan dari awal - tombol run / pause untuk menghentikan permainan /untuk melanjutkan permainan
Kembali
Reset
Run
- Ukuran layar 600 x 400 pixel - Form ini tampilan Petunjuk
Gambar 3.19 Antar Muka Menu Petunjuk
58
3.4.3.3. Tampilan Cerita 03 - tombol reset untuk mengulang permainan dari awal - tombol run / pause untuk menghentikan permainan /untuk melanjutkan permainan - tekan mulai untuk masuk ke permainan
Tampilan Cerita
Mulai
Reset
Run
- Ukuran layar 600 x 400 pixel - Form ini tampilan Petunjuk
Gambar 3.20 Gambar Antar Muka Tampilan Cerita
3.4.3.4. Antarmuka Level 1,2,3 04
Darah
Darah
- tombol reset untuk mengulang permainan dari awal - tombol run / pause untuk menghentikan permainan /untuk melanjutkan permainan
Tampilan Level 1,2,3
Reset
Run
- Ukuran layar 600 x 400 pixel - Form ini tampilan Level 1,2,3
Gambar 3.21 Antar Muka Tampilkan level 1,2,3
59
3.4.3.5. Antar Muka Tamat 05 - tombol reset untuk mengulang permainan dari awal - tombol run / pause untuk menghentikan permainan /untuk melanjutkan permainan
Tampilan Tamat
Reset
Run
- Ukuran layar 600 x 400 pixel - Form ini tampilan Tamat
Gambar 3.22 Antar Muka Tamat
3.4.3.6. Antar Muka Permainan Usai 06 - tombol reset untuk mengulang permainan dari awal - tombol run / pause untuk menghentikan permainan /untuk melanjutkan permainan
Tampilan Permainan Usai
Reset
Run
- Ukuran layar 600 x 400 pixel - Form ini tampilan Tamat
Gambar 3.23 Antar Muka Permainan Usai
60
3.4.4 Jaringan Semantik Tahap ini adalah menggambarkan hubungan antar menu pada aplikasi Game Sejarah Perjuangan K.H Zaenal Mustofa. Penggambaran tersebut diwujudkan dalam sebuah jaringan semantic. Tekan Mulai
Tekan kembali
02
01
Tekan Reset
03
Tekan Petunjuk
Klik mulai
06
04
05
Gambar 3.24 Jaringan Semantik
3.4.5 Perancangan Struktur Menu Merupakan fitur-fitur yang disediakan pada sistem yang dirancang, dan untuk mempermudah dalam penggunaan sistem nantinya. Perancangan struktur menu dapat dilihat pada gambar dibawah ini :
61
Start Menu Game
Menampilkan Cerita
Petunjuk
Tampilkan cerita
Menampilkan info petunjuk
Mulai
Tampilkan Selesai
Tampilkan Permainan
Tampilkan Tamat
Gambar 3.25 Struktur Menu
3.4.6 Perancangan Method Perancangan method merupakan perancangan yang berfungsi untuk mendeskripsikan method-method yang berada di dalam aplikasi. Method dapat dipanggil dengan menyertakan variabel, baik hanya satu variabel, banyak variabel atau bahkan tidak ada sama sekali .Adapun method-method yang terdapat dalam game Sejarah Perjuangan K.H. Zaenal Mustofa yang akan dibangun dijelaskan melalui flowchart sebagai berikut.
62
3.2.9.1 Method Cerita Method Cerita akan dipanggil ketika memilih menu Cerita, dapat dilihat pada gambar 3.22 Mulai
Menu cerita terpilih
Menampilkan cerita
Cerita
selesai
Gambar 3.26 Flowchart method Cerita
3.2.9.2 Method Instructions Method Instructions akan dipanggil ketika memilih menu petunjuk, dapat dilihat pada gambar 3.23
63
Mulai
Menu Petunjuk terpilih
Menampilkan petunjuk
Info petunjuk
selesai
Gambar 3.27 Flowchart method Petunjuk
3.2.9.3 Perancangan Method Jump Method ini menjelaskan jump pada karakter pada gameuntuk lebih jelasnya dapat dilihat pada gambar 3.24. Mulai
Panggil metode applyGravity() canJump = false false
Membentur platform ?
true
setVelocityY = 0 canJump = true
Selesai
Gambar 3.28 Perancangan Method Jump
64