22 Juli 2009

Source Code Game j2me - Tebak Kata

Ehm, ini salah satu persiapan projec UAS di semester 4 kemarin, Temanya Game Mobile menggunakan java. Ehmm, nyoba dicoba akhirnya ketemu sama game tebak kata ini. Gamenya sederhana dan simple, Dengan memanfaatkan file txt sebagai penyimpan datanya, game ini sudah bisa dimainkan dengan asyik di HP anda. Disini kita membutuhkan file data.txt yang berisi jawaban dan pertanyaan dari setiap kata. di baris genap adalah jawaban, dan baris ganjil adalah pertanyaan / clue nya. sebagai contoh isi file txt adalah sebagai berikut :

wudhu
Hal yang harus dilakukan sebelum shola bagi umat muslim
puasa
Menahan lapar dan haus, juga hawa nafsu

di atas hanya contoh saja, anda bisa mengembangkan dan menambah senidir isi filenya, silahkan memodifikasi program ini, kalau sudah dapat ilmunya terus di sharing dengan saya .. :)

Ini source code game j2me nya...



import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
import java.util.Vector;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.midlet.*;

public class Main extends MIDlet implements CommandListener {

private Display display;
private Form form;
private TextField tebak;
private StringItem tfSoal, tfJawab, tfNilai, tfSalah, tfBenar, tfPeluang;//, taClue;
private Vector kata;
private Command exitCommand, okCommand, startCommand, clueCommand;
String jawaban = "";
String jawaban2 ="";
int panjang = 0;
int gagal = 0;
int sukses = 0;
int nilai = 0;
int num;
String benar = "***************************";
String salah = "";
String catatan = " ";

public Main() {
form = new Form("GAME TEBAK KATA");
tfSoal = new StringItem("Tebakan: \n", "Tebak Kata");
tfJawab = new StringItem("Jawab Salah\t : ", "-");
tfNilai = new StringItem("Nilai\t : ", "0");
tfSalah = new StringItem("Salah\t : ", "0");
tfBenar = new StringItem("Benar\t : ", "0");
tfPeluang = new StringItem("Peluang\t : ", "0");
//taClue = new StringItem("Petunjuk: \n", "Petunjuk menjawab ada disini");
tebak = new TextField("Masukan Huruf: \n", "-", 1, TextField.ANY);
kata = new Vector();
exitCommand = new Command("Exit", Command.EXIT, 1);
okCommand = new Command("OK", Command.OK, 3);
startCommand = new Command("Start", Command.OK, 3);
clueCommand = new Command("Lihat Clue", Command.OK, 3);


form.append(tebak);
form.append(tfSoal);
form.append(tfJawab);
//form.append(taClue);
form.append(tfNilai);
form.append(tfBenar);
form.append(tfSalah);
form.append(tfPeluang);
form.addCommand(exitCommand);
form.addCommand(okCommand);
form.addCommand(startCommand);
form.addCommand(clueCommand);
form.setCommandListener(this);
Inisialisasikata();
// backsound();

}

public void startApp() {
display = Display.getDisplay(this);
display.setCurrent(form);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
notifyDestroyed();
}

public void Inisialisasikata() {
InputStream baca = this.getClass().getResourceAsStream("data.txt");
try {
StringBuffer buf = new StringBuffer();
int c;
int xy = 0;
while ((c = baca.read()) != -1) {
char ch = (char) c;
if (ch == '\n') {
kata.addElement(buf.toString());
buf.delete(0, buf.length());
xy++;
} else {
buf.append(ch);
}
}
baca.close();
} catch (Exception e) {
System.out.println("Unable to create stream");
}
System.out.println(kata.size());
System.out.println(kata.elementAt(0));
for (int yx = 0; yx <>
System.out.print(kata.elementAt(yx));
}
}

public void mulai() {
int batasatas = kata.size();
int batasbawah = 0;

do {
Random r = new Random();
num = (r.nextInt() >>> 1) % (batasatas + 1 - batasbawah) + batasbawah;
} while (num % 2 != 0);
jawaban = kata.elementAt(num).toString();
panjang = jawaban.length();
jawaban = jawaban.substring(0,panjang-1);
panjang = jawaban.length();
//panjang = panjang -1;
benar = "***************************";
tfSoal.setText("");
tfJawab.setText("");
catatan = "";
for (int s = 0; s <>
tfSoal.setText(tfSoal.getText() + "*");
tfPeluang.setText("5");
}
//taClue.setText(kata.elementAt(num + 1).toString());
Alert clue = new Alert("Pertanyaan");
clue.setString(kata.elementAt(num + 1).toString());
clue.setTimeout(clue.FOREVER);
display.setCurrent(clue, form);
}

public void cekKata(String huruf) {
tfSoal.setText("");
if (panjang == 0) {
tfJawab.setText("");
} else {
for (int i = 0; i <>
if ((benar.charAt(i) + "").equals("*")) {
if ((jawaban.charAt(i) + "").equals(huruf)) {
tfSoal.setText(tfSoal.getText() + huruf);
} else {
tfSoal.setText(tfSoal.getText() + benar.charAt(i));
salah += huruf; // Tebakan karakter yang salah di masukan dalam fiel "Salah"
}
} else {
tfSoal.setText(tfSoal.getText() + benar.charAt(i));
salah += benar.charAt(i);
}
}

if (salah.length() == jawaban.length()) {
tfJawab.setText(tfJawab.getText() + huruf);
}

benar = tfSoal.getText();
salah = "";
catatan += catatan;
int define = 5;
int counter = tfJawab.getText().length();
tfPeluang.setText(define - counter + "");
if (benar.equals(jawaban) && benar != "") {
tfJawab.setText("GOOD!!!");
sukses = sukses + 1;
nilai = nilai + 1;
tfBenar.setText(sukses + "");
tfNilai.setText(nilai + "");
tfSoal.setText(jawaban);
panjang = 0;
//taClue.setText("");
}

if (tfJawab.getText().length() == 5) {
tfJawab.setText("GAGAL!!!");
gagal = gagal + 1;
nilai = nilai - 1;
tfSalah.setText(gagal + "");
tfNilai.setText(nilai + "");
tfSoal.setText(jawaban);
panjang = 0;
tebak.setString("-");
//tfSoal.setText("Klik Start");
tfPeluang.setText("0");
//taClue.setText("");
}
}
}

public void backsound() {
try {
InputStream is = getClass().getResourceAsStream("dzikir.wav");
Player p = Manager.createPlayer(is, "audio/X-wav");
p.start();
} catch (IOException ioe) {
} catch (MediaException me) {
}
}

public void commandAction(Command c, Displayable d) {

if (c == startCommand) {
mulai();
tebak.setString("");
} else if (c == exitCommand) {
destroyApp(true);
} else if (c == clueCommand) {
Alert clue = new Alert("Pertanyaan");
clue.setString(kata.elementAt(num + 1).toString());
clue.setTimeout(clue.FOREVER);
display.setCurrent(clue, form);


} else if (c == okCommand) {
String cek = tebak.getString().toString();
Alert alert = new Alert("Ups ada Kesalahan !");
alert.setString("\tField Tidak boleh Kosong !");

if (cek.equals("-")) {
Alert alertMulai = new Alert("Ups ada Kesalahan !");
alertMulai.setString("\t Klik Start terlebih dahulu !");
alertMulai.setTimeout(1000);
display.setCurrent(alertMulai, form);
} else if (cek.equals("")) {
alert.setTimeout(1000);
display.setCurrent(alert, form);
} else if (cek.equals("a") || cek.equals("A")) {
cekKata("a");
tebak.setString("");
} else if (cek.equals("b") || cek.equals("B")) {
cekKata("b");
tebak.setString("");
} else if (cek.equals("c") || cek.equals("C")) {
cekKata("c");
tebak.setString("");
} else if (cek.equals("d") || cek.equals("D")) {
cekKata("d");
tebak.setString("");
} else if (cek.equals("e") || cek.equals("E")) {
cekKata("e");
tebak.setString("");
} else if (cek.equals("f") || cek.equals("F")) {
cekKata("f");
tebak.setString("");
} else if (cek.equals("g") || cek.equals("G")) {
cekKata("g");
tebak.setString("");
} else if (cek.equals("h") || cek.equals("H")) {
cekKata("h");
tebak.setString("");
} else if (cek.equals("i") || cek.equals("I")) {
cekKata("i");
tebak.setString("");
} else if (cek.equals("j") || cek.equals("J")) {
cekKata("j");
tebak.setString("");
} else if (cek.equals("k") || cek.equals("K")) {
cekKata("k");
tebak.setString("");
} else if (cek.equals("l") || cek.equals("L")) {
cekKata("l");
tebak.setString("");
} else if (cek.equals("m") || cek.equals("M")) {
cekKata("m");
tebak.setString("");
} else if (cek.equals("n") || cek.equals("N")) {
cekKata("n");
tebak.setString("");
} else if (cek.equals("o") || cek.equals("O")) {
cekKata("o");
tebak.setString("");
} else if (cek.equals("p") || cek.equals("P")) {
cekKata("p");
tebak.setString("");
} else if (cek.equals("q") || cek.equals("Q")) {
cekKata("q");
tebak.setString("");
} else if (cek.equals("r") || cek.equals("R")) {
cekKata("r");
tebak.setString("");
} else if (cek.equals("s") || cek.equals("S")) {
cekKata("s");
tebak.setString("");
} else if (cek.equals("t") || cek.equals("T")) {
cekKata("t");
tebak.setString("");
} else if (cek.equals("u") || cek.equals("U")) {
cekKata("u");
tebak.setString("");
} else if (cek.equals("v") || cek.equals("V")) {
cekKata("v");
tebak.setString("");
} else if (cek.equals("w") || cek.equals("W")) {
cekKata("w");
tebak.setString("");
} else if (cek.equals("x") || cek.equals("X")) {
cekKata("x");
tebak.setString("");
} else if (cek.equals("y") || cek.equals("Y")) {
cekKata("y");
tebak.setString("");
} else if (cek.equals("z") || cek.equals("Z")) {
cekKata("z");
tebak.setString("");
} else {
Alert clue = new Alert("Ups Ada yang Salah");
clue.setString("Ma'af, Karakter yang anda masukan salah! \n Silahkan Mengulangi Lagi !");
clue.setTimeout(1500);
display.setCurrent(clue, form);
}
}
}
}




44 komentar:

  1. nek ono wektu pasti tak cobane

    BalasHapus
  2. @ Jauhdimata :
    hehe,, iya mas di coba wae...
    itu ada 2 versi, versi mobile sama desktop,
    yang mobile ada 2 versi juga, versi1.0 sama vers 2.0
    yang saya publish versi mobile 1.0
    :D hie hie...

    BalasHapus
  3. saya sudah coba kok banyak error nya
    Building "Main"
    C:\Documents and Settings\awanku\j2mewtk\2.5.2\apps\Main\src\Main.java:97: illegal start of expression
    for (int yx = 0; yx <>
    ^
    C:\Documents and Settings\awanku\j2mewtk\2.5.2\apps\Main\src\Main.java:99: illegal start of expression
    }
    ^
    C:\Documents and Settings\awanku\j2mewtk\2.5.2\apps\Main\src\Main.java:100: illegal start of expression
    }

    BalasHapus
    Balasan
    1. apa-apaan??????

      Hapus
    2. saya mau tanya cara coding game bagi pemula bagaimana

      Hapus
  4. ngiring nyobian gan.. :D

    BalasHapus
  5. tolong source code komplitnya,
    cz q pengen belajar banget. plesssss
    chorindramuda@yahoo.co.id

    BalasHapus
  6. Tolong dong source codenya yang complet and ga eror

    BalasHapus
  7. Saya cari dulu file nya di laptop... sudah lama soalnya... mudah-mudahan masih ada...

    BalasHapus
  8. masi adkah source code lengkapnya? butuh bgt hehe

    BalasHapus
  9. Hayo butuh buat tugas kuliah atau apa ini ?? :D
    ada 2 versi sebenarnya, versi desktop dan versi mobile.
    ini yang ada versi desktop nya saja... :(
    yang versi mobile tak cari2 di laptop masih belum ketemu...

    BalasHapus
  10. Makasih mas buat coding'a saya coba dulu yak

    BalasHapus
  11. Yak sama-sama,
    harusnya bisa kok. itu sangat super sederhana sekali...
    kalau ada bug eror,,, wahhh kaburr dahhh,

    BalasHapus
  12. mas bs mnta source code buat gama anjing gembala g??itu game baru dar buku yang berjudul 12 aplikasi java mobile,,
    tolong yah mnta dibantu source code untuk menambahkan level..
    trims banyak mas,,

    BalasHapus
  13. @indria : wahhh dah banyak di google source code game java..... saya belum punya.. dah lama ndak bikin game java lagi...

    BalasHapus
  14. GAK MUTU KIRAIN UDAH FIX MAIH CACAD PROGRAMNYA DI PAMER"-in

    BalasHapus
  15. @Anonim : kalo langsung jadi ntar malah... gak seru... gak tau cara kerjanya... kalo eror kan masih perlu berfikir 2 kali....

    BalasHapus
  16. udah saya cari mas blum ada juga huhf...
    punya source code buat waktu di game g??tolong di posting yah...

    BalasHapus
  17. InsyaAllah, nti ana carikan file nya..

    BalasHapus
  18. Thanks ya kodenya...
    buat dikembangin untuk tgas nih

    BalasHapus
  19. kok kode banyak yg salah, minta source codenya donk...,
    ni email Q
    mbleketek_kuir@yahoo.co.id

    Thank's sebelumnya.

    BalasHapus
  20. 90 error....
    payah....
    gw kira ud bner coding'a....

    BalasHapus
  21. aq udah coba, udah ga ada yg error, tapi yg yx<> ntu harusnya berapa,y? hehe.. yx>100? hehe

    BalasHapus
  22. wah kontes banyak2an eror nih.. hehe...
    coba di pelajarai lagi sourcenya, terus di fahami algoritma game nya. coba di develope ulang...
    InsyaAllah mau di kembangin ke bhasa.apapun game ini mudah kok...

    mohon ma'af saya sudah ndak nemu dokumentasi file game ini. jadi tinggal ini saja...
    ada yang versi desktop nya, pakek java juga, tapi ukuran file nya besar...

    dah selamat berusaha ya...

    BalasHapus
  23. errror.... ada complete source code na gak mas?? minta dunk.. krm email aja tah shinta90beauty@yahoo.com

    BalasHapus
  24. errror.... ada complete source code na gak mas?? minta dunk.. krm email aja tah shinta90beauty@yahoo.com

    BalasHapus
  25. cara buat file txt nya gmn..?
    dan di copykan kemana..?

    BalasHapus
  26. Mantap..
    kalau Cara membuat Animasi sprite ada gak??

    BalasHapus
  27. prgramnya ni satu class ya?
    maaf, mau tnya,,bgmna cntoh scriptnya klo qt mau pindah layer?

    BalasHapus
  28. PROGRAM NGGA' BISA KYK GINI AJA DI SHARE CACADDD!!!!!

    BalasHapus
  29. Silahkan mengembangkan sendiri... jangan maen copas saja yah...
    yang penting itu algoritma nya dah keliatan dari source code nya.. just simple...
    kalau ada yang kurang jelas dg algoritmanya.. silahkan di share di sini.. saya bantu...

    BalasHapus
  30. permisi, mz aku mau lagi skripsi mau bikin aplikasi kamus pake j2me juga. sdikit banyak dah paham tentang j2me, soalna dah pernah bikin beberapa project..
    masalahnya, aku ga pernah bikin project yg menggunakan file txt. padahal kamus harus menggunakan database. belajar tentang rms, bingung bgd.
    mohon bantuannya.

    email: edelways_cs@yahoo.com

    BalasHapus
  31. @Anonim
    Oom makarim, itu coding ga lengkap yah?
    error di format for nya tuh, ex: for(yx = 0 ; yx<>
    note: illegal start of expression
    need yang lengkap donk, algoritma nya sih belum nyambung ke gw
    Dikasih cepet yah balesannya ^^

    BalasHapus
  32. @Anonim
    nambahin replynya agan/aganwati Ri di atas tuh...
    pgoramnya cuma pake 1 midlet yah?
    gak pake java class lagi tuh?

    BalasHapus
  33. parah.... PARAHH.... hanya itu yang dapat saya ucapkan

    PARAHHH

    SALAM PARAH cacad iNside

    BalasHapus
  34. alah itu mh cuma copas doank,
    klo dia coding sndri psti tau solusinya...
    pake alasan lupa segala...

    BalasHapus
  35. gmana nih banyak baqnget yang error???

    BalasHapus
  36. kq bnyk errornya,,,
    importx z error...

    BalasHapus
  37. maaf, saya masih pemula,,
    ini saya copas kok buanyak sekali ya yang salah ??
    solusinya ini gimana ?>??

    BalasHapus
  38. mas sebelum nya permisi nih saya ada tugas buat uas.. saya minta source code nya yang compelit versi deksto nya mas...saya mohon bgt.

    BalasHapus
  39. pake class atau pake midlet?

    BalasHapus
  40. mw dwooonk k source code complite beserta caranya nya?penasaran erorr mulu,,klu boleh tlong email ke yanabotique000@gmail.com , trimakash k :)

    BalasHapus
  41. Bagi juga dong file completenya
    Kirim aja ke mr.salamuddin3@gmail.com
    Biar nanti aku kembangin

    BalasHapus

^_^

Jika ada pertanyaan atau order tiket dengan senang hati kami melayani. Silakan Chat dengan Customer Service kami

Customer Support