Pages

Analisa dan Pembahasan Pembuatan Game Wordix




Penulisan Ilmiah Ane nih Gan,,,


 
ANALISA DAN PEMBAHASAN GAME WORDIX

3.1 Gambaran Umum Aplikasi
Permainan Wordix adalah sejenis permainan tetris yang dikenal oleh  masyarakat, dalam tetris Wordix ini berbeda dengan tetris yang biasanya berbentuk balok disini tetris Wordix berbentuk huruf. Permainanan Wordix ini cocok dimainkan oleh semua kalangan mulai dari anak-anak hingga dewasa karena pemainan ini  dapat melatih dalam belajar, permainan ini bukan sekedar bermain saja tetapi ada pembelajaran dalam bermain game yang pertama dalam mengasah daya ingat dan menghafal.
Tatacara bermainnya huruf akan jatuh ke kanan, kiri, atas dan bawah yang digerakan oleh navigasi. Untuk dapat memenangkan permainan tetris ini, maka pemain dituntun untuk dapat menyusun kata dari huruf-huruf yang berjatuhan sehingga membentuk kata dalam bahasa inggris.
Permainan tetris ini adalah mobile game artinya permainan yang diaplikasikan pada perangkat bergerak (handphone), sehingga game ini dapat dimainkan dimana saja dan kapan saja
               
3.2              Perencanaan Game Wordix
35
 
            Hal pertama yang dilakukan penulis dalam pembuatan game ( permainan ) adalah menentukan alur permainan dari permainan ini, kemudian penulis menentukan bentuk atau tampilan pada aplikasi permainan ini, dalam hal ini penulis memakai tampilan ( interface ) 2 dimensi . Game ini dibuat dengan menggunakan bahasa pemrograman Java, maka bagian – bagian dari game tersebut harus disimpan didalam folder/ tempat yang sama dengan bagian utama dari game ini dan tidak boleh dipisah dari folder/tempat script game ini karena jika bagian – bagian pendukung dari game ini maka permainan tersebut tak akan dapat bisa berjalan .
3.3    Persiapan pembentukan aplikasi
Untuk membuat aplikasi ini Penulis membutuhkan beberapa perangkat lunak atau software dan perangkat keras atau hardware.

3.3.1 Spesifikasi Hardware dan Software
Adapun perangkat komputer yang penulis gunakan dalam proses perancangan, pembuatan sampai implementasi program adalah sebagai berikut :
Hardware:
a.       Prosesor Intel Pentium E5300 2,60 GHz
b.      Memory (RAM) 2GB DDR2
c.       Harddisk 640 GB SATA
d.      Monitor LCD 17”  resolusi 1440 x 900

Software:
a.       Windows XP SP3
b.      Java Software Development Kit ( JSDK ) 1.5
c.       Java Runtime Environment (JRE) versi 6
d.      J2ME Wireless Toolkit 2.5.2
e.       JCreator LE 3.50
Sedangkan ponsel yang digunakan penulis untuk pengimplementasian program memiliki spesifikasi sebagai berikut:
Nokia E63
-          Sistem operasi Symbian OS versi 9.3 (S60 3rd Edition Feature Pack 2)
-          Layar 2.36 inch resolusi 320X240 QVGA
-          Java™ MIDP 2.0, CLDC 1.1, 3D API, PIM API, API akses file
-          Memori internal 260MB, eksternal MicroSDHC 4G

3.4 Struktur Navigasi 

Game Wordix ini mula-mula akan menampilkan halaman pembuka dan dilanjutkan ke halaman menu utama didalam menu terdapat start untuk mulai permainan, setting untuk menentukan level dan help digunakan untuk cara bermain. Yang menampilkan level baru dan pengaturan kecepatan dalam bermain game tersebut. Jika permainan dimulai, tampilan beralih ke halaman permainan. Pada halaman ini pengguna dapat membatalkan permainan dan kembali ke halaman menu, permainan pada saat game ini pertama kali dibuka atau diakses. Halaman akhir permainan berisi tentang score yang telah didapatkan.


3.5 UML
3.5.1 Use case diagram
Diagram digunakan untuk menggambarkan pengguna aplikasi dan perilaku pengguna terhadap aplikasi. Pengguna aplikasi diwakili oleh aktor, sedangkan perilakunya diwakili oleh use case.

3.5.2    Class Diagram
Diagram class dari aplikasi ini menunjukkan objek-objek yang terdapat dalam system serta keterhubungan antar objek pada gambar terdapat empat class, yaitu class Wordix, class WordixCanvas, class Settings, dan class SettingsForm dimana masing-masing dari class memiliki katerhubungan dengan class MIDlet induk, dimana yang menjadi class induk di sini adalah class Wordix.java.
 Gambar berikut akan memperlihat hubungan antar class tersebut.
3.5.3    Activity Diagram
Activity diagram digunakan untuk menggambar aktivitas pengguna aplikasi. Pertama kali pengguna akan melihat tampilan halaman pembuka, kemudian masuk ke halaman petunjuk permainan, setelah itu masuk kedalam tampilan menu permainan sampai permainan mendapatkan sebuah score.
 
3.6 Rancangan Halaman Permainan
            3.6.1 Halaman Menu Permainan
            Halaman menu menyediakan tiga pilihan, yaitu start yang digunakan untuk mulai permainan, setting digunakan untuk menentukkan level dan help digunakan untuk cara permainan.
 
3.6.2 Halaman Papan Permainan
Halaman papan permainan berupa antarmuka grafis dari permainan Game Wordix. Dalam permainan Wordix kita harus menginggat sebuah catalog yang diberikan sebelum memulai permainan. Karena permainan game ini akan mengasah daya ingat apabila catalog yang diberikan telah sesuai minimal dua maka akan mendapatkan score.

3.6.3 Rancangan Halaman skor
Halaman akhir menampilkan pesan jumlah score yang telah didapatkan dalam bermain Wordix

3.7      Membuat Project Aplikasi
Untuk mengembangkan aplikasi MIDlet, Sun Microsystem menyediakan paket bantu, yaitu Java Wireless Toolkit yang terdiri atas instalasi MIDP, KToolbar, dan beberapa simulator perangkat MID hipotetik untuk melakukan pengujian. Perusahaan pembuat perangkat MID juga menyediakan program bantu pengembangan serta simulator peralatan yang diproduksi oleh mereka yang dapat digabungkan dengan Java Wireless Toolkit milik Sun Microsystem.
         Sebelum dapat menggunakan Java Wireless Toolkit, terlebih dahulu Java 2 Software Development Kit (SDK) harus sudah terinstalasi. Jika belum maka gunakan file setup Java 2 SDK yang dapat diambil secara cuma-cuma dari situs web Sun Microsystem di java.sun.com.

 
Gambar 3.8 KToolbar

            Untuk membuat proyek aplikasi J2ME klik tombol New Project hingga muncul jendela seperti pada gambar 3.7 Ketikkan ”Wordix” pada nama proyek dan nama kelas MIDlet lalu klik Create Project, nama kelas yang tersebut merupakan turunan dari MIDlet (extend MIDlet).
 
                                          Gambar 3.9 New Project
 
                Setelah proses membuat proyek selesai maka pada direktori  C:\Documents and Settings\Administrator\j2mewtk\2.5.2\apps akan terbentuk sebuah direktori dengan nama sesuai nama project yang baru saja dibuat. Dalam direktori tersebut akan terdapat direktori – direktori sebagai berikut :
  • Direktori bin yang merupakan tempat file MANIFEST.MF, file JAD, file JAR.
  • Direktori lib untuk meletakkan file – file library (biasanya berupa file JAR).
  • Direktori res untuk meletakkan file – file resource seperti file gambar maupun suara.
  • Direktori src untuk meletakkan file – file source code.
  • File project.properties yang menyimpan setting MIDlet.

3.8 Penulisan Kode Sumber
Penulisan kode sumber Java yang dibutuhkan dalam membuat MIDlet dapat mempergunakan teks editor apa saja. Untuk membangun aplikasi permainan ini, penulis mempergunakan editor JCreator. Kode sumber tersebut harus disimpan pada folder ‘src’ yang berada di dalam folder project yang terletak di C:\Documents and Settings\Administrator\j2mewtk\2.5.2\apps\Wordix. Penamaan file sumber tersebut harus sama dengan class atau interface yang terdapat didalamnya dengan akhiran ‘.java’. Perlu diingat bahwa class utama untuk aplikasi midlet tersebut harus ada dan dideklarasikan dengan modifier ‘public’. Jika tidak, perangkat MID tidak dapat menjalankan aplikasi MIDlet tersebut.



Gambar 3.10 Tampilan JCreator

3.9 Pemograman Permainan
Kode sumber diperlukan untuk mengimplementasikan aplikasi permainan Wordix. Pada bagian ini dibahas analisis empat buah kode sumber, yaitu Wordix.java, SettingForm.java, Setting.java, dan WordixCanvas.java

3.9.1 Midlet Wordix.java
            Kode sumber “Wordix.java”  ini  merupakan Midlet induk dari permainan  Wordix.
Pada kode sumber ini terdapat perintah - perintah yang akan dijelaskan menurut fungsinya, seperti :
Subclass untuk mengimplementasikan perintah pada MIDLet
public class Wordix extends MIDlet implements CommandListener 
{
    static Command CONTINUE_CMD = new Command("Continue", Command.SCREEN, 1);
    static Command START_CMD = new Command("Start", Command.SCREEN, 1);
    static Command STOP_CMD = new Command("Stop", Command.SCREEN, 1);
    static Command QUIT_CMD = new Command("Exit", Command.BACK, 3);
    static Command HELP_CMD = new Command("Help", Command.HELP, 4);
    static Command SETTINGS_CMD = new Command("Setting", Command.SCREEN, 2);
    static Command BACK_CMD = new Command("Back", Command.BACK, 1);
    static Command SAVE_CMD = new Command("Save", Command.SCREEN, 1);
    static final String STORE_NAME = "FebyDwiS_WORDIX";
    static final int    MAX_DICTIONARY_SIZE = 24000;
    static final int    MAX_WORDS = 6000;
    String helpText = "Play tetris with words: create words from falling letters";
    static Image logoImage;

    static {
        try {
                       logoImage = Image.createImage("/logo.png");
        } catch (java.io.IOException err) {}
    }
Subclass didalam kontruktor utama terdapat beberapa pembuatan sebuah nama form, penamambahan dalam pembuatan sebuah logo dan penambahan dalam pembuatan sebuah menu.
    public Wordix()
    {
        main = new Form("FebyDwiS_Wordix");
        rand = new Random();
        main.append(new ImageItem(null, logoImage, ImageItem.LAYOUT_CENTER, "FebyDwis_Wordix"));
        main.addCommand(START_CMD);
        main.addCommand(HELP_CMD);
        main.addCommand(SETTINGS_CMD);
        main.addCommand(QUIT_CMD);

Subclass yang digunakan untuk  mendapatkan method dalam kolom dengan definisi array menjadi sebuah matrix.
public int getColumnWordLength(byte[][] matrix, int x, int y) {
        byte[] b = matrix[x];
        byte[] d = dictionary;
        int len = b.length;
        int l = 0;
        int r = n_words;
        int i, j, rr, m;
        do {
            m = (l + r) >>> 1;
            j = words[m];
            rr = r;
            r = m;
            for (i = y; i < len; i++, j++) {
                if (d[j] == '\n') {
                    return i - y;
                }
                int diff = d[j] - b[i];
                if (diff < 0) {
                    l = m + 1;
                    r = rr;
                    break;
                } else if (diff > 0) {
                    break;
                }
            }
        } while (l < r);
  
        return 0;
    }

Subclass untuk menghentikkan aplikasi.
protected void destroyApp(boolean unconditional)
    {
        if (game != null) {
            game.stop();
        }
        closeStore();
        main = null; }
Subclass yang digunakan untuk berhenti didalam kelas utama.        
protected  void pauseApp()
    {
        if (game != null) {
            game.stop();
        }
    }

Subclass untuk memulali aplikasi.
protected void startApp()
    {   
        Display display = Display.getDisplay(this);
                main.setCommandListener(this);
        display.setCurrent(main);
        if (store == null) {
            openStore();
        }
    }

Subclass yang digunakan untuk menu setting yang akan diolah ke dalam database setelah kita save
private void openStore() {
        try {
            try {
                store = RecordStore.openRecordStore(STORE_NAME, false);
                loadSettings();
            } catch (RecordStoreNotFoundException x) {
                store = RecordStore.openRecordStore(STORE_NAME, true);
                initializeSettings();
            }
        } catch(Exception x) {
            settings = new Settings();
        }
    }

Subclass yang akan digunakan untuk pemiihan menu.
public void commandAction(Command c, Displayable d)
    {
        if (c == START_CMD) {
            game = new WordixCanvas(this);
            game.start();
        } else if (c == HELP_CMD) {
            Alert help = new Alert("Bantuan", helpText, null, AlertType.INFO);
            help.setTimeout(Alert.FOREVER);
            Display.getDisplay(this).setCurrent(help, main);
        } else if (c == QUIT_CMD) {
            destroyApp(true);
            notifyDestroyed();
        } else if (c == SETTINGS_CMD) {
            new SettingsForm(this, main);
        }
    }
}



3.9.2 WordixCanvas.java
Method kontruktor yang terdapat beberapa pembuatan dalam setting permaianan , pemilihan sebuah huruf yang digunakan dan style
public WordixCanvas(Wordix game) {
        this.game = game;
                   delay = MAX_DELAY - game.settings.level*MAX_DELAY/Settings.LEVELS;
                width = getWidth();
                height = getHeight();
        rand = new Random();
                font = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);
        stepy = font.getHeight();
        stepx = font.charWidth('w');
        rows = height / stepy;
        columns = width / stepx;
        x0 = columns >>> 1;
        y0 = rows >>> 1;
        matrix = new byte[columns][rows];
        next();
         ddCommand(Wordix.STOP_CMD);
        addCommand(Wordix.BACK_CMD);
        repaintAll = true;
        display = Display.getDisplay(game);
    }

Subclass yang digunakan untuk memulai sebuah permainan apabila memilih menu start
void start() {        
        running = true;
        new TickThread().start();       
        setCommandListener(this);
        display.setCurrent(this);
    }
Subclass yang digunakan untuk mengacak sebuh kata yang akan jatuh
private void findWord(Graphics g) {
        int i = x;
        int j = y;
        while (i >= 0 && matrix[i][j] != 0) {
                   int len = game.getRowWordLength(matrix, i, j);
            if (len > 0) {
                g.setColor(WHITE);
                g.fillRect(i*stepx, j*stepy, stepx*len, stepy);
                while (--len >= 0) {
                    matrix[i++][j] = 0;
                }
                return;
            }
            i -= 1;
        }

Subclass yang digunakan untuk navigasi kiri, kanan , atas dan bawah
public void keyPressed(int keyCode) {
        switch (getGameAction(keyCode)) {
        case LEFT:
            dx = -1;
            dy = 0;
            break;
        case RIGHT:
            dx = 1;
            dy = 0;
            break;
        case UP:
            dx = 0;
            dy = -1;
            break;
        case DOWN:
            dx = 0;
            dy = 1;
        }
    }

Subclass yang digunakan untuk menampilkan akhir dari permainan
    void gameOver() {
        String title = "Game Over";
        running = false;

Apabila  permaianan sudah game over maka nilai akan keluar selanjutnya game tersebut akan menghapus nilai yang  tadi dengan yang baru lagi
        if (result > game.settings.result) {
            game.settings.result = result;
            game.saveSettings();
            title = "New record";
        Alert a = new Alert(title, "Nilai Yang di Dapat: " + result, null, AlertType.INFO);
        a.setTimeout(Alert.FOREVER);// jiaka 
        display.setCurrent(a, game.main);

3.9.3 Setting.java
Subclass database yang di gunakan dalam pennyimpanan sebuah nilai yang telah di peroleh dari permaian
public class Settings {
    int level;
    int result;
    byte[] pack() {
           byte[] record = new byte[3];
        record[0] = (byte)level;
        record[1] = (byte)(result >> 8);
                record[2] = (byte)result;
        return record;
    }
    void unpack(byte[] record) {
        level = record[0];
        result = (record[1] << 8) | (record[2] & 0xFF);
    }
        static final int LEVELS = 10;
    Settings(byte[] record) {
        unpack(record);
    }
    Settings() {
        level = 0;
        result = 0;
    }
}          

3.9.4 SettingsForm.java
Subclass SettingsForm digunakan dalam menu apabila memilih sebuah setting yang terdapat level
public class SettingsForm extends Form implements CommandListener
{
    Wordix      game;
    Displayable parent;
    Gauge       level;

    SettingsForm(Wordix game, Displayable parent)
    {
        super("Setting");       
        this.game = game;
        this.parent = parent;

Subclass yang digunakan  pembuatan obyek gauge
        level = new Gauge("Level", true, Settings.LEVELS, game.settings.level);
digunakan apabila menambah gauge baru
        append(level);

        setCommandListener(this);
digunakan untuk menambah addcommand
        addCommand(Wordix.BACK_CMD);
        addCommand(Wordix.SAVE_CMD);
                Display.getDisplay(game).setCurrent(this);
    }
          

    public void commandAction(Command c, Displayable d)
    {       
Method ini namanya command action dengan inisial c untuk  tombol command dan apabila memilih menu save maka akan tampil
        if (c == Wordix.SAVE_CMD) {
            game.settings.level = level.getValue();
            game.saveSettings();
        } else if (c != Wordix.BACK_CMD) {
            return;
        }
        Display.getDisplay(game).setCurrent(parent);
    }
}

3.10 Kompilasi, Pengujian, Dan Pemaketan
Jika semua file sumber selesai dibuat, maka proses kompilasi dan pemaketan dapat dilakukan. Proses kompilasi adalah proses penerjemahan file sumber Java menjadi bentuk bytecode Java. Sedangkan pemaketan adalah penggabungan file-file bytecode hasil kompilasi beserta resource yang disertakan dalam project tersebut kedalam satu file Java Archive (JAR).
Berikut ini adalah langkah-langkah untuk melakukan kompilasi program yang telah dibuat.
1.      Jika project belum terbuka, maka buka project tersebut dengan memilih tombol ‘Open Project’ atau dengan memilih menu File>Open Project.


Gambar 3.11 Open Project
2. Pilih project yang akan dibuka.











Gambar 3.12 Pemilihan project yang akan dibuka
3. Lakukan kompilasi dengan menekan tombol Build. Jika program sukses di kompilasi maka akan muncul pesan.
Gambar 3.13 Build complete
Setelah proses kompilasi selesai, penulis melakukan pengujian terhadap program yang telah dibuat dengan langkah-langkah sebagai berikut:
1.      Lakukan pengujian dengan menjalankan program dengan menekan tombol “RUN”
 
Gambar 3.14 Run project
  Kemudian akan muncul tampilan simulator sebagai berikut
Gambar 3.15 Pengujian aplikasi
Jika aplikasi telah berjalan dengan baik, maka dapat dilakukan pemaketan dengan langkah langkah sebagai berikut:
1.      Pilih menu Project>Package>Create Package.
 
Gambar 3.16 Pembuatan Package
2.   Pada layar konsol akan tampil informasi proses kompilasi. Jika terdapat kesalahan, maka pesan kesalahan tersebut akan tampil pula pada layar konsol ini. Jika proses pemaketan berhasil, akan tampil informasi seperti berikut ini:
Gambar 3.17 Pemaketan aplikasi

Proses kompilasi dan pemaketan akan menghasilkan dua berkas. Yang pertama yaitu berkas JAR yang merupakan berkas yang berisi seluruh bytecode class yang dipergunakan dalam aplikasi midlet tersebut beserta resource-nya. Yang kedua adalah berkas JAD yang berisi keterangan mengenai paket JAR itu sendiri. Keterangan itu berupa nama midlet, penulis, versi, ukuran, dan lain sebagainya.
Berkas JAD inilah yang pertama kali akan dibaca oleh perangkat MID ketika melakukan proses download. Jika disetujui oleh pengguna, maka dilanjutkan dengan pengambilan  berkas JAR-nya.

3.11     Spesifikasi Kemampuan Perangkat
Dalam membuat aplikasi permainan dengan J2ME, perlu diperhatikan perangkat dimana aplikasi permainan tersebut akan dijalankan. Hal ini untuk mendapatkan informasi mengenai kemampuan apa saja yang mungkin untuk dimanfaatkan dari perangkat tersebut yang sangat bervariasi. Hal yang patut diperhatikan dari kemampuan perangkat yang akan digunakan adalah :
1.      Resolusi layar.
2.      Jumlah warna yang mampu ditampilkan.
3.      Ukuran maksimum dari aplikasi yang diperkenankan.
4.      Susunan dari tombol pada perangkat tersebut.
Aplikasi permainan yang dibangun ini tidak diperuntukan untuk spesifik pada satu model ponsel saja, melainkan dapat dijalankan pada bermacam-macam model ponsel yang memiliki spesifikasi sebagai berikut :
1.      Java MIDP 2.0.
2.      Resolusi layar minimum 176X220.
3.      Ruang kosong pada memori sekitar 150KB.
4.      Layout keypad Alphanumeric.
Namun tidak tertutup kemungkinan, bahwa aplikasi ini dapat berjalan pada ponsel dengan layout keypad QWERTY, karena penulis sukses menguji-coba aplikasi ini pada ponsel Nokia E63 yang memiliki layout keypad QWERTY.
3.12     Instalasi Pada Ponsel
            Untuk melakukan instalasi pada ponsel Nokia E63, penulis tidak mempergunakan aplikasi apapun, hanya menggunakan kabel data Nokia CA-101 yang disambungkan ke port USB pada PC. Ketika ponsel dihubungkan dengan PC, ponsel meminta penulis untuk menentukan mode sambungan USB, yang akan menentukan fungsi ponsel yang terbaca oleh PC. Penulis memilih mode “Mass Storage”, yang membuat ponsel terdeteksi sebagai media penyimpanan tidak tetap, karena penulis hanya ingin menyalin file .jar-nya saja  yang merupakan file installer aplikasi ini dari PC penulis ke kartu memori ponsel.





Gambar 3.18 Penyalinan file instalasi ke kartu memori ponsel

      Setelah file instalasi selesai disalin ke kartu memori, penulis melepaskan sambungan kabel data ponsel ke PC. Kemudian dengan bantuan program file manager yang ada pada ponsel, penulis melakukan instalasi program pada ponsel.