Thursday, April 15, 2010

Membuat Game J2ME

J2ME adalah teknologi dari Java programming language yang di khususkan untuk perangkat mobile seperti Handphone, Pocket PC dan lainnya. J2ME sebenarnya sama dengan pemrograman menggunakan java sendiri, hanya saja dalam J2ME ada beberapa fungsionalitas yang ditambah dan dikurangi dan di sesuaikan untuk pemrograman perangkat mobile.


Untuk alatnya saya menggunakan IDE(Integrated Development Environment) NetBeans versi 6.5 , pilih NetBeans yang sudah termasuk Mobility Pack. Agar kita bisa langusng menulis kode program tanpa harus menginstal macem-macem lagi.

Setelah kita menginstall IDE NetBeans, segera jalankan NetBeans nya. Untuk membuat projek baru pilih File-New Project. Nanti akan muncul seperti gambar di bawah.

Pilih MIDP Application dan tekan Next. Selanjutnya anda akan di bawa ke layer Name and Location seperti di bawah ini.


Input Project Name yang sesuai dengan nama project anda dan hilangkan centang di Create Hello Midlet. Tekan Next

Ini adalah layar untuk menentukan target perangkat yang akan anda buat aplikasinya. Pada baris Emulator Platform adalah pilihan emulator yang anda Install di computer anda, untuk saat ini anda hanya menginstall emulator bawaan dari NetBeans anda. Setelah anda merasa perlu menginstall emulator platform untuk spesifik dari vendor lain seperti Nokia, Sony Ericsson dan Motorola anda dapat mengubahnya disini.

Device adalah perangkat emulator atau HP yang nantinya akan anda jalankan di computer anda, dalam menjalankan program yang akan anda buat. Apabila nantinya anda menginstal emulator platform dari vendor lain anda akan bisa menggunakan HP spesifik dari vendor tersebut.

Device Configuration dan Profile adalah spesifik kemampuan dari paket perangkat yang akan anda jadikan target aplikasi anda, sebagai contoh saya punya HP K608 itu mempunyai spesifikasi CLDC 1.1 dan MIDP 2.0 artinya HP saya bisa menjalankan program dengan paket yang ada di CLDC 1.1 dan MIDP 2.0. Untuk lebih lanjut mengenai perangkat yang anda jadikat target riset lah dahulu dengan melihat spesifikasi HP atau perangkat target anda.

Untuk mempermudah anda mengerti, cukup bayangkan HP lama adalah MIDP 1.0 seperti nokia 6015 dan nokia yang gede dengan slidenya yang saya lupa apa mereknya dan HP lama lainnya. MIDP 2.0 HP baru seperti nokia N70, N73, SE K600, SEW800 dan lain lain. Karena MIDP 2.0 lebih banyak ada baiknya anda pilih MIDP 2.0 dan CLDC 1.1 untuk aplikasi kita kali ini.

Pilih Next dan langsung pilih Finish.

Tampilan File Java-nya sebagai berikut:

Source Code file java-nya :

a.MIDlet_puzzle_acak_kata.java:

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
public class MIDlet_puzzle_kata extends MIDlet {
acak_puzzle brur;
public MIDlet_puzzle_kata() {
brur = new acak_puzzle(this);
}
public void startApp() {
Display.getDisplay(this).setCurrent(brur);
}
public void pauseApp() { }
public void destroyApp(boolean xyz) { }
}

b.Acak_puzzle.java:

import java.util.Random;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class acak_puzzle extends Canvas implements CommandListener {
MIDlet game;
Display fgf;
pengaturan opsi;
String cuy = "MAENGAMEASIKCUY";
Font fnt;
kerupuk vbr;
kerupuk[] blob;
kerupuk[][] sop;
Random ribet;
int xx;
int yy;
int ww;
int hh;
int xw;
int yw;
int yyy;
int xxx;
static final int keluar = 1;
static final int opsinya = 2;
static final int reset_ajah = 3;
static final int mulai_dunk = 4;
static final int yng_entu = 6;
Command cmd[];
static final int hajar = 0;
static final int so_cool = 1;
static final int yeah = 2;
int lanjut;
void D(String s) { System.out.println(s); }
class suka_suka extends Command {
int tag;
suka_suka(String ehm, int cihuy, int bro, int sob) {
super(ehm, cihuy, bro);
tag = sob;
}
}
void cie(kerupuk pp, int bx, int by) {
sop[bx][by] = pp;
pp.waduh(bx, by);
}
void hampa(int set_xxx, int set_yyy) {
cie(sop[set_xxx][set_yyy], vbr.dah, vbr.ah);
cie(vbr, set_xxx, set_yyy);
}
void yeaah(int xa, int ya, int xb, int yb)
{
kerupuk wow = sop[xa][ya];
cie(sop[xb][yb], xa, ya);
cie(wow, xb, yb);
}
boolean woow() {
for (int i = 0; i < j =" 0;" r =" ribet.nextInt()" i =" 0;" ddx =" ddy" ddv =" (ribet.nextInt()" ddx =" ddv;" ddy =" ddv;" ddx =" 1;" ddx ="="" ddx =" -1;" ddy =" 1;" ddy ="="" ddy =" -1;" blow =" ww*hh-1;" i =" 0;" j =" wew(blow);" prop =" yummie[j];" i =" 0;" ra =" 7;" rb =" 0;" ra =" 0;" rb =" 7;" x =" ribet.nextInt()" y =" ribet.nextInt()" x ="="" y ="="" x =" 2;" y =" 0;" n =" 0;" i =" 0;" j =" 0;" p =" sop[j][i];" p ="="" k =" 0;" k =" 0;" i =" 0;" j =" 0;" k =" 0;" game =" midlet_;" fgf =" Display.getDisplay(game);" ww =" 4;" hh =" 4;" fnt =" Font.getFont(Font.FACE_SYSTEM," xw =" fnt.charWidth('M')" yw =" fnt.getHeight()" xxx =" 3;" yyy =" 0;" xx =" (getWidth()" yy =" 75;" ribet =" new" sop =" new" i =" 0;" blob =" new" i =" 0;" x =" i" y =" i" s =" cuy.substring(i," vbr =" new" cmd =" new" opsi =" new" lanjut =" ns;" j =" 0;" k =" 0;" lanjut ="="" coy =" getGameAction(cek_dunk);" sww =" vbr.dah;" swws =" vbr.ah;" kesono =" (opsi.cendol">= ww ||
swws <>= hh) {
return;
}
hampa(sww, swws);
repaint();
if (woow()) {
hayuuuk_dah(yeah);
}
}
class kerupuk {
String glodak;
boolean brb;
int cek_lgi;
int ho, oh;
int dah, ah;
kerupuk(String serr, int srett, int toet, int tiut, boolean brett) {
glodak = serr;
cek_lgi = srett;
dah = ho = toet;
ah = oh = tiut;
brb = brett;
}
void waduh(int gg, int bb) {
dah = gg;
ah = bb;
}
boolean begh() {
return (dah == ho) && (ah == oh);
}
void wedew() {
cie(this, ho, oh);
}
void paint(Graphics grafis) {
int GRP = dah * xw;
int BRP = ah * yw;

if (glodak != null) {
if (brb) {
grafis.setColor(0xBB1100);
grafis.setFont(fnt);
grafis.drawRect(GRP, BRP, xw-2, yw-2);
grafis.drawString(glodak,
GRP+xxx, BRP+yyy,
Graphics.TOP|Graphics.LEFT);
} else {
grafis.setColor(0);
grafis.fillRect(GRP, BRP, xw-1, yw-1);
grafis.setColor(0x00FF00);
grafis.setFont(fnt);
grafis.drawString(glodak,
GRP+xxx, BRP+yyy,
Graphics.TOP|Graphics.LEFT);
}
}
}
}
}

c.Pengaturan.java:
import javax.microedition.lcdui.*;

public class pengaturan extends Form implements CommandListener {
boolean cendol;
boolean cek_kulkas;
boolean sundul_gan;
Command siip;
Command ntar_ajah;
Display nongol;
Displayable balik_dah;
ChoiceGroup yg_ntu;
ChoiceGroup yg_ni;
boolean[] begono;
pengaturan(Display bew, Displayable wiw) {
super("Pengaturan");
nongol = bew;
balik_dah = wiw;
begono = new boolean[2];
cendol = false;
cek_kulkas = false;
sundul_gan = true;
yg_ntu = new ChoiceGroup(null, Choice.MULTIPLE);
yg_ntu.append("Flip Kontrolnya", null);
yg_ntu.append("Acak Lagi", null);
append(yg_ntu);
append("levelnya:");
yg_ni = new ChoiceGroup(null, Choice.EXCLUSIVE);
yg_ni.append("Gampangan", null);
yg_ni.append("Rada Syusyah", null);
append(yg_ni);
panggil_dah();
siip = new Command("YA", Command.OK, 0);
ntar_ajah = new Command("BATAL", Command.CANCEL, 1);
addCommand(siip);
addCommand(ntar_ajah);
setCommandListener(this);
}
public void commandAction(Command cv, Displayable dfg) {
if (cv == siip) {
cek_lage();
} else if (cv == ntar_ajah) {
panggil_dah();
}
nongol.setCurrent(balik_dah);
}
void panggil_dah() {
yg_ntu.setSelectedIndex(0, cendol);
yg_ntu.setSelectedIndex(1, cek_kulkas);

yg_ni.setSelectedIndex((sundul_gan ? 1 : 0), true);
}
void cek_lage() {
cendol = yg_ntu.isSelected(0);
cek_kulkas = yg_ntu.isSelected(1);
sundul_gan = yg_ni.isSelected(1);
}
}

Tampilan Game:

- Tampilan Awal:


b.Menu:
c.Pengaturan:
d. Tampilan Game:

Manual Bool:
Kita hanya menggunakan tombol arah,atas,bawah,kanan dan kiri untuk dapat menggerakkan huruf yang teracak sehingga tersusun sesuai dengan urutan huruf yang membentuk kata yg telah ditetapkan pada tampilan sebelumnya. Game ini dapat dimainkan oleh semua umur karena caranya sangat mudah dan sangat simpel.

 
http://www.idr-clickit.com/images/banner1.png