ANALISA DAN PERBAIKAN PROGRAM GAME PUZZLE SOKOBAN MENGGUNAKAN J2SE Ir. Samidi, MM Abstrak Pada satu dasawarsa ini perkembangan dunia game sudah sangat pesat sekali, berbagai macam jenis game pun mulai bermunculan dari mulai yang sederhana sampai game yang mempunyai grafik yang membuat kita berdecak kagum. Dalam salah satu perkembangan game tersebut, terdapat game yang sudah sangat lama sekali dan masih eksis sampai sekarang. Yaitu game Sokoban, game sokoban ini sendiri awalnya adalah game yang dibuat oleh programer Jepang pada kontes game tahun 1982, pada saat itu si pembuat game yaitu Hiroyuki Imabayashi mendapatkan peringkat pertama dimana dia memperkenalkan dan mendemonstrasikan game buatannya dengan judul “Sokoban”. Dalam perkembangannya, pada game sokoban yang berjalan saat ini penulis masih melihat adanya kelemahan-kelemahan yang ada pada game sokoban itu sendiri, sehingga membuat game ini menjadi kurang diminati oleh para penikmat game. Kekurangan-kekurangannya yaitu gambar yang masih terlihat kaku, suara yang kurang bagus bahkan ada yang tanpa suara, level yang tidak berurut, serta tidak adanya penunjuk nilai (skor and rating) pemain. Karena permasalahan-permasalahan di atas, penulis akan menganalisa dan memperbaiki game sokoban yang berjalan dengan perbaikan yaitu, gambar yang lebih halus, dukungan suara yang sesuai dengan konsep permainan sokoban, level yang terurut dimana permainan di awali pada tingkat yang mudah kemudian berlanjut ke tingkat yang lebih sulit, penambahan menu registrasi pemain, adanya penunjuk nilai (skor and rating) pemain. 1.
PENDAHULUAN
Latar Belakang Dalam satu dasawarsa ini perkembangan game sudah sangat pesat sekali. Dan variasi dari game ini sendiripun sudah sangat banyak dari mulai game berjenis adventure (pertualangan), Simulation (simulasi), puzzle (tekateki), RPG (Role Playing Game), racing (balapan), dan lain sebagainya. Dalam game puzzle sendiri terdapat berbagai macam jenis. Mulai dari yang sederhana bahkan sampai tingkat yang tersulit sekalipun. Dalam penulisan ilmiah ini, penulis akan membahas mengenai game sokoban. Sokoban pertama kali diperkenalkan pada tahun 1982 oleh perusahaan THINKING RABBIT di kota Tarazuka, Jepang. Di buat oleh programmer game bernama Hiroyuki Imabayashi. Dalam permainannya sendiri game sokoban merupakan game yang cukup sederhana namun sangat menarik. Aturan mainnya sangatlah sederhana yaitu mendorong objek ke arah koordinat yang telah ditentukan, dengan langkah yang sudah disesuaikan. Dan apabila Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
90
sedikit saja salah melangkah maka permainanpun berakhir karena objek tersebut sudah tidak bisa melakukan pergerakan lagi. Berikut contoh gambar salah satu game sokoban yang sukses dipasaran
Gambar 1.1 Game Sokoban yang Sukses di Pasaran Ini adalah game sokoban di era tahun 90-an, dimana kita diharuskan untuk merapihkan box ke dalam tempat yang telah ditentukan. Identifikasi Masalah 1. Gambar masih terlihat kasar, permainan masih bersifat kaku. 2. Dukungan suara monofonik dan bahkan ada yang tanpa suara. 3. Tidak adanya penunjuk nilai (score and rating) pemain. 4. Level tidak berurut. 5. tidak fleksibel karena hanya bisa dimainkan di OS Windows saja. Tidak bisa di OS lain seperti linux contohnya Pembatasan Masalah: Penulis membatasi penulisan ini yaitu pada : 1. Perbaikan pada resolusi dan kecepatan, 2. Perbaikan suara permainan dibanding dengan sokoban terdahulu. 3. Perbaikan level dalam game. 4. Perubahan dari konsep permainan. Disini pemain diharuskan untuk memulai dari awal sesuai dengan urutan level. 5. Penambahan fitur pencatatan nilai dan peringkat (score and rating) pemain. Tujuan dan Manfaat Penelitian Tujuan dari penelitian yang dilakukan penulis adalah untuk melakukan perbaikan – perbaikan terhadap game sokoban yang berjalan saat ini, agar game sokoban ini bisa kembali diminati sebagai salah satu game puzzle yang patut untuk dimainkan, Serta memberikan nuansa baru dari game sokoban yang sudah ada saat ini. Ruang Lingkup Penelitian Dalam penulisan ini, penulis hanya akan membahas mengenai game sokoban saja, dari mulai kekurangan-kekurangan yang ada pada game sokoban, sejarah dari game sokoban, dan perbaikan-perbaikan apa saja yang dilakukan oleh penulis pada game sokoban yang berjalan saat ini sesuai dengan batasan masalah yang ada.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
91
Metodologi Penelitian Metode yang dilakukan penulis adalah melakukan studi pustaka dan studi lapangan dengan langkah-langkah sebagai berikut : 1. Studi Pustaka Penulis menggunakan teknik studi pustaka dengan cara mengumpulkan referensi dalam bentuk buku serta literature dan contoh game yang berkaitan dengan game sokoban ini serta melakukan perbandingan antara game sokoban yang sudah ada dengan game sokoban buatan penulis. Bukubuku yang berkaitan dengan pembuatan game serta artikel-artikel yang terdapat di internet. 2. Study Lapangan Metode pengumpulan data adalah cara untuk mendapatkan atau pengumpulan data baik melalui observasi lapangan, pengisian angket maupun penelusuran pustaka. Metode pengumpulan data yang digunakan dalam penelitian ini adalah : a. Implementasi Lapangan Penulis Mencoba mengumpulkan informasi kepada rekan-rekan penulis mengenai permainan puzzle apa yang menarik untuk dimainkan. b. Analisis Data Setelah melakukkan pencarian data yang bersumber dari kepustakaan, teori-teori dan buku-buku, internet, dan studi lapangan maka dilakukan tahap analisa dengan metode analisis dari berbagai informasi yang didapat dalam perancangan game puzzle sokoban 2. LANDASAN TEORI Pengertian Game Menurut Agustinus Nilwan dalam bukunya “Pemrograman Animasi dan Game Profesional” terbitan Elex Media Komputindo, game merupakan permainan komputer yang dibuat dengan teknik dan metode animasi. Jika ingin mendalami penggunaan animasi haruslah memahami pembuatan game. Atau jika ingin membuat game, maka haruslah memahami teknik dan metode animasi, sebab keduanya saling berkaitan. Teori permainan adalah suatu cara belajar yang digunakan dalam menganalisa interaksi antara sejumlah pemain maupun perorangan yang menunjukkan strategi-strategi yang rasional. Teori permainan pertama kali ditemukan oleh sekelompok ahli Matematika pada tahun 1944. Menurut John von Neumann dan Oskar Morgenstern dalam buku karangan Agustinus Nilwan dalam bukunya “Pemrograman Animasi dan Game Profesional” yang berisi “Permainan terdiri atas sekumpulan peraturan yang membangun situasi bersaing dari dua sampai beberapa orang atau kelompok dengan memilih strategi yang dibangun untuk memaksimalkan kemenangan sendiri atau pun untuk meminimalkan kemenangan lawan. Peraturan-peraturan menentukan kemungkinan tindakan untuk setiap pemain, sejumlah keterangan diterima setiap pemain sebagai kemajuan bermain, dan sejumlah kemenangan atau Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
92
kekalahan dalam berbagai situasi.” ( J. Von Neumann and O. Morgenstern, Theory of Games and Economic Behavior (3d ed. 1953). Tentang Bahasa Pemrograman Java Java adalah sebuah platform teknologi pemrograman yang dikembangkan oleh Sun Microsystem. Pertama kali di publikasi tahun 1991 yang diprakarsai oleh tim sun melalui proyek bernama green yang dipimpin oleh James Gosling. Yang memotivasi Java dibuat adalah untuk membuat sebuah bahasa pemrograman yang portable dan independent terhadap platform (platform independent). Java dapat membuat perangkat lunak yang dapat ditanamkan (embedded) pada berbagai mesin dan peralatan konsumer, seperti handphone, microwave, remote control, dan lainlain. Hal ini yang kemudian Java memiliki konsep yang disebut write once run anywhere. Untuk membangun perangkat lunak menggunakan Java maka dibutuhkan Java Development Kit (JDK). JDK terbitan pertama tahun 1996 yaitu JDK 1.1 yang diadopsi oleh Netscape. JDK terbaru sekarang (November - tahun 2010, ketika penulisan ilmiah ini ditulis) adalah JDK 1.6.2_3. Analisa dan Design menggunakan Metode Unified Modeling Language (UML). Unified Modeling Language (UML) adalah sebuah bahasa untuk menetukan visualisasi, konstruksi dan mendokumentasikan artifacts dari sistem software, untuk memodelkan bisnis, dan sistem non software lainnya. UML merupakan suatu kumpulan tekhnik terbaik yang telah terbukti sukses dalam memodelkan sistem yang besar dan kompleks. Adapun artifacts adalah sepotong informasi yang digunakan atau dihasilkan dalam suatu proses rekayasa software. Artifacts dapat berupa model, deskripsi, atau software. Untuk membuat suatu model, UML memiliki diagram grafis sebagai berikut: Use-case Diagram Class Diagram Behavior diagram o Statechart Diagram o Activity Diagram o Interaction diagram Implemetasi Diagram o Component Diagram o Deployment diagram Diagram-diagram tersebut diberi nama berdasarkan sudut pandang yang berbeda-beda terhadap sistem dalam proses analisis atau rekayasa. (Suhendar A,2002 : 26)
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
93
3. TINJAUAN TERHADAP IMPLEMENTASI GAME SOKOBAN YANG BERJALAN Game Sokoban Game sokoban pertama kali diperkenalkan pada tahun 1982 oleh Hiroyuki Imabayashi, dahulunya game ini ditujukan pada ajang kontes pembuatan game yang digelar di Jepang, pada saat itu Hiroyuki memenangkan kontes dengan game sokoban buatannya ini. Kemudian setelah memenangkan kompetisi tersebut, sang pembuat game yaitu Hiroyuki Imabayashi memperkenalkan dan memasarkan game tersebut kepada masyarakat Jepang yang pada saat itu game sokoban ini bernaung di bawah console Nintendo, yaitu sebuah perangkat yang khusus dibuat untuk memainkan game. Beliau menjadi Presiden dari sebuah perusahaan yang dibangunnya sendiri dengan nama Thinking Rabbit Inc. dan secara cepat game tersebut mulai dikenal diseluruh masyarakat Jepang dan sampai saat penulis melakukan penulisan ini, game sokoban tidak hanya di kenal di Jepang saja, tetapi juga sudah cukup dikenal dimana-mana. Nama sokoban di ambil dari bahasa Jepang yang artinya warehouse keeper (penjaga gudang). Game sokoban ini diilhami dari masalah di kehidupan nyata, tentang seorang petugas gudang yang merapihkan area gudang yang terkesan berantakan dimana box berada tidak beraturan dan tidak sesuai pada tempatnya, dan tugasnya di sini adalah merapihkan box-box tersebut supaya lebih lebih tertata rapih. Aturan main game sokoban sangatlah sederhana yaitu: Kita tidak bisa menarik barang dan hanya bisa mendorong satu persatu barang ke koordinat yang telah ditentukan. Lakukan gerakan seminimal mungkin untuk memenangkan permainan. Sekali salah melangkah, maka permainan berakhir karena game sudah tidak bisa untuk diselesaikan.
Gambar 3.1. Game Sokoban produksi thinking rabbit Keterangan: Ini adalah game sokoban yang pertama kali diterbitkan oleh perusahaan Thinking Rabbit di kota Tarazuka, Jepang. Dalam permainan di atas terlihat
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
94
sudah mempunyai kualitas suara yang variatif, tetapi penulis melihat grafik dari permainan tersebut terlihat kasar. Dukungan suara yang terkesan monofonik dan bahkan ada game sokoban yang tidak didukung suara sama sekali seperti game sokoban buatan tahun 2005 ini.
Gambar 3.2. Game Sokoban Buatan tahun 2005 Keterangan: Walaupun dari sisi grafik sudah terlihat bagus, tetapi dalam segi sound dan permainan masih bersifak kaku. Karena tidak didukung suara sama sekali permainan jadi terasa sangat hampa. 1. Tidak adanya penunjuk nilai dan peringkat (score and rating) pemain, sebab dalam sebuah game nilai merupakan sebagai tolak ukur tingkat ketangkasan pemain dalam memainkan game tersebut, pada game sokoban buatan thinking rabbit tidak ada penunjuk skor sama sekali. Dan pada game sokoban buatan tahun 2005, mempunyai penunjuk skor tetapi skor tersebut terdapat pada setiap level saja dan tidak ada rating tertinggi pemain sehingga pemain tidak bisa melihat seberapa tinggi tingkat kecermatan dalam memainkan game sokoban tersebut. 2. Levelnya tidak berurut, jadi sewaktu bermain pemain tinggal memilih level yang diinginkan. Dan setelah level tersebut selesai permainanpun berakhir. Dan juga model permainannya yang itu-itu saja. 3. Game hanya bisa dimainkan di OS Windows saja, dan tidak bisa dimainkan pada Operating System lain seperti linux dan sebagainya. Dalam penulisan kali ini, penulis mengambil konsep game sokoban yang sudah ada dengan penambahan-penambahan yang belum ada pada versi game sokoban yang sudah ada dipasaran (Gameplay dari game sokoban ini dapat dilihat di skenario game pada subbab berikutnya). 3.2 Analisa dan Pembahasan Skenario Permainan Skenario game ini penulis buat berdasarkan imajinasi penulis serta berdasarkan referensi-referensi mengenai game sokoban, juga menanyakan kepada rekan penulis karakter apa yang sebaiknya di jadikan aktor dalam game ini. Setelah lama memikirkan konsep karakter. Maka karakter yang Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
95
penulis gunakan adalah seekor anak kucing yang penulis beri nama “Chococobi”, dimana dia harus berjuang untuk keluar dari suatu dungeon (bangunan yang berliku). Dalam bangunan itu terdapat berbagai jalan yang digembok. Maka sang aktor atau dalam hal ini si anak kucing harus mencari anak kunci untuk membuka gembok, dalam setiap level yang dilalui terdapat bebagai macam tingkatan yang berbeda-beda, semakin tinggi level tersebut maka akan semakin sulit untuk dilalui karena selain diharuskan untuk memasukan kunci kitapun harus menghemat langkah sehemat mungkin, sebab setiap level mempunyai jumlah step yang sudah disesuaikan. Berikut ini skenario permainan dalam game tersebut: Pada awal Tampilan akan muncul tampilan splash screen dimana tampilan splash screen itu sebagai pembukaan sebelum memulai game. Setelah masuk ke menu utama, terlebih dahulu registrasi pemain, dimana kita diharuskan mengisi nama. Setelah proses registrasi selesai, maka mulai permainan. Permainan akan diawali pada level yang mudah untuk kemudian berlanjut ke level yang lebih sulit. Dalam permainan ini anda diharuskan untuk memasukan anak kunci ke dalam gembok yang sudah disesuaikan. Dalam setiap level diberi langkah yang sudah ditentukan. Apabila dalam langkah tersebut kita belum selesai memasukan anak kunci ke dalam gembok, maka permainan berakhir. Dan anda dinyatakan kalah. Apabila dalam step yang ditentukan berhasil memasukan semua anak kunci ke dalam gembok, maka anda dinyatakan menang dan berhak maju ke level selanjutnya. Sampai ke tingkat level yang lebih dalam lagi. Tetapi apabila dalam suatu kondisi anda kehabisan step, maka permainan game over dan diharuskan mengulang permainan dari awal lagi. Mempersiapkan perancangan perangkat pembuatan game. Dalam membuat game ini terlebih dahulu penulis membuat desain karakter. Berikut ini desain karakter dan lingkungan dalam pembuatan game ini: Desain Gambar game Image gambar
Nama gambar
fungsi
Batu1
Berguna sebagai dinding dalam permainan
Batu2
Digunakan sebagai anak kunci
Gembok tutup
Digunakan sebagai gembok
exit
Digunakan sebagai pilihan untuk keluar dalam permainan
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
96
Hero1
Aktor menghadap ke atas dalam permainan
Hero2
Aktor menghadap ke bawah dalam permainan
Hero3
Aktor menghadap ke kiri dalam permainan
Hero4
Aktor menghadap ke kanan dalam permainan
Gembok buka
new score tanah user view
Dalam permainan gembok akan terbuka apabila kunci berhasil dimasukan ke dalam gembok tertutup Image ini digunakan dalam pilihan mulai permainan Image yang dimasukan dalam menu score Latar yang digunakan dalam permainan Image yang ditempatkan pada menu registrasi pemain Menu yang ditempatkan pada menu daftar pemain
Gambar 3.3 Desain Gambar Game Desain Map Dalam desain map ini penulis menggunakan matriks 10 x 10. Berikut contoh map awal. 1111111111 1000000001 1000000301 1000000001 1000000001 1001111101 1000000001 1000020001 1000000001 1111111111 dalam desain map di atas, penulis menggunakan simbol angka sebagai pengganti objek yang dapat diartikan sebagai berikut: 3 = Gembok 2 = Kunci 1 = Batu Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
97
0 = Tanah dalam pembuatan map diatas, maka hasilnya adalah sebagai berikut :
Gambar 3.4. Desain Map Dalam Game Keterangan: Dalam gambar diatas angka 1 yang melambangkan batu terdapat disekeliling gambar sesuai dengan gambar desain map awal. Kemudian angka 3 menggambarkan output gembok, sedangkan angka 2 menggambarkan kunci dan anga 0 menggambarkan tanah. Jadi secara garis besar angka mempunyai pengertian sebagai berikut : 3
=
1
=
2
=
0
=
3.3. UML Diagram Berikut ini penulis akan menjelaskan laur pembuatan game sokoban dengan menggunakan usecase diagram, class diagram, dan sequence diagram. Usecase Diagram Berikut ini usecase diagram dalam game sokoban
Gambar 3.5. Usecase Diagram Game Sokoban
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
98
Activity Diagram Berikut ini activity diagram pada game Sokoban GAME_SOKOBAN
USER
Splash Screen
Main_menu
punya ID?
Menu Registrasi
registrasi
Input User
Game Sokoban
Play
Menang?
ya Level Berikutnya tidak tamatkan game? ya Hitung Skor
tidak Skor tertinggi? ya tidak
input daftar skor
End Game
Gambar 3.6. Activity Diagram Game Sokoban Keterangan: Class Diagram Berikut ini class diagram pada game sokoban:
Gambar 3.7. Class Diagram Game Sokoban
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
99
Sequence Diagram Berikut ini sequence diagram pada game sokoban :
Gambar 3.8. Sequence Diagram Game Sokoban
4. IMPLEMENTASI DAN UJI PERANGKAT SISTEM Spesifikasi Sistem Spesifikasi Perangkat Keras (Hardware) Spesifikasi perangkat keras yang digunakan penulis dalam pengembangan dan aplikasi ini adalah sebagai berikut : Intel Pentium IV 2.4 GHz Motherboard ASUS P4800MX RAM 224MB Monitor SAMSUNG SyncMaster591v Keyboard PS/2 Logitech Mouse USB Logitech Spesifikasi Minimum Spesifikasi minimum perangkat keras yang dibutuhkan untuk pengembangan dan aplikasi ini adalah sebagai berikut : RAM minimal 128 atau 256MB Monitor berbagai merek Prosesor minimal Intel Pentium 3 atau diatasnya Mouse berbagai merek Speaker berbagai merek Keyboard berbagai merek MotherBoard berbagai merek Spesifikasi Perangkat Lunak Spesifikasi Perangkat Lunak yang digunakan dalam pengembangan dan aplikasi dalam penulisan ini adalah : Sistem Operasi Windows XP SP2. J2SE sebagai bahasa pemrograman untuk pembuatan coding dalam game desktop. JDK 1.6.0 for Windows i586 . PhotoScape. Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
100
JCreator ataupun Notepad++ sebagai editor bahasa pemrograman untuk pembuatan coding.
Tampilan Output Pada bagian ini merupakan tampilan output untuk game puzzle “FLYING CHOCOCHOBI”. Output tampilannya ialah : Tampilan Output Splashscreen Pada bagian ini merupakan tampilan awal atau opening sebelum masuk ke program utama aplikasi ini. Tampilannya ialah :
Gambar 4.1 Tampilan Output Splashscreen Tampilan Output Menu Utama Tampilan output menu utama digunakan sebagai master menu untuk mengakses menu-menu lain yang berada didalamnya. Tampilan outputnya ialah :
Gambar 4.2. Tampilan Output Menu Utama Tampilan Output Menu Level Pada bagian ini merupakan contoh tampilan output untuk level pada game puzzle “FLYING CHOCOCHOBI”. Tampilan outputnya ialah :
Gambar 4.3 Tampilan Output Level-I
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
101
Tampilan Output Level Completed Pada tampilan output dibawah ini merupakan tampilan output pada saat pemain dapat menyelesaikan level dan lanjut ke level selanjutnya. Tampilan outputnya ialah :
Gambar 4.4. Tampilan Level Complete Tampilan Output Winner Game Pada bagian output ini merupakan tampilan pada saat pemain dapat menyelesaikan semua level yang disediakan dalam game puzzle ini. Tampilan outputnya ialah :
Gambar 4.5 Tampilan Output Win Game 4.3.6 Tampilan Output Game Over Tampilan output ini menjelaskan bahwa pemain kalah atau tidak dapat melanjutkan ke level selanjutnya. Tampilan outputnya ialah :
Gambar 4.6 Tampilan Output Game Over Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
102
Implementasi Coding Pada bagian ini akan membahas beberapa coding untuk implementasi pada permainan game puzzle “FLYING CHOCOCHOBI”. Implementasi yang pertama yaitu pada tampilan splashscreen yaitu : import java.awt.*; import javax.swing.*; public class SplashScreen extends JWindow { // private int duration; public SplashScreen(int d) { duration = d; } public void showSplash() { JPanel content = (JPanel)getContentPane(); content.setBackground(Color.white); int lebar = 650; int tinggi =170; Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); //untuk membuat posisi splasscreen berada di tengah-tengah int x = (screen.width-lebar)/2; int y = (screen.height-tinggi)/2; setBounds(x,y,lebar,tinggi); //untuk menampilkan gambar JLabel label = new JLabel(new ImageIcon("moogle.gif")); content.add(label, BorderLayout.CENTER); //memberikan warna pada border Color warna = new Color(110, 200, 10, 200); content.setBorder(BorderFactory.createLineBorder(warna, 5)); setVisible(true); try { Thread.sleep(duration); } catch (Exception e) {} setVisible(false); } public void showSplashAndExit() { showSplash(); } public static void main(String args[]){ SplashScreen satu =new SplashScreen(3000); satu.showSplashAndExit(); } }
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
103
Kemudian buat MenuBar untuk menu file, help, skor, registrasi, dan exit. //buat menubar setJMenuBar(menuBar); menuBar.add(fileMenu); menuBar.add(helpMenu); fileMenu.add(menuNewgame); fileMenu.add(menuRegis); fileMenu.add(new JSeparator()); fileMenu.add(menuScore); fileMenu.add(menuExit); helpMenu.add(menuAbout); menuRegis.add(menuRegisNew); menuRegis.add(menuRegisView); Pada bagian coding diatas dapat dijelaskan bahwa akan dibuat suatu menu splashscreen dimana akan menggunakan sebuah gambar bernama moogle.gif dimana gambar tersebut akan muncul sebelum menu utama dengan delay waktu yang telah ditentukan oleh user. Setelah menu splashscreen, selanjutnya akan amsuk kedalama menu utama program aplikasi game puzzle ini yaitu : /* * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.lang.*; import javax.swing.KeyStroke; import static java.awt.event.InputEvent.*; import java.io.*; import java.util.*; import java.applet.*; class sokoban extends JFrame implements ActionListener, KeyListener { //pesan objek MENUBAR JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("File"); JMenu helpMenu = new JMenu("bantuan");
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
104
Pada bagian coding ini akan dijelaskan pembuatan menu utama yaitu menu file yang dimana akan di import paket-paket yang akan digunakan dalam pembuatan menu utama ini. Setelah pembuatan menu utama selesai selanjutnya akan masuk kedalam submenu dari menu utama yaitu : JMenu fileMenu = new JMenu("File"); JMenu helpMenu = new JMenu("bantuan"); JMenu keteranganMenu = new JMenu("keterangan"); JMenuItem menuNewgame = new JMenuItem("mulai game"); JMenuItem menuScore = new JMenuItem("skor tertinggi"); JMenuItem menuExit = new JMenuItem("Keluar"); JMenuItem menuAbout = new JMenuItem("Tentang"); JMenu menuRegis = new JMenu("Pendaftaran"); Pada bagian coding ini dijelaskan pembuatan submenu yang terdapat dalam menu file. Menu-menu yang terdapat dalam menu file antara lain menu new user, registration, highscore, dan exit. JMenuItem menuNewgame = new JMenuItem("mulai game"); JMenuItem menuScore = new JMenuItem("skor tertinggi"); JMenuItem menuExit = new JMenuItem("Keluar"); JMenuItem menuAbout = new JMenuItem("Tentang"); JMenu menuRegis = new JMenu("Pendaftaran"); Setelah membuat JMenu pada label Highscore, new user dan label menu start game maka dibuat posisi outputnya. Agar sewaktu dimunculkan, JWindow score tepat berada ditengah. // Pesan LABEL untuk JWindow SCORE TERTINGGI JLabel lblHScore = new JLabel("Skor Tertinggi",JLabel.CENTER); JLabel lblBlank = new JLabel(" "); JLabel lblTitle = new JLabel("Gelar",JLabel.CENTER); JLabel lblName = new JLabel("Nama",JLabel.CENTER); JLabel lblScore = new JLabel("Skor",JLabel.CENTER); JLabel lblStep = new JLabel("Langkah",JLabel.CENTER); JLabel lblKing = new JLabel("juara 1",JLabel.CENTER); JLabel lblQueen = new JLabel("juara 2",JLabel.CENTER); JLabel lblKnight = new JLabel("juara 3 ",JLabel.CENTER); JLabel lblBishop = new JLabel("juara 4",JLabel.CENTER); JLabel lblSquire = new JLabel("juara 5",JLabel.CENTER); // LABEL tambahan untuk Frame NEW USER JLabel lblNUName = new JLabel("Nama"); JLabel lblGender = new JLabel("Jenis Kelamin"); JLabel lblBOD = new JLabel("Tanggal Lahir Anda (mmm/dd/yyyy)"); JLabel lblRNUser = new JLabel("Daftar Pemain Baru",JLabel.CENTER); Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
105
// LABEL tambahan untuk Frame VIEW USER JLabel xx = new JLabel("Lihat Pemain yang Terdaftar",JLabel.CENTER); // LABEL tambahan untuk Frame VIEW USER JLabel lblSelectUser = new JLabel("Pilih Pemain"); // pemesanan JLabel MENU SCORING JLabel lblMScoringWarrior = new JLabel("Warrior"); JLabel lblMScoringStep = new JLabel("Step"); JLabel lblMScoringScore = new JLabel("Score"); JLabel lblMScoringLevel = new JLabel("Level"); JLabel lblMScoringWarriorValue = new JLabel(); // menampung isi variabel JLabel lblMScoringStepValue = new JLabel(); JLabel lblMScoringScoreValue = new JLabel(); JLabel lblMScoringLevelValue = new JLabel(); //label menu start game JLabel lblStartGameJdl = new JLabel("Flying Chocochobi Brave ",JLabel.CENTER); // pesen Label windowPlay JLabel lIsiMapLv1[][] = new JLabel[10][10]; // pemesanan PANEL2 // Panel2 Window HIGH SCORE JPanel pNorth = new JPanel(); JPanel pJudul =new JPanel(); JPanel pCenter = new JPanel(); JPanel pKet = new JPanel(); JPanel pIsiKing = new JPanel(); JPanel pIsiQueen = new JPanel(); JPanel pIsiKnight = new JPanel(); JPanel pIsiBishop = new JPanel(); JPanel pIsiSquire = new JPanel(); //PANEL2 Frame NEW USER JPanel pWindowNUser = new JPanel(); JPanel pNUserNorth = new JPanel(); JPanel pRNUser = new JPanel(); JPanel pNUserCenter = new JPanel(); JPanel pNUserCenterGender = new JPanel(); JPanel pNUserCenterBOD = new JPanel(); JPanel pNUserSouth = new JPanel(); // PANEL2 Frame VIEW REGISTERED USER JPanel pView = new JPanel(); JPanel pViewNorth = new JPanel(); // pemesanan panel2 SELECT USER JPanel pWindowSelectUsr = new JPanel(); JPanel pSelectUsrNorth = new JPanel(); JPanel pSelectUser = new JPanel(); JPanel pSelectUsrCenter = new JPanel(); JPanel pSelectUsrSouth = new JPanel();
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
106
// pemesanan TEXTFIELD JTextField txtNama = new JTextField(); JTextField VtxtNama; //pemesanan Jlist JList listUser = new JList(); //pemesanan String untuk bulan String MONTH[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Nov","Oct","Dec"}; String PlayedUser =""; int current = 0; // digunakan pada proses ViewUser, sebagai penanda posisi Current
Setelah pembuatan menu selesai selanjutnya kita akan membuat desain map untuk level yang ada pada permainan ini. Yang terlebih dahulu ditentukan adalah inisialisasi Untuk desain map dapat digambarkan terlebih dahulu seperti ini: 1111111111 1000000001 1000000301 1000000001 1000000001 1001111101 1000000001 1000020001 1000000001 1111111111 Desain map di atas adalah desain map yang ada pada level satu.Pada Pembuatan Game sokoban, penulis menggunakan Matriks 10x10 dengan array 2 dimensi dan seperti penjelasan pada bab sebelumnya simbol-simbol angka diatas dapat digambarkan pembentukkan map yang dapat diartikan sebagai berikut: 1 = batu 0 = tanah 2 = kunci 3 = gembok
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
107
Setelah penggambaran map selesai, selanjutnya akan diimplementasikan kedalam coding untuk pembuatan map yaitu : public void StartOn() { //setEnabled(true); // untuk inisialisasi variabel ulang heroPosX =1; heroPosY =1; z=0; CurrLv=1; LockLv1 = 1; LockLv2 = 2; LockLv3 = 3;StepLv1 = 50; StepLv2 = 60; StepLv3 = 70; CurrScore = 0; CurrStep = 0; lblMScoringWarriorValue.setText(""+PlayedUser); lblMScoringStepValue.setText(""+StepLv1); lblMScoringScoreValue.setText(""+CurrScore); lblMScoringLevelValue.setText(""+CurrLv); //LoadFileMap(); LoadMap(CurrLv); show(); windowStartGame.show(); windowMenuScoring.show(); windowPlayGameLv1.show(); } public void QuitOff() { windowStartGame.dispose(); windowMenuScoring.dispose(); windowPlayGameLv1.dispose(); show(); setEnabled(true); } Dan lakukan pemanggilan image icon sesuai dengan symbol masing-masing. //panggil image iconnya ImageIcon imgBatu = new ImageIcon("Images/batu1.gif"); ImageIcon imgKunci = new ImageIcon("Images/batu2.gif"); ImageIcon imgGembokLock = new ImageIcon("Images/cewe.GIF"); ImageIcon imgGembokOpen = new ImageIcon("Images/mariage.GIF"); ImageIcon imgTanah = new ImageIcon("Images/tanah.GIF"); ImageIcon imgHeroUP = new ImageIcon("Images/hero1.GIF"); ImageIcon imgHeroDOWN = new ImageIcon("Images/hero2.GIF"); Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
108
ImageIcon imgHeroLEFT = new ImageIcon("Images/hero3.GIF"); ImageIcon imgHeroRIGHT = new ImageIcon("Images/hero4.GIF") Pada coding diatas dapat digambarkan pembentukkan map level-I dimana kita akan melakukan atau meng-generate file map dan meletakkan iconicon yang ada pada file map tersebut dan meletakkan konfigurasi nama, step, level, dan high score. Setelah membuat constructor untuk desain map, maka buat coding agar map tersebut dapat berjalan dengan benar. // cek level dan gembok yang sudah selesai if(CurrLv==1) { LockLv1--; if(LockLv1==0) { CurrStep=CurrStep+(50-StepLv1); CurrScore=CurrScore+(StepLv1*100); lblMScoringScoreValue.setText(""+CurrScore); JOptionPane.showMessageDialog(windowPlayGameLv1,"Selamat!!, "+CurrLv+" Diselesaikan","Message",JOptionPane.INFORMATION_MESSAGE);
Level Telah
CurrLv=2; LoadMap(CurrLv); lblMScoringLevelValue.setText(""+CurrLv); lblMScoringStepValue.setText(""+StepLv2); //System.out.println("CurrLv = "+CurrLv); } } // Pengurangan step if(CurrLv==1) { StepLv1--; lblMScoringStepValue.setText(""+StepLv1); } // LV1 if(CurrLv==1) { for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { mapData[i][j]=mapData1[i][j]; if(mapData1[i][j]==0)
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
109
{ lIsiMapLv1[i][j].setIcon(imgTanah); else if(mapData1[i][j]==1) { lIsiMapLv1[i][j].setIcon(imgBatu); } else if(mapData1[i][j]==2) { lIsiMapLv1[i][j].setIcon(imgKunci); } else if(mapData1[i][j]==3) { lIsiMapLv1[i][j].setIcon(imgGembokLock); } else if(mapData1[i][j]==4) { mapData1[i][j]=3; lIsiMapLv1[i][j].setIcon(imgGembokLock); }
}
//lIsiMap[i][j].setBorder(BorderFactory.createLineBorder(Color.GRAY)); //pPlayGamePapanLv1.add(lIsiMapLv1[i][j]); } } }// ENDED lv==1 Uji Coba Untuk melakukan uji coba program game puzzle ini, pertama jalankan aplikasi terlebih dahulu, selanjutnya setelah aplikasi dijalankan, maka pemain akan berada pada tampilan splashscreen terlebih dahulu.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
110
Keterangan: Setelah tampilan splashscreen, selanjutnya pemain berada pada menu utama permainan yaitu menu file yang digunakan sebagai menu untuk memilih menumenu lainnya seperti menu new game (digunakan untuk memulai Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
111
permainan dengan menggunakan pemain yang sudah ada), registration (digunakan untuk meregistrasi nama pemain yang diinginkan), highscore (digunakan untuk melihat skor tertinggi dalam permainan ini), dan exit (digunakan untuk keluar dari program). Setelah memilih menu, pemain akan memulai game mulai dari level-I hingga level-VII dan sampai terjadi 3 kondisi yaitu : Kondisi 1 jika pemain dapat menyelesaikan level permainan (level completed). Kondisi ini jika pemain dapat menemukan kunci dan membuka gembok dan memiliki sisa langkah (step). Kondisi 2 jika pemain kalah dalam permainan (Game Over). Kondisi ini terjadi jika pemain tidak bisa membuka gembok dengan kunci dan pemain kehabisan langkah hingga 0. Kondisi 3 jika pemain dapat menyelesaikan semua level dalam game puzzle ini (Win The Game). ). Kondisi ini jika pemain dapat menemukan kunci dan membuka gembok dan memiliki sisa langkah (step), serta dapat menyelesaikan semua level yang disediakan. 5. PENUTUP Kesimpulan Aplikasi game puzzle Sokoban “FLYING CHOCOCHOBI” ini memberikan suatu variasi baru permain game berkarakteristik puzzle game. Setelah melihat pada game sokoban yang berjalan masih memiliki kelemahan-kelemahan yang membuat game ini menjadi kurang diminati oleh para penikmat game, khususnya dalam kategori game puzzle sokoban. Kekurangan-kekurangan itu Antara lain dalam segi suara, grafik yang terlihat kaku, dan juga konsep permainan yang itu-itu saja. Maka dalam penulisan ini, penulis berhasil menyelesaikan masalah-masalah tersebut, seperti penambahan suara dalam permainan dan grafik yang lebih hidup serta konsep permainan yang belum ada dari sokoban sebelumnya, serta penambahan menu score and rating pemain sehingga pemain bisa melihat skor permainannya memainkan game sokoban ini. Dan tentunya game ini bisa lebih baik dan lebih bagus untuk dimainkan dibandingkan versi game sokoban sebelumnya. Saran Aplikasi . game puzzle Sokoban “FLYING CHOCOCHOBI” ini masih mengalami beberapa kekurangan seperti kesulitan dalam setiap level yang disediakan terkesan masih terlalu mudah untuk dimainkan, sehingga saat melakukan penelitian ada beberapa user yang merasa tidak terlalu tertantang untuk memainkan game ini. Pemilihan image karakter hanya itu-itu saja sedangkan dalam proses pendaftaran karakter, user diberikan pilihan tipe karakter apa yang ingin user mainkan sehingga masih harus melakukan perbaikan dalam segi levelisasi permainan, karakter, serta ditambahkan
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
112
beberapa variasi kesulitan dalam setiap level sehingga user dapat bermain dalam beberapa level kondisi seperti yang user inginkan. DAFTAR PUSTAKA BUKU Agustinus Nilwan, Pemrograman Animasi dan Game Profesional, PT. Elex Media Komputindo, Jakarta, 2006. Ahmad Suhendar, Visual Modeling Menggunakan UML dan Rasional Rose. Informatika. Bandung, 2002. Budi Raharjo, Mudah Belajar Java, Penerbit Informatika, Bandung. 2009. Hakim, S., Rachmad, Sutarto, Mastering Java, PT. Elex Media Komputindo, Jakarta, 2009. Irawan, Java Untuk Orang Awam, MAXIKOM, Palembang. 2007. Kadir, Abdul,2007. Dasar Pemrograman JAVA™ 2, Ed. II, Penerbit ANDI, Yogyakarta. Prasetyo, Didi Dwi. 150 Rahasia Pemrograman JAVA, PT. Elex Media Komputindo, Jakarta, 2007. Wahana Komputer. Pengembangan Aplikasi Database berbasis JavaDB dengan Netbeans, Penerbit Andi. Yogyakarta. 2010. ARTIKEL http://en.wikipedia.org/wiki/Sokoban, 10 Mei 2010. http://en.wikipedia.org/wiki/Flowchart,15 Maret 2010. http://www.pimpernel.com/sokoban/, 13 Mei 2010. http://www.java-tips.org/java-se-tips/javax.swing/how-to-implementasplashscreen-for-an-applic-2.html, 15 April 2010.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Informatika dan Manajemen STMIK Sumedang
113