I. Deskripsi Game
I.1 Nama Game : PUTBALL
I.2 Deskripsi : Game ini merupakan game sepak bola dimana player
merupakan eksekutor tendangan penalty.
I.3 Genre : Game ini dapat dimainkan oleh semua kalangan dengan
usia > 4 tahun.
I.4 Story Board : Game ini bercerita tentang seorang eksekutor penalty
dimana harus memasukkan 5 gol ke gawang lawan dengan
penjagaan 4 orang kipper, kesempatan yang diberikan 3
kali dan akan terus berkurang apabila bola dapat ditahan
oleh kipper
I.5 Pembuat : Febriansyah Razak
Pertama kita membuata New Project (Ctrl + Shift + N) pilih Categories Mobility dan
Projects : MIDP Application klik Next namakan Project (dalam hal ini putBall), unChecklist
HelloMidlet klik N ext lalu pilih Finish
II.2 Pembuatan Package
Dalam project ini akan dibuat 3 package (termasuk default package) ketiganya itu antara lain :
Didalam sebuah package terdapat berbagai macam file, baik itu code, music, maupun image. Di
dalam project ini terdapat 3 package seperti di atas.
Midlet merupakan Kelas yang pertama kali dipanggil oleh program. Kelas ini harus ada
dalam pembuatan Mobil Application. Cara pembuatan midlet :
Klik kanan pada Project Pilih New MIDlet Kemudian berinama file,
gambar akan terlihat seperti berikut ini :
import javax.microedition.midlet.*;
/**
* @author FeRaz
*/
Display display;
Main play;
Splash splash;
Menu menu;
try{
display = Display.getDisplay(this);
display.setCurrent(splash);
}
catch(Exception ie){
ie.printStackTrace();
display.setCurrent(menu);
};
timer.schedule(timerTask, 2000);
timer.cancel();
timerTask.cancel();
display.setCurrent(play);
}
II.3 Pembuatan Java Class
Di dalam sebuah pemrograman perlu kita buat kelas-kelas agar rapi dan dapat difahami oleh
orang lain yang membacanya, untuk itu kita perlu membuat kelas antara lain :
Splash biasanya digunakan untuk menampilkan layar pembuka. Langkah pembuatannya sebagai
berikut :
Agar Kelas dapat digunakan untuk menggambar maka harus mengExtends Class Canvas.
Dalam menExtends Calss Canvas ada 2 cara yang harus kita lakukan, Pertama kita harus
mengimport javax.microedition.lcdui.Canvas; dan yang kedua mengOveride method dari Canvas
yaitu paint(Graphics g) dan mengimport javax.microedition.lcdui.Graphics; setelah itu kita juga
mengimport javax.microedition.lcdui.Image; untuk menginisialisasi gambar.
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
Image gambar;
this.midlet = midlet;
lebar = getWidth();
tinggi = getHeight();
try {
gambar = Image.createImage("/Images/soccerSplash.png");
setFullScreenMode(true);
ex.printStackTrace();
midlet.stopTimer();
midlet.startTimer();
Setelah itu jalankan program, maka akan tampil splashScreen seperti berikut :
2. Pembuatan Kelas Menu
Menu perlu dibuat agar player dapat memilih option dari permainan, dalam hal ini
terdapat 4 option, antara lain : Play, Help, About, Exit.
Untuk itu kita persiapkan dulu kelas dengan nama Menu.java, kemudian extends Canvas
dan implementasi Runnable.
Kemudian perlu dibuat beberapa method untuk penanganan logika dan kondisi, berikut
method yang harus dibuat :
CheckList pada bagian midlet Core, kemudian klik generate maka script Constructor akan
terbentuk secara otomatis seperti berikut, lalu tambahkan Thread.
Kemudian kita perlu membuat method init(), berikut contoh listing programnya :
g.setColor(0, 0, 0);
g.drawImage(gambar, 0, 0, 0);
} else {
}
if (index == 2) {
g.drawImage(image_on[2], 80, 70, 0);
} else {
g.drawImage(image_off[2], 80, 70, 0);
}
if (index == 3) {
g.drawImage(image_on[3], 80, 140, 0);
} else {
g.drawImage(image_off[3], 80, 140, 0);
}
}
Pada method ini kita memanggil Image menggunakan array sehingga lebih menghemat
baris program. Kemudian langkah selanjutnya adalah pembuatan method keyPressed().
protected void keyPressed(int key) {
if ((key == 50) || key == -1 && index != 0) {
index--;
try {
Manager.playTone(note, 1, 30);
} catch (MediaException ex) {
ex.printStackTrace();
}
} else if (key == 56 || key == -2 && index != 3) {
index++;
try {
Manager.playTone(note, 1, 30);
} catch (MediaException ex) {
ex.printStackTrace();
}
}
if ((key == 53 || key == -5 && index == 3)) {
midlet.destroyApp(true);
}
if ((key == 53 || key == -5 && index == 0)) {
midlet.mulaiGame();
}
}
Method ini digunakan sebagai pemilih dalam menu, dalam method ini terdapat kondisi
dimana player dapat memilih menu. Setelah itu method terakhir yang harus kita tambahkan
adalah method run(). Method ini penting karena segala method yang terus dipanggil berulang
oleh program terletak di method ini .
}
}
Setelah semua method selesai dibuat, clean and build program dengan cara menekan
tombol Shift + F11, tunggu hingga selesai kemudian jalankan program dengan cara tekan F6.
Akan tampil menu setelah splashScreen hilang seperti ini :
3. Membuat Kelas Main.java
Setelah pembuatan splashScreen dan menu telah selesai dibuat dan dapat dijalankan dengan
sempurna, langkah selanjutnya adalah membuat kelas inti dari permainan, dalam hal ini dinamakan
kelas main (main.java).
Untuk itu langkah awal yang perlu dibuat adalah membuat Java Class yang baru. Berikut
langkah-langkahnya :
Klik kanan pada package di dalam project yang ingin kita sisipkan kelas tersebut, lalu pilih New
Java Class.
Kemudian pada Class Name ketikkan Main sebagai nama kelas. Setelah itu klik finish maka kelas
baru dengan nama Main.java akan terbentuk. Setelah kelas terbentuk kita akan membuat berbagai
method-method yang khusus untuk menangani berbagai aktifitas pada permainan ini. Sebelum
membuatnya perlu kita fahami dulu konsep dari setiap method yang akan kita buat, berikut daftar
method-method yang akan kita buat.
Langkah awal adalah penurunan kelas GameCanvas dan Runnable, ketikkan kode berikut pada di
dalam kelas (perhatikan bahwa tidak seluruh kode diketik ulang tetapi hanya perlu penambahan saja).
Setelah itu apabila terdapat error maka klik kanan pada lampu kuning-merah yang terlihat pada
sisi kanan layar di nomor baris. Klik implements all abstract method agar kesalahan tersebut dapat
diatasi.
Dengan begitu otomatis akan terbentuk method dengan nama run(), method ini akan kita
pergunakan untuk menangani segala hal yang berkaitan tentang perulanangan pemanggilan method lain
dalam permainan ini, berikut listingnya ;
Kemudian setelah itu klik kanan dan pilih insert Code Consructor , seperti terlihat pada
tampilan berikut.
CheckList pada bagian midlet Core, kemudian klik generate maka script Constructor akan
terbentuk secara otomatis.
super(suppressKeyEvents);
this.midlet = midlet;
super(true);
this.midlet = midlet;
Setelah itu kita insialisasi variable-variable yang akan kita gunakan didalam kelas Main
Bola midlet;
Setelah itu kita perlu membuat method init() sebagai inisialisasi dari variable-variable diatas.
try {
bola = Image.createImage("/Images/bolaSepak.png");
kiper = Image.createImage("/Images/kiper.png");
lapangan = Image.createImage("/Images/lapangan.png");
gawang = Image.createImage("/Images/gawang.png");
eksekutor = Image.createImage("/Images/eksekusi.png");
jaring = Image.createImage("/Images/jaring.png");
ex.printStackTrace();
Apabila terdapat kesalahan lakukan seperti cara diatas, yaitu klik kanan lampu kuning-merah dan klik
import segala hal yang berhubungan dengan library yang masih salah tersebut. Kemudian setelah semua
kesalahan teratasi kita akan membuat method mulaiGame(). Method ini adalah method khusus yang
dipanggil pada Constructor untuk memulai game :
new Thread(this).start();
tampil();
Abaikan apabila terdapat kesalahan yang berupa pendeklarasian method baru, karena kesalahan
tersebut dikarenakan method yang dipanggil belum kita buat, Setelah itu kita akan menyelesaikan
masalah penyebab error tadi, yaitu pembuatan method tampil(), berikut listing codenya :
sBola.setVisible(true);
sGawang.setPosition(45, 15);
sGawang.setVisible(true);
sBola.setPosition(tkhX, tkhY);
sKiper.setVisible(true);
sKiper.setPosition(200, y);
sKiper2.setPosition(45, y);
sKiper3.setPosition(80, y);
sKiper4.setPosition(80, y);
sEksekutor.setPosition(tkhX, tkhY);
sJaring.setPosition(45, 5);
}
Setelah itu kita akan menangani karakteristik musuh, kita perlu menampungnya pada method musuh(),
berikut listing programnya :
sKiper.move(-45, 0);
sKiper2.move(20, 0);
sKiper3.move(5, 0);
sKiper4.move(-10, 0);
sKiper4.setPosition(200, y);
sKiper3.setPosition(45, y);
sKiper2.setPosition(45, y);
sKiper.setPosition(200, y);
Jika method musuh sudah selesai kita buat, selanjutnya kita perlu membuat method kendali untuk
mengontrol pergerakan dari player. Fahami kode berikut ini kemudian tuliskan pada program.
sBola.setVisible(true);
if(tombol == UP_PRESSED)
{
tendang = tendang+2;
gauge = gauge+2;
if(tendang>=50)
tendang = 50;
if(tombol == DOWN_PRESSED)
tendang = tendang-2;
gauge = gauge-2;
if(tendang<=1)
gauge = 1;
tendang = 1;
if (tombol == RIGHT_PRESSED) {
tkhX += incTkh;
tkhX = 200;
if (tombol == LEFT_PRESSED) {
tkhX -= incTkh;
if (tkhX <= 0) {
tkhX = 0;
if (tombol == FIRE_PRESSED) {
aktif = true;
if (aktif) {
sBola.move(0, -tendang);
sBola.setVisible(true);
aktif = false;
Kemudian setelah itu kita membuat method tembak() untuk menggerakan bola. Berikut listing
programnya :
if (!aktif) {
sBola.setPosition(tkhX + 5, tkhY);
Setelah itu buatlah method tabrak() yang menangani kondisi-kondisi ketika tabarakan terjadi antara bola
dan kipper.
protected void tabrak() {
if (sBola.collidesWith(sKiper, aktif)
|| sBola.collidesWith(sKiper2, aktif)
|| sBola.collidesWith(sKiper3, aktif)
|| sBola.collidesWith(sKiper4, aktif)) {
sBola.setVisible(false);
kesempatan = kesempatan - 1;
aktif = false;
if (sBola.collidesWith(sGawang, true)) {
score = score + 1;
Kemudian buat method tenaga() untuk dapat mengatur kecepatan tembakan(), ikuti code berikut :
Graphics g = getGraphics();
if(gauge>50)
tmp = 100;
}else
tmp=(int)((gauge*100)/50);
g.setColor(47,31,249);
g.setColor(0,0,0);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
Font.SIZE_LARGE));
Setelah itu jangan lupa buat kondisi menang dan Kalah, dalam hal ini kita akan menampung kondisi
tersebut pada method menangKalah(), ikuti kode berikut :
if (score == 5) {
g.setColor(0, 0, 0);
if (kesempatan < 1) {
g.setColor(0, 0, 0);
Kemudian sebelum mengakhiri seluruhnya, kita perlu menyempurnakan method run(), tambahkan
kode-kode berikut pada method run() :
Graphics g = getGraphics();
while (tanda) {
g.drawImage(lapangan, 0, 0, 0);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
Font.SIZE_MEDIUM));
sGawang.paint(g);
sGawang.nextFrame();
sBola.paint(g);
sBola.nextFrame();
sKiper.paint(g);
sKiper.nextFrame();
sKiper2.paint(g);
sKiper2.nextFrame();
sKiper3.paint(g);
sKiper3.nextFrame();
sKiper4.paint(g);
sKiper4.nextFrame();
sEksekutor.paint(g);
sEksekutor.nextFrame();
sJaring.paint(g);
sJaring.nextFrame();
kendali();
tembak();
tabrak();
musuh();
tenaga();
menangKalah(g);
flushGraphics();
try {
Thread.sleep(20);
ex.printStackTrace();
Setelah semuanya selesai dan tidak terdapat kesalahan lagi. Kita dapat running program ini, namun
sebelum itu sebaiknya kita clean and build dahulu, hal ini diperlukan agar file .jar dan .jad di refresh
ulang. Langkahnya adalah sebagai berikut :
Klik kanan pada project yang akan kita jalankan, kemudian pilih clean and build, tunggu hingga proses ini
selesai kemudian run.
Ketika di run, program akan tampak seperti gambar disamping. Gerakkan
kiri dan kanan untuk memilih posisi yang tepat, tekan atas-bawah untuk
mengontrol kecepatan bola. Apabila score mencapai nilai 50 maka
permain dinyatakan menang, namun kesempatan hanya berlaku 3 kali
saja, apabila bola tertahan kipper maka kesempatan berkurang dan
apabila kesempatan sudah habis dan score belum mencapai 50 maka
permainan dinyatakan game over dan pemain kalah.
Program sudah berjalan, namun tidak ada musik sebagai backSound yang diputar. Untuk melengkapinya
perlu dibuat terlebih dahulu kelas Musik.java, untuk pembuatannya sama seperti langkah sebelumnya,
buat terlebih dahulu kelas untuk menangani berbagai method yang akan dijalankan, kemudian buat
methodnya satu per satu :
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
import javax.microedition.media.control.VolumeControl;
player=Manager.createPlayer(getClass().getResourceAsStream(file),"audio/midi");
player.addPlayerListener(this);
player.setLoopCount(-1);;
player.prefetch();
player.realize();
vc=(VolumeControl)player.getControl("VolumeControl");
if(vc != null){
vc.setLevel(50);
player.start();
try {
player.stop();
} catch (Exception e) {
e.printStackTrace();
}
Kemudian kembali pada kelas Main.java untuk memanggil musik tersebut. Ubah hanya
seperlunya pada bagian method menangKalah() dan pembuatan method playMusic().
try {
musik.playWavMidi("/Audio/StarTrek.mid");
ex.printStackTrace();
Clean and build kembali program kemudian run, maka akan terdengar music backSound apabila game
dimainkan dan musik berhenti ketika game berakhir baik menang ataupun kalah.
SELESAI