33
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
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
menampilkan permainanmemulai 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.
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
.
Gambar 3.5 Teknik Pencarian 2
Play
er
player
NP
C
NPC
a b player NPC
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.
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.
Gambar 3.7 Teknik Pencarian 4
e
c a
2
b d player NPC e
C A
2
B D player NPC
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
User
memilih petunjuk
Memilih Cerita
*
*
*
*
KHZaenalMustofa
tampilkan Cerita
Level 1
Tampilkan cerita
Level 2
Tampilkan cerita
Level 3
<<include>>
<<include>>
<<include>>
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.
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
Identifikasi
Nomor 1
Nama Memilih Cerita
Tujuan Menampilkan cerita level 1
Deskripsi Proses untuk melihat cerita level 1
Aktor User
Skenario Utama
Kondisi Awal User berada dibagian menu utama
Aksi Aktor Reaksi Sistem
1. Memilih menu
“cerita”
2. Aplikasi merespon dengan cara masuk ke
cerita Level 1
Kondisi Akhir 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
Identifikasi
Nomor 2
Nama Memilih Petunjuk
Tujuan Menampilkan Petunjuk permainan
Deskripsi Proses untuk melihat petunjuk permainan
Aktor User
Skenario Utama
Kondisi Awal User berada dibagian menu utama
Aksi Aktor Reaksi Sistem
3. Memilih menu
“petunjuk”
4. Aplikasi merespon dengan cara masuk
ke petunjuk permainan
Kondisi Akhir 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
Nomor 3
Nama Memilih Tampilkan Cerita Level 1
Tujuan Menampilkan cerita level 1
Deskripsi Proses untuk melihat cerita level 1
Aktor User
Skenario Utama
Kondisi Awal User berada dibagian menu utama
Aksi Aktor Reaksi Sistem
5. Memilih menu
“mulai”
6. Aplikasi merespon dengan cara masuk ke
permainan level 1
Kondisi Akhir Aplikasi menampilkan level 1
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 4
Nama Tampilkan cerita Level 2
Tujuan Menampilkan Level 2
Deskripsi Proses untuk memainkan level 2
Aktor User
Skenario Utama
Kondisi Awal User berada dibagian menu utama
Aksi Aktor Reaksi Sistem
7. Memilih menu
“mulai”
8. Aplikasi merespon dengan cara masuk
ke permainan level 2
Kondisi Akhir 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
Identifikasi
Nomor 4
Nama Tampilkan cerita Level 3
Tujuan Menampilkan Level 3
Deskripsi Proses untuk memainkan level 3
Aktor User
Skenario Utama
Kondisi Awal User berada dibagian menu utama
Aksi Aktor Reaksi Sistem
9. Memilih menu
“mulai”
10. Aplikasi merespon dengan cara masuk
ke permainan level 3
Kondisi Akhir 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
SistemPemain
Menjalankan Game
Memilih cerita
Menampilkan menu utama
menampilkan Level 1
Tampilkan Cerita Level 2
menampilkan Level 2
Tampilkan Cerita level 3
menampilkan Level 3
Menampilkan tamat
Tampilkan permainan Usai
Tampilkan Cerita Level 1
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
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 :
SistemPemain
Menjalankan Game
Memilih Petunjuk
Menampilkan Menu utama game
Menampilkan tampilan petunjuk
50
Gambar 3.11 Class Diagram
world
+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
+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
actor
+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
DarahKaptenJepang
-jumlahdarah: int-gambardarah: greenfootImage-latar 1~kj: KaptenJepang
+DarahKaptenJepang()+addedToWorld(world world): void+deretGambar(): void+KenaSerang(): void+KenaSerang2(): void+kenaSerang3(): void+getJumlahDarah(): int
MidiPlayer
-sequencer: sequencer-isFileOpen: boolean+CONTINUOUS: int {static final}-midiFile: string
+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
TombolMulai
-Tombol1: GreenfootImage-Tombol2: GreenfootImage
+TombolMulai()+act(): void+TombolMulai()+BerubahBentuk(): void
KHZaenalMustofa
-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
TombolKembali
-tombol 1: greenfoot Image+Attribute1-Tombol 2: GreenfootImage
+tombolKembali()+act()+BerubahBentuk(): void
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
DarahJendralBelanda
-jumlahDarah-Gambardarah: greenfootImage-latar 1~jb: jendralBelanda
+darahJendralBelanda()+addedToWorld(world World)+deretGambar(): void+KenaSerang(): void+KenaaSerang2(): void+kenaSerang3(): void+getjumlahDarah(): int
KeluarkanMusuh
-tipemusuh: int+posisiMusuh: int
+KeluarkanMusuh()+tentukanTipeMusuh(int x): void+tentukanPosisiMusuh(int x): void+dapatkanTipeMusuh(): int+dapatkanposisimusuh(): int
WavPlayer
-stream: AudioinputStream-line: SourceDataLine-loops: int-loopCount: int-isPlaying: boolean-filename: string+totalRead: long
+WavPlayer()+setLoops(int n): void+Operation1()+getloopCount(): int+getIsPlaying(): boolean+open(string name): boolean+reset(): void+close(): boolean+play(): boolean+stop(): void
DarahJendralJepang
-jumlahDarah: int-gambarDarah: greenfootImage-latar 1
+DarahJendralJepang()+addedToWorld(world world): void+deretGambar(): void+kenaSerang(): void+Operation1()+kenaserang2(): void+kenaserang3(): void+getjumlahdarah(): int
TombolPetunjuk
-tombol1: greenfootImage-tombol2: GreenfootImage
+TombolPetunjuk()+act(): void+berubahBentuk(): void
Pergerakan
-kecepatanJalan: double {static final}
+jalan(): void+jalan(double distance): void
JendralJepang
-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
+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
Bambu1
~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
+bambu2()+addedToWorld(world world): void+run(): void
Bambu1
~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
+bambu2()+addedToWorld(world world): void+run(): 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
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
peluru2
~khz: KHZaenalMustofa~dkhz: darahKHZaenalMustofa-Thread t: volatile~1: latar-Hidup: boolean+Batas2: int
+Peluru2()+addedToWorld(world world)+run()
Peluru1
-Thread t: volatile-hidup: boolean-batas2: int
+peluru1()+addedToWorld(world world)+run()
PrajuritBelanda
-Thread t: volatile
+PrajuritBelanda()+cetak(): void+trkenaSerangan(): void+run(): void-gambarJalan(): void-jatuh(): void+mati(): void-meloncat(): void-mengejar(): 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
PeluruJendral2
-Thread t: volatile-hidup: boolean-batas2: int
+peluruJendral2()
tombolMulai2
-Tombol1: GreenfootImage-Tombol2: GreenfootImage
+TombolMulai2()+act(): void+berubahBentuk(): void
TombolMulai3
-tombol1: GreenfootImage-tombol2: GreenfootImage
+tombolMulai3()+act(): void+berunahBentuk(): void
TombolCerita
-tombol1: GreenfootImage-Tombol2: GreenfootImage
+TombolCerita()+act(): void+berubahBentuk(): void
tombolKembali2
-Tombol1: GreenfootImage-Tombol2: GreenfootImage
+TombolKembali2()+act(): void+BerubahBentuk(): void
Bambu2
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
actor Latar
Star app
KHZaenalMustofa
getKHZaenalMustofa()
return KHZaenalMustofa()
darahKHZaenalMustofa
get darahKHZaenalMustofa()
return DarahKHZaenalMustofa()
PrajuritBelanda
getPrajuritBelanda()
return PrajuritBelanda()
darahPrajuritBelanda
get darahprajuritBelanda()
return darahPrajuritBelanda()
JendralBelanda
getJendralBelanda()
return JendralBelanda
darahJendralBelanda
get DarahJendralBelanda()
return darahJendralBelanda()Show game
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 (objek-
objek 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.
Gambar 3.12 Sequence Diagram Tampilkan Level 1
53
actor Latar
Star app
KHZaenalMustofa
getKHZaenalMustofa()
return KHZaenalMustofa()
darahKHZaenalMustofa
get darahKHZaenalMustofa()
return DarahKHZaenalMustofa()
Prajuritjepang
getPrajuritJepang()
return PrajuritJepang()
darahPrajuritJepang
get darahprajuritJepang()
return darahPrajuritJepang()
Jendraljepang
getJendralJepang()
return JendralJepang()
darahJendralJepang
get DarahJendralJepang()
return darahJendralJepang()Show game
Gambar 3.13 Sequence Diagram Tampilkan Level 2
actor latar KHZaenalMustofa PrajuritJepangdarahKHZaenalMustofa darahPrajuritJepang
getKHZaenalMustofa()
return KHZaenalMustofa
star app
getDarahKHZaenalMustofa()
return KHZaenalMustofa
show game screen
prajuritBelanda darahPrajuritBelanda
getdarahPrajuritBelanda()
return darahprajurit belanda
getprajuritBelanda
return Prajuritbelanda()
getPrajuritJepang
return PrajuritJepang
getPrajuritJepang
return PrajuritJepang
Kaptenjepang
getKaptenJepang
return KaptenJepang
DarahKaptenJepang
get DarahKaptenJepang
return darahKaptenJepang
Gambar 3.14 Sequence Tampilkan Level 3
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 Gambar Penjelasan
K.H Zaenal Mustofa
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
Gambar 3.18 Antar Muka Menu Utama
3.4.3.2. Menu Petunjuk
Gambar 3.19 Antar Muka Menu Petunjuk
01
- Menu Mulai untuk masuk ke 03
- Menu Petunjuk untuk masuk ke 02
Reset Run
- Ukuran layar 600 x 400 pixel
- Form ini tampilan menu utama yang berisi 2 menu yaitu mulai dan petunjuk
Cerita
Petunjuk
Latar
02
Tampilan Petunjuk
- tombol reset untuk mengulang
permainan dari awal
- tombol run / pause untuk
menghentikan permainan
/untuk melanjutkan permainan
Reset Run
- Ukuran layar 600 x 400 pixel
- Form ini tampilan Petunjuk
..........................................................................................
...........................................................................................
..........................................................................................
...........................................................................................
..........................................................................................
...........................................................................................
..........................................................................................
..........................................................................................
Kembali
58
3.4.3.3. Tampilan Cerita
Gambar 3.20 Gambar Antar Muka Tampilan Cerita
3.4.3.4. Antarmuka Level 1,2,3
Gambar 3.21 Antar Muka Tampilkan level 1,2,3
03
Tampilan Cerita
- tombol reset untuk mengulang
permainan dari awal
- tombol run / pause untuk
menghentikan permainan
/untuk melanjutkan permainan
- tekan mulai untuk masuk ke
permainan
Reset Run
- Ukuran layar 600 x 400 pixel
- Form ini tampilan Petunjuk
Mulai
04
Tampilan Level 1,2,3
- tombol reset untuk mengulang
permainan dari awal
- tombol run / pause untuk
menghentikan permainan
/untuk melanjutkan permainan
Reset Run
- Ukuran layar 600 x 400 pixel
- Form ini tampilan Level 1,2,3
Darah Darah
59
3.4.3.5. Antar Muka Tamat
Gambar 3.22 Antar Muka Tamat
3.4.3.6. Antar Muka Permainan Usai
Gambar 3.23 Antar Muka Permainan Usai
05
Tampilan Tamat
- tombol reset untuk mengulang
permainan dari awal
- tombol run / pause untuk
menghentikan permainan
/untuk melanjutkan permainan
Reset Run
- Ukuran layar 600 x 400 pixel
- Form ini tampilan Tamat
06
Tampilan Permainan Usai
- tombol reset untuk mengulang
permainan dari awal
- tombol run / pause untuk
menghentikan permainan
/untuk melanjutkan permainan
Reset Run
- Ukuran layar 600 x 400 pixel
- Form ini tampilan Tamat
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.
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 :
01 03 02
Tekan kembali
Tekan Petunjuk
Tekan Mulai
Tekan Reset
04 06
05
Klik m
ulai
61
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.
Start Menu Game
Menampilkan Cerita
Tampilkan cerita
Mulai
Tampilkan Permainan
Petunjuk
Menampilkan info
petunjuk
Tampilkan Tamat
Tampilkan Selesai
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
setVelocityY = 0
canJump = true
Membentur
platform ?
false
true
Selesai
Gambar 3.28 Perancangan Method Jump