Rabu, 27 Februari 2013


PENGERTIAN JAVA BEAN


1. Apakah Enterprise Java Bean itu?
Secara singkat Enterprise Java Bean merupakan komponen software server-side yang menyederhanakan proses pembuatan komponen aplikasi terdistribusi untuk skala enterprise. Pada dasarnya Enterprise Java Bean bukanlah merupakan suatu produk jadi tetapi merupakan spesifikasi atau blueprint teknologi untuk komponen software yang menjadi bagian dari teknologi J2EE.
Menurut Sun Microsystem definisi EJB adalah:
“Aristektur Enterprise JavaBeans adalah arsitektur komponen untuk development dan deployment dari aplikasi bisnis terdistribusi berbasis komponen. Aplikasi yang dibuat dengan artistektur Enterprise JavaBeans adalah skalabel, transaksional, dan multiuser yang aman. Aplikasi-aplikasi ini mungkin ditulis sekali dan dideploy pada berbagai platform server yang mendukung spesifikasi Enterprise JavaBeans.”

2. Latar Belakang EJB
Berangkat dari kebutuhan aplikasi berskala enterprise yang mendayagunakan sistem terdistribusi dengan banyak user atau pengguna dalam suatu saat maka lahirlah EJB.
Sebelum adanya spesifikasi EJB, perusahaan seringkali membangun middleware sendiri di mana proses development untuk middleware sangatlah kompleks karena harus memperhatikan berbagai aspek, seperti transaksi, mekanisme penyimpanan data persisten, sinkronisasi, resource polling, networking, dan sebagainya. Aplikasi yang berjalan pada middleware harus memanggil API yang diperlukan secara eksplisit apabila ingin mengatur transaksi, menyimpan data, melakukan resource polling, dsb.
Tentu hal ini menyulitkan developer dalam menghasilkan aplikasi bisnis yang berjalan di atas middleware. Terlebih lagi tidak adanya standar atau spesifikasi global sehingga API dari suatu middleware tidaklah sama atau mungkin tidak tersedia pada middleware lain.
Middleware menyediakan service seperti berikut:
  1. Remote Method Invocation
  2. Load Balancing
  3. Transparent fail-over
  4. Integrasi Back-end
  5. Transaksi
  6. Clustering
  7. Dynamic redeployment
  8. Clean shutdown
  9. Logging dan auditing
  10. Manajemen Sistem
  11. Threading
  12. Message-oriented middleware
  13. Siklus hidup objek
  14. Resource polling
  15. Security
  16. Caching
  17. dll
Oleh karena banyaknya hal dan masalah yang harus dapat dilayani oleh suatu middleware untuk aplikasi berskala enterprise maka Sun Microsystem mendefinisikan suatu spesifikasi di mana suatu aplikasi yang memenuhi spesifikasi tersebut dapat dibuat tanpa harus menuliskan kode program secara eksplisit untuk menangani berbagai hal terkait dengan kemampuan yang disediakan middleware karena aplikasi dengan arsitektur EJB dapat mendayagunakan berbagai fungsi middleware yang dimanajemen oleh application server secara otomatis. Jadi dalam aplikasi yang menggunakan EJB kita akan memerlukan software khusus yang berjalan di server yang sering disebut application server di mana application serverlah yang menyediakan berbagai fungsi dan layanan middleware.
3. Kelebihan EJB
EJB memiliki kelebihan-kelebihan sebagai berikut:
•  Teknologi EJB merupakan standar teknologi dan spesifikasi yang telah disetujui oleh industri dunia. Oleh karena itu hal ini sangat menguntungkan berbagai industri terkait, baik yang mendayagunakan EJB maupun vendor yang menyediakan jasa development atau tool pendukung EJB
•  Portabilitas yang tinggi. Spesifikasi EJB dipublikasikan secara umum dan tersedia gratis sehingga banyak vendor yang mengerti arsitektur EJB dengan baik dan akibatnya memunculkan banyak vendor application server untuk EJB maupun developer aplikasi EJB.
•  Rapid application development. Aplikasi dapat dibuat lebih cepat karena layanan atau kemampuan middleware yang rumit dapat diperoleh dari application server.
4. Macam EJB
Enterprise Java Bean terdiri dari 3 macam yaitu:
•  Sesson Beans
Session Bean digunakan untuk memodelkan proses bisnis atau merupakan logik bisnis dari aplikasi. Proses yang dapat dilayani Session Bean misalnya: mendapatkan harga barang tertentu, merubah harga barang, dll.
•  Entity Beans
Entity Beans digunakan untuk memodelkan data bisnis. Apabila diistilahkan dalam kata-kata maka Entity Beans bersifat kebendaan, lain halnya dengan Session Beans yang bersifat suatu pekerjaan atau aksi.
•  Message-driven Beans
Message Driven Beans adalah hampir sama dengan Session Beans dalam sudut pandang fungsi yaitu melakukan proses bisnis atau sebagai logik bisnis. Hanya saja perbedaaanya adalah message-driven beans dijalan atau dieksekusi dengan menyampaikan “message” ke bean tersebut.

JavaBeans pada awalnya dimaksudkan sebagai komponen visual untuk membuat aplikasi GUI. Sekarang ini Javabeans meluas dan dipakai untuk seluruh lingkungan pemrograman Java, termasuk JSP (Java Server pages) dan EJB (Enterprise Java Beans). Dalam pemakaian aplikasi Web seperti JSP dan EJB, kita tidak memakai komponen JavaBeans visual yang memakai komponen GUI dan AWT; melainkan kita memakai JavaBeans non-visual [WIJ06].
Pada Dasarnya JavaBeans dapat dibuat dengan cara yang sama dengan pembuatan class Java standar, tetapi kelas Java Beans memiliki beberapa kententuan berikut ini:
  1. Class tersebut harus memiliki satu buah konstruktor yang tidak memakai argument.
  2. Setiap property dari JavaBeans yang akan diakses oleh public harus memiliki metode khusus untuk menentukan nilainya (metode setter), dan metode khusus untuk mengambil nilainya (metode getter).
Kalau dilihat dari penjelasan di atas, Java Beans adalah sebuah cara untuk membuatkan objek dari kelas yang dimaksud. Namun objek ini tidak langsung “frontal” dituliskan dalam halaman JSP-nya. Frontal di sini adalah dengan menggunakan sintaks “new” pada halaman JSP-nya, tetapi ada sintaks khusus untuk menggunakan sebuah instansiasi Objek JavaBeans-nya. Untuk lebih jelasnya dapat dilihat pada tampilan selanjutnya mengenai sintaks-sintaks JavaBeans.


INDEX .JSP

<%--
    Document   : index
    Created on : 27 Feb 13, 15:50:08
    Author     : Wiguno
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>setProperty</TITLE>
</HEAD>
<BODY>
<TABLE BORDER=5 ALIGN="CENTER">
<TR><TH CLASS="TITLE">
QienzRoman</TABLE>
<jsp:useBean id="entry" class="bean.Sel" />
<jsp:setProperty
name="entry"
property="itemID"
param="itemID" />
<jsp:setProperty
name="entry"
property="numItems"
param="numItems" />
<%-- WARNING! JDK 1.0.1 dan Java Web Server
mempunyai bug yang menyebabkan kegagalan
konversi tipe data
--%>
<jsp:setProperty
name="entry"
property="discountCode"
param="discountCode" />
<BR>
<TABLE ALIGN="CENTER" BORDER=1>
<TR CLASS="COLORED">
<TH>Item ID<TH>Unit Price<TH>Number Ordered<TH>Total Price
<TR ALIGN="RIGHT">
<TD><jsp:getProperty name="entry" property="itemID" />
<TD>$<jsp:getProperty name="entry" property="itemCost" />
<TD><jsp:getProperty name="entry" property="numItems" />
<TD>$<jsp:getProperty name="entry" property="totalCost" />
</TABLE>
</BODY>

Sel.java


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import javax.ejb.Stateless;


/**

 *
 * @author tohid  */
@Stateless
public class Sel {
    private String itemID = "unknown";
    private double discountCode = 1.0;
    private int numItems = 0;
    public String getItemID() {
        return (itemID);
    }
    public void setItemID(String itemID) {
        if (itemID != null) {
            this.itemID = itemID;
        } else {
            this.itemID = "unknown";
        }
    }
    public double getDiscountCode() {
        return (discountCode);
    }
    public void setDiscountCode(double discountCode) {
        this.discountCode = discountCode;
    }
    public int getNumItems() {
        return (numItems);
    }
    public void setNumItems(int numItems) {
        this.numItems = numItems;
    }
// Replace this with real database lookup.
    public double getItemCost() {
        double cost;
        if (itemID.equals("a1234")) {
            cost = 12.99 * getDiscountCode();
        } else {
            cost = -9999;
        }
        return (roundToPennies(cost));
    }
    private double roundToPennies(double cost) {
        return (Math.floor(cost * 100) / 100.0);
    }
    public double getTotalCost() {
        return (getItemCost() * getNumItems());
    }
}

Minggu, 20 Januari 2013

PBO 3



<%--
Document : index
Created on : 12 Jan 13, 11:21:03
Author : Wiguno User
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Tugas PBO3&4</title>
</head>
<body>
<p></p>
<form method="POST" action="showname.jsp">
<pre>
<font size ="5">SILAHKAN MASUKAN IDENTITAS ANDA :<br></font><br>
<font color ="Black" size="5">Nama : <input type="text" name="username" size="20"></font><br>
<font color ="Black" size="5">Tempat, Tempat Lahir : <input type="text" name="pass" size="20"></font><br>
<font color ="Black" size="5">Alamat : <input type="text" name="alamat" size="20"></font><br>
<font color ="Black" size="5">Kelas : <input type="text" name="kelas" size="20"></font><br>
<font color ="Black" size="5">Motto : <input type="text" name="motto" size="20"></font><br>
<input type ="submit" value="Submit" name="B1">
</pre>
<p>
</p>
</form>
</body>
</html>  LANJUTANYA DIBAWAH >>>>>>
<%--
Document : showname
Created on : 12 Jan 13, 11:27:26
Author :Wiguno User
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<p></p>
<pre>
<font size ="5"> INI ADALAH IDENTITAS ANDA :<br></font><br>
<font size ="5"> Nama : <%= request.getParameter("username")%></font><br>
<font size ="5"> Tempat, Tanggal Lahir : <%= request.getParameter("pass")%></font><br>
<font size ="5"> Alamat : <%= request.getParameter("alamat")%></font><br>
<font size ="5"> Kelas : <%= request.getParameter("kelas")%></font><br>
<font size ="5"> Motto : <%= request.getParameter("motto")%></font><br>
</pre>
</body>
</html>

Jumat, 18 Januari 2013

TUTORIAL PEMBUATAN GAME J2ME


TUTORIAL PEMBUATAN GAME J2ME


Nama : Wiguno budi r.
Nim : ( 100 40 174 )

Politeknik
Harapan bersama
tegal
TUTORIAL PEMBUATAN GAME J2ME


 A.MEmbuat Game Dengan NetBeans

 1.kIta Harus Menyiapkan Gambar .png Terlebih Dahulu

  



2.Setelah disiapkan,Kita mulai membuatnya dengan Netbean;
Step 1 masuk pada aplikasi NetBeans, selanjutnya pilih New Project akan muncul tampilan seperti ini, lalu next.
           Kita Pilih JavaME lalu Next.


Step 2 isi nama Project sesuai keinginan, contoh Muhammad_Muttaqien, lalu next.

Step 3 Kita plih MIDP-2.0 lalu finish.



Step 4 setelah finish akan tampil seperti gambar dibawah ini, klik kanan pada Soucre Packages, pilih New lalu pilih MIDlet….



Step 5 beri nama Class, missal MIDlet, kemudian finish.

Lalu kiya isikan scrip ddlm MIDlet tsbt
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
 * @author Taqienz
 */
public class Midlet extends MIDlet {
    Game x;
    MenuUtama mu;
    Instruksi i;
    Tentang t;
    Display d = Display.getDisplay(this);

    public Midlet() {
        mainMenu();
    }

    public void startApp() {
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void kosongkan() {
        if(x != null){
            x.stop();
            x = null;
        }
        if(i != null){
            i.stop();
            i = null;
        }
        if(mu != null){
            mu.stop();
            mu = null;
        }
        if(t != null){
            t.stop();
            t = null;
        }
    }

    public void mainMenu(){
        kosongkan();
        mu = new MenuUtama(this);
        mu.start();
        d.setCurrent(mu);
    }

    public void mainkan(){
        kosongkan();
        x = new Game(this);
        x.start();
        d.setCurrent(x);
    }

    public void instruksi(){
        kosongkan();
        i = new Instruksi(this);
        i.start();
        d.setCurrent(i);
    }

    public void quit() {
        destroyApp(true);
        notifyDestroyed();
    }
    void tentang() {
        kosongkan();
        t = new Tentang(this);
        t.start();
        d.setCurrent(t);

    }
}

3.Kemudian kita buat java class baru, kita ikuti langkah berikut.



Lalu ketikan koding berikut:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;
import java.util.Random;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

/**
 *
 * @author Taqienz
 */
class Game extends GameCanvas implements Runnable, PlayerListener{
    private static Player musik;
    private boolean running;
    private Sprite user;
    private Sprite enemy;
    private Sprite kastil;
    private Sprite target;
    private Sprite ammo;
    private Sprite rumput;
    private final Midlet midlet;
    private final PlayerAttrib player;
    private boolean allowUp;
    private boolean allowDown;
    private boolean allowLeft;
    private boolean allowRight;
    private PlayerAttrib[] musuh = new PlayerAttrib[] {};
    private ObjectAttrib[] amunisi = new ObjectAttrib[] {};
    private int musuhKeluar = 100;
    private int[] HPKastil = new int[] {100, 100};
    private int delaynya = 0;
    private boolean gameOver = false;
    private boolean menang = false;
    private int musuhTertembak = 0;
    private VolumeControl vc;

    public Game(Midlet midlet) {
        super(true);
        this.midlet = midlet;
        player = new PlayerAttrib(100);
        try {
            user = new Sprite(Image.createImage("/gambar/khe.png"), 32, 32);
            enemy = new Sprite(Image.createImage("/gambar/hantu.png"), 32, 32);
            target = new Sprite(Image.createImage("/gambar/aoa.png"));
            kastil = new Sprite(Image.createImage("/gambar/dijaga.png"));
            rumput = new Sprite(Image.createImage("/gambar/rumput.png"));
            ammo = new Sprite(Image.createImage("/gambar/amunisi.png"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        target.setPosition(getWidth() / 2 - target.getWidth() / 2,
                getHeight() / 2 - 16);
        kastil.setPosition(getWidth() / 2 - kastil.getWidth() / 2,
                getHeight() / 2 - kastil.getHeight() / 2);
        setFullScreenMode(true);
    }

    public void start(){
        running = true;
        Thread x = new Thread(this);
        x.start();
        try{
            playMedia("/suara/suara.mid","midi",-1);
        }catch(Exception e){}
    }

    public void stop(){
        running = false;
    }

    public void run() {
        Graphics g = getGraphics();
        while(running){
            try {
                getInput();
                if(!gameOver){
                    updateGame();
                    drawScreen(g);
                } else {
                    g.setColor(0x000000);
                    g.fillRect(0, 0, getWidth(), getHeight());
                    if(menang){
                        g.setColor(0xFFFFFF);
                        g.drawString("ANDA BERHASIL!", getWidth() / 2,
                                getHeight() / 2, Graphics.BOTTOM | Graphics.HCENTER);
                    } else {
                        g.setColor(0xFFFFFF);
                        g.drawString("ANDA GAGAL", getWidth() / 2,
                                getHeight() / 2, Graphics.BOTTOM | Graphics.HCENTER);
                    }
                    g.setColor(0xFFFFFF);
                    g.drawString("Silahkan Kembali Ke Menu Utama", getWidth() / 2,
                            getHeight() / 2 + 4, Graphics.TOP | Graphics.HCENTER);
                }
                flushGraphics();
                Thread.sleep(60);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }

    private void drawScreen(Graphics g) {
        g.setColor(0xFFFFFF);
        g.fillRect(0, 0, getWidth(), getHeight());
        user.setPosition(player.getX(), player.getY());
        user.setFrame(player.getFrame());
        rumput.paint(g);
        target.paint(g);
        for(int i = 0; i < musuh.length; i++){
            enemy.setPosition(musuh[i].getX(), musuh[i].getY());
            enemy.setFrame(musuh[i].getFrame());
            enemy.paint(g);
        }
        user.paint(g);
        kastil.paint(g);
        for(int i = 0; i < amunisi.length; i++){
            ammo.setPosition(amunisi[i].getX(), amunisi[i].getY());
            ammo.paint(g);
        }
        drawHUD(g);
    }

    private void getInput() {
        int keyState = getKeyStates();
        if(allowUp && (keyState & UP_PRESSED) != 0){
            player.setFacing(PlayerAttrib.FACING_ATAS);
            player.setY(player.getY() - 5);
        } else if(allowDown && (keyState & DOWN_PRESSED) != 0){
            player.setFacing(PlayerAttrib.FACING_BAWAH);
            player.setY(player.getY() + 5);
        }
        if(allowLeft && (keyState & LEFT_PRESSED) != 0){
            player.setFacing(PlayerAttrib.FACING_KIRI);
            player.setX(player.getX() - 5);
        } else if(allowRight && (keyState & RIGHT_PRESSED) != 0){
            player.setFacing(PlayerAttrib.FACING_KANAN);
            player.setX(player.getX() + 5);
        }
        if((keyState & FIRE_PRESSED) != 0){
            if(gameOver){
                midlet.mainMenu();
            } else {
                if(delaynya <= 0){
                    tambahAmunisi(player.getFacing());
                    delaynya = 1;
                }
            }
        }
    }

    private void updateGame() {
        if(delaynya >= 0)
            delaynya--;
        player.nextFrame();
        allowDown = true;
        allowLeft = true;
        allowRight = true;
        allowUp = true;
        if(user.collidesWith(target, false)){
            if(user.getX() < target.getX()){
                allowRight = false;
            }
            if(user.getX() + user.getWidth() > target.getX() +
                    target.getWidth()){
                allowLeft = false;
            }
            if(user.getY() < target.getY()){
                allowDown = false;
            }
            if(user.getY() + user.getWidth() >
                    target.getY() + target.getHeight()){
                allowUp = false;
            }
        }
        musuhKeluar--;
        if(musuhKeluar <= 0){
            musuhKeluar = 75;
            tambahMusuh();
        }
        for(int i = 0; i < musuh.length; i++){
            musuh[i].setY(musuh[i].getY() + musuh[i].getCustom(0));
            musuh[i].nextFrame();
            enemy.setFrame(musuh[i].getFrame());
            enemy.setPosition(musuh[i].getX(), musuh[i].getY());
            boolean dead = false;
            if(enemy.collidesWith(target, true)){
                deleteMusuh(i);
                HPKastil[0] -= 20;
                dead = true;
            }
            if(!dead && enemy.getY() > getHeight() + 10 &&
                    enemy.getY() + enemy.getHeight() < -10){
                deleteMusuh(i);
                dead = true;
            }
        }
        for(int i = 0; i < amunisi.length; i++){
            int xSpeed = 0;
            int ySpeed = 0;

            if(amunisi[i].getCustom(0) == PlayerAttrib.FACING_ATAS){
                ySpeed = -amunisi[i].getCustom(1);
            } else if(amunisi[i].getCustom(0) == PlayerAttrib.FACING_BAWAH){
                ySpeed = amunisi[i].getCustom(1);
            } else if(amunisi[i].getCustom(0) == PlayerAttrib.FACING_KIRI){
                xSpeed = -amunisi[i].getCustom(1);
            } else if(amunisi[i].getCustom(0) == PlayerAttrib.FACING_KANAN){
                xSpeed = amunisi[i].getCustom(1);
            }

            amunisi[i].setX(amunisi[i].getX() + xSpeed);
            amunisi[i].setY(amunisi[i].getY() + ySpeed);
            amunisi[i].updateCustom(2,
                    amunisi[i].getCustom(2) + amunisi[i].getCustom(1));
            boolean terhapus = false;
            if(amunisi[i].getCustom(2) > amunisi[i].getCustom(3)){
                deleteAmunisi(i);
                terhapus = true;
            }
            if(!terhapus){
                ammo.setPosition(amunisi[i].getX(), amunisi[i].getY());
                for(int x = 0; x < musuh.length; x++){
                    enemy.setPosition(musuh[x].getX(), musuh[x].getY());
                    if(ammo.collidesWith(enemy, true)){
                        terhapus = true;
                        deleteMusuh(x);
                        deleteAmunisi(i);
                        musuhTertembak++;
                        break;
                    }
                }
            }
        }
        if(HPKastil[0] <= 0){
            gameOver = true;
            menang = false;
        }
        if(musuhTertembak >= 2){
            gameOver = true;
            menang = true;
        }
    }

    private void tambahMusuh(){
        PlayerAttrib[] musuhTmp = musuh;
        Random r = new Random();
        musuh = new PlayerAttrib[musuhTmp.length + 1];
        for(int i = 0; i < musuhTmp.length; i++){
            musuh[i] = musuhTmp[i];
        }
        PlayerAttrib musuhBaru = new PlayerAttrib(75);
        musuhBaru.setY(getHeight() + 20);
        musuhBaru.setCustom(new int[] {-2 + (-1 * r.nextInt(2))});
        musuhBaru.setFacing(PlayerAttrib.FACING_ATAS);
        if(r.nextInt(2) == 1){
            musuhBaru.setY(-enemy.getHeight()-20);
            musuhBaru.setCustom(new int[] {2 + (1 * r.nextInt(2))});
            musuhBaru.setFacing(PlayerAttrib.FACING_BAWAH);
        }
        musuhBaru.setX(20 + r.nextInt(getWidth() - 40 - enemy.getWidth()));
        musuh[musuhTmp.length] = musuhBaru;
    }

    private void deleteMusuh(int i) {
        if(musuhAda(i)){
            PlayerAttrib[] tmp = musuh;
            musuh = new PlayerAttrib[tmp.length - 1];
            int ID = 0;
            for(int x = 0; x < tmp.length; x++){
                if(x == i){
                    continue;
                }
                musuh[ID] = tmp[i];
                ID++;
            }
        }
    }

    private boolean musuhAda(int i) {
        if(i < musuh.length){
            return true;
        }
        return false;
    }


    private void tambahAmunisi(int facing){
        ObjectAttrib[] tmp = amunisi;
        Random r = new Random();
        amunisi = new ObjectAttrib[tmp.length + 1];
        for(int i = 0; i < tmp.length; i++){
            amunisi[i] = tmp[i];
        }
        ObjectAttrib amoBaru = new ObjectAttrib();
        amoBaru.setX(player.getX() + user.getWidth() / 2);
        amoBaru.setY(player.getY() + user.getHeight() / 2);
        amoBaru.setCustom(new int[] {facing, 8, 0, 200});
        amunisi[tmp.length] = amoBaru;
    }

    private void deleteAmunisi(int i) {
        if(AmmoAda(i)){
            ObjectAttrib[] tmp = amunisi;
            amunisi = new ObjectAttrib[tmp.length - 1];
            int ID = 0;
            for(int x = 0; x < tmp.length; x++){
                if(x == i){
                    continue;
                }
                amunisi[ID] = tmp[i];
                ID++;
            }
        }
    }

    private boolean AmmoAda(int i) {
        if(i < amunisi.length){
            return true;
        }
        return false;
    }

    private void drawHUD(Graphics g) {
        g.setColor(0xFFFFFF);
        g.fillRect(0, getHeight() - 30, getWidth(), 30);
        g.setColor(0x000000);
        g.fillRect(0, getHeight() - 27, getWidth(), 27);
        g.setColor(0xFFFFFF);
        g.drawString("HP:", 4, getHeight() - 21, 0);
        g.setColor(0xFF0000);
        g.fillRect(35, getHeight() - 18, getWidth() - 42, 10);
        g.setColor(0x00FF00);
        final int[] HPKastil1 = HPKastil;
        int width = (getWidth() - 42) * HPKastil1[0] / HPKastil1[1];
        g.fillRect(35, getHeight() - 18, width, 10);
    }
   
    private void playMedia(String file, String type, int loop) throws Exception {
          musik = Manager.createPlayer(getClass().getResourceAsStream(file),            "audio/"+type);
          musik.addPlayerListener(this);
          musik.setLoopCount(loop);
          musik.prefetch();
          musik.realize();
          vc = (VolumeControl)musik.getControl("VolumeControl");
          if (vc != null) {
               vc.setLevel(100);
          }
          musik.start();
  }

     public void playerUpdate(Player player, String event, Object eventData){ }
 
}

4.Kemudian buat class baruu dengan nama menu utama,intruksi,music,ObjectAtrbb,playerAtrbb,tentang.

Kemudian isikan script ddlmnya.Berikut ScriptNya:

-class Menu Utama:
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Taqienz
 */
public class MenuUtama extends Canvas implements Runnable{
    private int maxMenu = 4;
    private int menu = 0;
    private Image gambar;
    private Image gambarKursor;
    private boolean running;
    private final Midlet midlet;

    public MenuUtama(Midlet g) {
        this.midlet = g;
        try {
            gambar = Image.createImage("/gambar/mainMenu.png");
            gambarKursor = Image.createImage("/gambar/kursor.png");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        setFullScreenMode(true);
    }

    protected void paint(Graphics g) {
        g.drawImage(gambar, 0, 0, 0);
        g.drawImage(gambarKursor, getWidth() / 2, 145 + 35 * menu, Graphics.HCENTER |
                Graphics.TOP);
    }

    public void run() {
        while(running){
            try {
                repaint();
                Thread.sleep(60);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void start(){
        running = true;
        Thread t = new Thread(this);
        t.start();
    }

    public void stop(){
        running = false;
    }

    protected void keyPressed(int keyCode){
        super.keyPressed(keyCode);
        if(getGameAction(keyCode) == UP && menu > 0){
            menu--;
        }
        if(getGameAction(keyCode) == DOWN && menu <= maxMenu - 2){
            menu++;
        }
        if(getGameAction(keyCode) == FIRE){
            switch(menu){
                case 0:
                    midlet.mainkan();
                    break;
                case 1:
                    midlet.instruksi();
                    break;
                case 2:
                    midlet.tentang();
                    break;
                case 3:
                    midlet.quit();
            }
        }
    }
}

-class Instruksi:

import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Taqienz
 */
public class Instruksi extends Canvas implements Runnable{
    private Image gambar;
    private boolean running;
    private final Midlet midlet;

    public Instruksi(Midlet g) {
        this.midlet = g;
        try {
            gambar = Image.createImage("/gambar/instruksi.png");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        setFullScreenMode(true);
    }

    protected void paint(Graphics g) {
        g.drawImage(gambar, 0, 0, 0);
    }

    public void run() {
        while(running){
            try {
                repaint();
                Thread.sleep(60);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void start(){
        running = true;
        Thread t = new Thread(this);
        t.start();
    }

    public void stop(){
        running = false;
    }

    protected void keyPressed(int keyCode) {
        if(getGameAction(keyCode) == FIRE){
            midlet.mainMenu();
        }
    }
}

-class music:


import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.media.Player;
import javax.microedition.media.control.VolumeControl;
//
///*
// * To change this template, choose Tools | Templates
// * and open the template in the editor.
// */
//
///**
// *
// * @author Taqienz
 */
public class Musik {
Player Player;
VolumeControl vc;
    private static void start() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
    public void Musik(String musicFile, int loopCount){
        try{
            Player = Manager.createPlayer(getClass().getResourceAsStream,("/"+musicFile),"audio/midi");
          Player.addPlayerListener(this);
          Player.setLoopCount(loop);
          Player.prefetch();
          Player.realize();
          vc = (VolumeControl)Musik.getControl("VolumeControl");
          if (vc != null) {
               vc.setLevel(100);
          }
          Player.start();
       }
   
    }

-class ObjectAtrbb:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Taqienz
 */
public class ObjectAttrib {
    private int x, y;
    private int[] custom;
   
    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public void setX(int x) {
        this.x = x;
    }

    public void setY(int y) {
        this.y = y;
    }

    public void setCustom(int[] custom) {
        this.custom = custom;
    }

    public int getCustom(int id) {
        return custom[id];
    }

    public void updateCustom(int id, int val){
        if(id >= 0 && id < custom.length){
            custom[id] = val;
        }
    }
}

-class PlayerAtribb:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Taqienz
 */
public class PlayerAttrib extends ObjectAttrib{
    public final static int FACING_BAWAH = 0;
    public final static int FACING_KIRI = 1;
    public final static int FACING_KANAN = 2;
    public final static int FACING_ATAS = 3;
    private int[][] frameSequences = {
        {0, 1, 2, 1},
        {3, 4, 5, 4},
        {6, 7, 8, 7},
        {9, 10, 11, 10},
    };
    private int facing;
    private int frame;
    private int HP;
    private int maxHP;

    public int getFacing() {
        return facing;
    }

    public PlayerAttrib(int HP) {
        this.HP = HP;
        this.maxHP = HP;
    }

    public void setHP(int HP) {
        this.HP = HP;
    }

    public int getHP() {
        return HP;
    }

    public void damaged(int damage){
        setHP(getHP() - damage);
    }

    public boolean isAlive(){
        if(getHP() > 0){
            return false;
        }
        return true;
    }

    public int getMaxHP() {
        return maxHP;
    }
   
    public int getFrame() {
        return frameSequences[facing][frame];
    }

    public void nextFrame(){
        frame++;
        if(frame >= frameSequences[facing].length){
            frame = 0;
        }
    }

    public void setFacing(int facing) {
        this.facing = facing;
    }
}


-class tentang:


import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Taqienz
 */
public class Tentang extends Canvas implements Runnable{
    private Image gambar;
    private boolean running;
    private final Midlet midlet;

    public Tentang(Midlet g) {
        this.midlet = g;
        try {
            gambar = Image.createImage("/gambar/tentang.png");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        setFullScreenMode(true);
    }

    protected void paint(Graphics g) {
        g.drawImage(gambar, 0, 0, 0);
    }

    public void run() {
        while(running){
            try {
                repaint();
                Thread.sleep(60);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void start(){
        running = true;
        Thread t = new Thread(this);
        t.start();
    }

    public void stop(){
        running = false;
    }

    protected void keyPressed(int keyCode) {
        if(getGameAction(keyCode) == FIRE){
            midlet.mainMenu();
  








     }
    }
}

5.Setelah Semua sudah Diisi script,kita buat Package Baru,lalu Copykan Gambar Yang Sudah Disiapkan tadi di awal pembuatan:



Stelah di copy hasilnya seperti ini:


6.Setelah itu kita juga menambahkan suara didalam game tersebut,langkahnya sama buat package baru dengan nama suara.

Coba di running Gamenya.Maka Hasilnya sebagai berikut: