Praktek 5 : User Input

19.13 Diposting oleh Gunawan

Pada praktik sebelumnya yaitu Praktek 4 Game Pimpong : Collision Detection, kita sudah membuat bola bergerak dengan di batasi oleh garis pinggir layar.

Pada praktek kali ini kita akan mencoba menambahkan dua buah Image Raket yaitu Image yang berada di sebelah kiri yang digerakan oleh user dan Image yang berada di sebelah kanan yang bergerak otomatis dijalankan oleh HP. Perhatikan Gambar Berikut :

Misalkan Image sebelah kiri yang di jalankan oleh user kita beri nama padSprite dan sebelah kanan kita namakan AISprite.Image kiri dan Image kanan terdiri dari satu image yang di gandakan artinya sebelum anda merubah script silahkan terlebih dahulu download dan simpan gambar pad.png berikut :


Silahkan Download dan simpan di C:/WTK25/APPS/GamePimPong/res gambar beriku Klik kanan di sini ( Klik kanan lalu save Image as atau save target as atau save Image)


Berikut adalah Code dari hasil penambahan Image Raket sehingga menghasilkan seperti gambar di atas.

/* -------------------------------------

* Nama File : PongCanvas.java

* by Gunawan

* jagungodak@yahoo.com

*--------------------------------------

*/

import java.io.IOException;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.Image;

import javax.microedition.lcdui.game.GameCanvas;

import javax.microedition.lcdui.game.Sprite;

import java.util.Random;

public class PongCanvas extends GameCanvas implements Runnable {

private int sleepTime=30;

private Image ballImg;

private Sprite ballSprite;

private int ballX = getWidth()/2;

private int ballY = getHeight()/2;

private final static int ballXVel=3;

private final static int ballYVel=1;

private int ballDirection=1;

private Image padImg;

private Sprite padSprite;

private int padX = 10;

private int padY = getHeight() / 2;

private final static int padYVel = 2;

private Sprite AISprite;

private int AIX = getWidth() - 10;

private int AIY = getHeight() / 2;

private final static int AIYVel = 2;

private int actX;

public PongCanvas() {

super(false);

}

public void run(){

while(true){

updateScreen(getGraphics());

try{

Thread.sleep(sleepTime);

}catch(Exception ex){

}

}

}

public void start(){

try{

ballImg=Image.createImage("/face.png");

padImg = Image.createImage("/pad.png");

}catch(IOException ioex){

System.out.println("Kesalahan Pada Image"+ioex);

}

ballSprite=new Sprite(ballImg);

ballSprite.defineReferencePixel(2, 2);

ballSprite.setRefPixelPosition(ballX, ballY);

padSprite = new Sprite(padImg, 3, 20);

padSprite.defineReferencePixel(1, 10);

padSprite.setRefPixelPosition(padX, padY);

AISprite = new Sprite(padImg, 3, 20);

AISprite.defineReferencePixel(3, 10);

AISprite.setRefPixelPosition(AIX, AIY);

AISprite = new Sprite(padImg, 3, 20);

AISprite.defineReferencePixel(3, 10);

AISprite.setRefPixelPosition(AIX, AIY);

Thread runner=new Thread(this);

runner.start();

}

private void createBackground(Graphics g){

g.setColor(0x000000);

g.fillRect(0, 0, getWidth(), getHeight());

}

private void updateScreen(Graphics g){

createBackground(g);

createScoreboard(g);

moveBall();

movePad();

moveAI();

ballSprite.setRefPixelPosition(ballX , ballY);

ballSprite.paint(g);

padSprite.setRefPixelPosition(padX, padY);

padSprite.paint(g);

AISprite.setRefPixelPosition(AIX, AIY);

AISprite.paint(g);

flushGraphics();

}

public void moveBall(){

if (ballDirection == 0) {

ballX -= ballXVel;

ballY -= ballYVel;

} else if (ballDirection == 1) {

ballX += ballXVel;

ballY -= ballYVel;

} else if (ballDirection == 2) {

ballX += ballXVel;

ballY += ballYVel;

} else if (ballDirection == 3) {

ballX -= ballXVel;

ballY += ballYVel;

}

if (ballDirection == 0 && ballX <>

ballDirection = 1;

} else if (ballDirection == 0 && ballY <>

ballDirection = 3;

} else if (ballDirection == 1 && ballY <>

ballDirection = 2;

} else if (ballDirection == 1 && ballX > getWidth()) {

ballDirection = 0;

if (sleepTime > 5) sleepTime--;

} else if (ballDirection == 2 && ballY > getHeight()) {

ballDirection = 1;

} else if (ballDirection == 2 && ballX > getWidth()) {

ballDirection = 3;

if (sleepTime > 5) sleepTime--;

} else if (ballDirection == 3 && ballY > getHeight()) {

ballDirection = 0;

} else if (ballDirection == 3 && ballX <>

ballDirection = 2;

}

if (ballDirection == 0 && ballSprite.collidesWith(padSprite, false)) {

ballDirection = 1;

} else if (ballDirection == 3 && ballSprite.collidesWith(padSprite, false)) {

ballDirection = 2;

} else if (ballDirection == 1 && ballSprite.collidesWith(AISprite, false)) {

ballDirection = 0;

} else if (ballDirection == 2 && ballSprite.collidesWith(AISprite, false)) {

ballDirection = 3;

}

}

private void movePad() {

int keyState = getKeyStates();

if ((keyState & UP_PRESSED) != 0 && padY > padSprite.getHeight() / 2) {

padY -= padYVel;

} else if ((keyState & DOWN_PRESSED) != 0 && padY <>

padY += padYVel; }

}

private void moveAI() {

Random random = new Random();

actX = getWidth() / 3 + Math.abs(random.nextInt() % (getWidth() / 8));

if (ballY <> actX && AIY > AISprite.getHeight() / 2) AIY -= AIYVel;

if (ballY > AIY && ballX > actX && AIY <>

}

}



:D:D udah jalan toh gamenya yach...Ok.. tinggal satu lagi yang perlu di tambahkan yaitu : penambahan Score masing-masing Pemain. Silahkan Baca Praktek 6 : Akhir dari Petualangan Game Pimpong

Praktek 4 Game Pimpong : Collision Detection

18.48 Diposting oleh Gunawan

Seperti janji saya pada praktek 3 : Menambahkan Image Menggunakan Sprite, kali ini saya akan mencoba Menggerakan gambar hasil praktek 3. Perhatikan gambar berikut :


Perhatikan gambar di atas, kita akan membuat 4 jalur pergerakan dari bola yaitu :

Jalur 0 bergerak ke atas miring ke kiri rumus :

X -- ( posisi X selalu di kurangi 1 sehingga bergerak ke kiri)

Y -- ( posisi Y selalu di kurangi 1 sehingga bergerak ke atas)

Karena kita mengurangi nilai x dan y bersamaan maka pergerakan ke atas miring ke kiri, lihat pada gambar arah pergerakan 0.

Jalur 1 bergerak ke atas miring ke kanan rumus :

X ++ ( posisi X selalu di kurangi 1 sehingga bergerak ke kanan)

Y -- ( posisi Y selalu di tambah 1 sehingga bergerak ke atas)

Karena kita menambah nilai x dan mengurangi nilai y bersamaan maka pergerakan ke atas miring ke kanan, lihat pada gambar arah pergerakan 1.

Jalur 2 bergerak ke bawah miring ke kanan rumus :

X ++ ( posisi X selalu di tambah 1 sehingga bergerak ke kanan)

Y ++ ( posisi Y selalu di tambah 1 sehingga bergerak ke bawah)

Karena kita menambah nilai x dan y bersamaan maka pergerakan ke bawah miring ke kanan, lihat pada gambar arah pergerakan 2.

Jalur 3 bergerak ke bawah miring ke kiri rumus :

X -- ( posisi X selalu di kurangi 1 sehingga bergerak ke kiri)

Y ++ ( posisi Y selalu di kurangi 1 sehingga bergerak ke bawah)

Karena kita mengurangi nilai x dan menambah nilai y bersamaan maka pergerakan ke bawah miring ke kiri, lihat pada gambar arah pergerakan 3

Langkah – Langkah yang perlu di lakukan :

  1. Penamaan Variabel atau pendifinisian Variabel
  2. Pembatasan arah pergerakan bola dengan mengimplementasikan fungsi logika

Penamaan Variabel

Misalnya nama variable untuk ke empat arah pergerakan bolla adalah ballDirection dengan nilai default = 1, maka kita harus mendifinisikan variable seperti berukut :

Private int ballDirection = 1;

Pembatasan Pergerakan

Pada kasus ini kita akan membatasi arah pergerakan bola sampai X bernilai 0 ( berada pada posisi 0) atau X bernilai getWidth() dan atau Y bernilai 0 (Y berada pada posisi 0) atau Y bernilai getHieght(), artinya saat bola menyentuh garis pinggir layar maka akan terpantul kembali.

Info :

getWidth() dan getHeight() merupakan pendifinisian dari nilai maksimal dari X dan Y.

Ok..kita langsung saja merubah methode mobeBall() pada class PongCanvas :

/* -------------------------------------

* Nama File : PongCanvas.java

* by Gunawan

* jagungodak@yahoo.com

*--------------------------------------

*/

import java.io.IOException;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.Image;

import javax.microedition.lcdui.game.GameCanvas;

import javax.microedition.lcdui.game.Sprite;

public class PongCanvas extends GameCanvas implements Runnable {

private int sleepTime=30;

private Image ballImg;

private Sprite ballSprite;

private int ballX = getWidth()/2;

private int ballY = getHeight()/2;

Private int ballDirection = 1;

private final static int ballXVel=3;

private final static int ballYVel=1;

public PongCanvas() {

super(false);

}

public void run(){

while(true){

updateScreen(getGraphics());

try{

Thread.sleep(sleepTime);

}catch(Exception ex){

}

}

}

public void start(){

try{

ballImg=Image.createImage("/face.png");

}catch(IOException ioex){

System.out.println("Kesalahan Pada Image"+ioex);

}

ballSprite=new Sprite(ballImg);

ballSprite.defineReferencePixel(2, 2);

ballSprite.setRefPixelPosition(ballX, ballY);

Thread runner=new Thread(this);

runner.start();

}

private void createBackground(Graphics g){

g.setColor(0x000000);

g.fillRect(0, 0, getWidth(), getHeight());

}

private void updateScreen(Graphics g){

createBackground(g);

moveBall;

ballSprite.setRefPixelPosition(ballX , ballY);

ballSprite.paint(g);

flushGraphics();

}

public void moveBall(){

if (ballDirection == 0) {

ballX -= ballXVel;

ballY -= ballYVel;

} else if (ballDirection == 1) {

ballX += ballXVel;

ballY -= ballYVel;

} else if (ballDirection == 2) {

ballX += ballXVel;

ballY += ballYVel;

} else if (ballDirection == 3) {

ballX -= ballXVel;

ballY += ballYVel;

}

if (ballDirection == 0 && ballX <>

ballDirection = 1;

} else if (ballDirection == 0 && ballY <>

ballDirection = 3;

} else if (ballDirection == 1 && ballY <>

ballDirection = 2;

} else if (ballDirection == 1 && ballX > getWidth()) {

ballDirection = 0;

if (sleepTime > 5) sleepTime--;

} else if (ballDirection == 2 && ballY > getHeight()) {

ballDirection = 1;

} else if (ballDirection == 2 && ballX > getWidth()) {

ballDirection = 3;

if (sleepTime > 5) sleepTime--;

} else if (ballDirection == 3 && ballY > getHeight()) {

ballDirection = 0;

} else if (ballDirection == 3 && ballX <>

ballDirection = 2;

}

}

}

Untuk mengetes jangan lupa klik Build pada WTK2.5.


Selanjutnya kita akan menambahkan gambar yang akan di gerakan oleh user dan gambar yang di gerakan oleh hp sehingga terbentuk sebuah permainan. Silahkan ke Praktek 5 Game Pimpong : User Input

Praktek 3 Game PimPong : Menambahkan Bolla menggunakan Sprite

17.18 Diposting oleh Gunawan

Pada praktek sebelumnya yaitu Praktek 2 Game Pimpong : membuat Background, kita sudah berhasil mengubah tampilan layer dengan warna hitam. Pada praktek kali ini kita akan mencoba menambahkan bolla di tengah-tengah layer yang akan selalu bergerak selama aplikasi di jalankan.

Merencanakan Gambar Bolla

Ok… pertama-tama kita harus merencanakan gambar bola yang akan di letakan di layar. Pada praktik ini saya akan mencoba membuat sebuah bola warna putih ukuran 3 X 3 pixel, ingat 3 X 3 Pixel. Jika anda kreatif membuat gambar bola silahkan kreasi sendiri, tapi perlu di ingat untuk praktek kali ini ukurannya 3 x 3 pixel.

Berikut gambar bola ukuran 3 X 3 Pixel : download di sini (Klik kanan lalu klik Save target As..)

Silahkan download dan simpan gambar tesebut ke dalam folder “res” di drive C:/WTK25/APPS/GamePimpong/res.
Setelah gambar tersimpan buka kembali file PongCanvas.java, kemudian tambahkan script-script berikut sehingga menjadi seperti berikut :

/* -------------------------------------

* Nama File : PongCanvas.java

* by Gunawan

* jagungodak@yahoo.com

*--------------------------------------

*/

import java.io.IOException;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.Image;

import javax.microedition.lcdui.game.GameCanvas;

import javax.microedition.lcdui.game.Sprite;

public class PongCanvas extends GameCanvas implements Runnable {

private int sleepTime=30;

private Image ballImg;

private Sprite ballSprite;

private int ballX = getWidth()/2;

private int ballY = getHeight()/2;

public PongCanvas() {

super(false);

}

public void run(){

while(true){

updateScreen(getGraphics());

try{

Thread.sleep(sleepTime);

}catch(Exception ex){

}

}

}

public void start(){

try{

ballImg=Image.createImage("/face.png");

}catch(IOException ioex){

System.out.println("Kesalahan Pada Image"+ioex);

}

ballSprite=new Sprite(ballImg);

ballSprite.defineReferencePixel(2, 2);

ballSprite.setRefPixelPosition(ballX, ballY);

Thread runner=new Thread(this);

runner.start();

}

private void createBackground(Graphics g){

g.setColor(0x000000);

g.fillRect(0, 0, getWidth(), getHeight());

}

private void updateScreen(Graphics g){

createBackground(g);

ballSprite.setRefPixelPosition(ballX , ballY);

ballSprite.paint(g);

flushGraphics();

}

}



Perhatikan baris yang berwarna merah. Baris tersebut merupakan baris penambahan dari class PongCanvas atau file PongCanvas.java.

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;

Potongan script diatas merupakan class java yang bermanfaat saat kita meletakan gambar di atas Canvas menggunakan Sprite. Sedangkan perintah pemanggilan gambar untuk di letakan ke dalam canvas berupa Sprite yaitu :
try{
ballImg=Image.createImage("/face.png");
}catch(IOException ioex){
System.out.println("Kesalahan Pada Image"+ioex);
}
ballSprite=new Sprite(ballImg);
ballSprite.defineReferencePixel(2, 2);
ballSprite.setRefPixelPosition(ballX, ballY);

HAsil akhir dari game setelah melakukan penambahan seperti diatas seperti gambar di bawah ini.



Membuat Gambar Bola bergerak.
Alangkah tidak sempurnanya jika bola tersebut tidak bergerak, oleh karenanya beriku akan di jelaskan tehnik menggerakan gambar bola dari hasil penambahan sprite image di atas. Langkah-langkah yang perlu dilakukan :
1. Menambahkan variable-variabel yang dibutuhkan
2. Membuat Methode untuk menjalankan bola
3. Memanggil methode menjalankan bola melalui methode updateScreen()

Ok… kita langsung saja membuka file PongCanvas.java dan lakukan perubahan sesuai dengan script di bawah :

/* -------------------------------------

* Nama File : PongCanvas.java

* by Gunawan

* jagungodak@yahoo.com

*--------------------------------------

*/



import java.io.IOException;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.Image;

import javax.microedition.lcdui.game.GameCanvas;

import javax.microedition.lcdui.game.Sprite;

public class PongCanvas extends GameCanvas implements Runnable {

private int sleepTime=30;

private Image ballImg;

private Sprite ballSprite;

private int ballX = getWidth()/2;

private int ballY = getHeight()/2;

private final static int ballXVel=3;

private final static int ballYVel=1;

public PongCanvas() {

super(false);

}

public void run(){

while(true){

updateScreen(getGraphics());

try{

Thread.sleep(sleepTime);

}catch(Exception ex){

}

}

}

public void start(){

try{

ballImg=Image.createImage("/face.png");

}catch(IOException ioex){

System.out.println("Kesalahan Pada Image"+ioex);

}

ballSprite=new Sprite(ballImg);

ballSprite.defineReferencePixel(2, 2);

ballSprite.setRefPixelPosition(ballX, ballY);

Thread runner=new Thread(this);

runner.start();

}

private void createBackground(Graphics g){

g.setColor(0x000000);

g.fillRect(0, 0, getWidth(), getHeight());

}

private void updateScreen(Graphics g){

createBackground(g);

moveBall;

ballSprite.setRefPixelPosition(ballX , ballY);

ballSprite.paint(g);

flushGraphics();

}

public void moveBall(){

ballX += ballXVel;

ballY += ballYVel;

}

}


Ok… dengan script di atas bola akan bergerak ke kanan miring ke bawah sampai dia menghilang. :D gak usah kuatir itu Cuma script dasar menggerakan bola script lengkapnya silahkan di lanjut ke Praktek 4 Game Pimpong : Colision Detection

Praktik 2 Game Pimpong : Membuat Background

17.33 Diposting oleh Gunawan

Kelanjutan dari praktik sebelumnya tentang Praktek 1 Game Pimpong : Membangun Class MIDlet dan GameCaanvas, kali ini kita akan mencoba membuat sebuah background dari layar dengan warna hitam. Jika dari hasil praktik sebelumnya kita jalankan, maka hanya menghasilkan latarbelakang / background dengan warna putih tanpa coretan dan atau tulisan.

Untuk membuat background dari canvas, kita membutuhkan class Graphics dari MIDlet. Oleh karenanya kita harus meng-import class Graphics yang ada pada javax.microedition.lcdui.Graphics dengan perintah

import javax.microedition.lcdui.Graphics;

Setelah kita mengimplementasikan class Graphics, langkah selanjutnya yang perlu di lakukan adalah membuat methode untuk membuat warna latar dengan warna hitam. Methode ini kita beri nama createBackground.

private void createBackground(Graphics g){

g.setColor(0, 0, 0);

g.fillRect(0, 0, getWidth(), getHeight());

}

Methode ini akan membuat warna hitam pada layer, jika menginginkan warna lain tinggal kita ganti nilai 0 menjadi nilai 1 – 255 dimana 0 yang pertama untuk Merah, 0 yang ke dua untuk kuning dan 0 yang ke tiga untuk biru.

private void updateScreen(Graphics g){

createBackground(g);

flushGraphics();

}

Methode di atas juga methode baru yang di tambahkan kedalam class PongCanvas. Methode ini digunakan untuk mengganti warna layer saat MIDlet di jalankan.

Berikut hasil dari penambahan script pada file PongCanvas.java:

/* -------------------------------------

* Nama File : PongCanvas.java

* by Gunawan

* jagungodak@yahoo.com

*--------------------------------------

*/

import java.io.IOException;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.game.GameCanvas;

public class PongCanvas extends GameCanvas implements Runnable {

private int sleepTime=30;

public PongCanvas() {

super(false);

}

public void run(){

while(true){

updateScreen(getGraphics());

try{

Thread.sleep(sleepTime);

}catch(Exception ex){

}

}

}

public void start(){

Thread runner=new Thread(this);

runner.start();

}

private void createBackground(Graphics g){

g.setColor(0x000000);

g.fillRect(0, 0, getWidth(), getHeight());

}

private void updateScreen(Graphics g){

createBackground(g);

flushGraphics();

}

}

Perhatikan baris yang berwarna merah, baris tersebut merupakan baris penambahan dari file PongCanvas.java sebelumnya. Lakukan compilasi dengan mengklik tombol Build.

Hasil pembuatan background seperti berikut :



OK..Peratik berikutnya kita akan mencoba menambahkan Image ke dalam kanvas silahkan menuju Praktek 3 :Menambahkan Bolla Menggunakan Sprite

Praktikum 1 Game Pimpong : Membangun Class MIDlet dan GameCanvas

17.27 Diposting oleh Gunawan

Pada praktek kali ini kita akan mencoba membuat sebuah game sederhana menggunakan MIDlet Java 2 Micro Edition atau sering di sebut dengan J2ME. Untuk bisa membuat aplikasi game menggunakan MIDlet tentunya kita harus memahami apa itu MIDP, CLDC, MIDlet, WTK,JSR, dll. Untuk kali ini saya tidak akan membahas tentang beberapa hal tersebut, jika penasaran bisa anda minta bantuan pada paman google alias searching / mencarinya lewat google atau langsung aja ke situs resmi dari java yaitu sun.com.

Game yang akan kita buat kali ini adalah game PimPong dimana game ini sangatlah sederhana. Berikut hasil dari game yang akan kita buat pada praktek kali ini :

Ok…langsung saja kita akan mencoba membuat game tersebut menggunakan GUI Notepad++.

Kebutuhan Software :

- Java SDK 6

- WTK 2.5 (Java Wireless Tool Kit)

- Notepad++ atau Gui yang lain.

LANGKAH 1 :

Buatlah project baru dengan nama “Game Pimpong” dengan cara : Buka WTK (wireless Toolkit ), Klik Start --- All Programs ---Java (TM) Wireless Tool Kit 2.5 --- Wireless Tool Kit 2.5. Pada Kotak dialog yang tampil Klik New Project atau Klik File --- New Project .

Pada Project Name masukan nama project yaitu Game Pimpong

Pada MIDlet Class Name masukan nama class yaitu PimPong (Nama Class harus sesui dengan nama class midlet di script)

Setelah itu klik Create Project dan untuk mengakhiri klik OK.

Sekarang buka Notepad atau Notepad++ disarankan menggunakan Notepad++ untuk memudahkan kita mendeteksi letak kesalahan.

OK…Sebuah aplikasi MIDlet tentu membutuhkan File Utama / Main Class dimana pada file utama ini merupakan turunan dari class midlet. Jadi Kita membutuhkan script berikut :

/* -------------------------------------

* Nama File : PimPong.java

* by Gunawan

* jagungodak@yahoo.com

*/

import javax.microedition.midlet.*;

public class PimPong extends MIDlet {

public void startApp() {

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

}

Simpan script di atas dengan nama PimPong.java di drive

C:/WTK25/APPS/Game Pimpong/src

Setelah itu kembali ke WTK, klik Clear Console kemudian klik Build utntuk medeteksi kesalahan, jika build Complite berarti tidak ada kesalahan, proses berikutnya dapat di lanjutkan.

LANGKAH 2 :

Langkah berikutnya yang kita lakukan adalah membuat Canvas dari Game. Sama halnya dengan kita melukis dengan adanya Canvas kita bisa menggambar benda apapun sesuai dengan keinginan kita.

Buka kembali Notepad++ lalu buat document baru dengan cara Klik File --- NEW

Berikut script dari GameCanvas :

/* -------------------------------------

* Nama File : PongCanvas.java

* by Gunawan

* jagungodak@yahoo.com

*--------------------------------------

*/

import java.io.IOException;

import javax.microedition.lcdui.game.GameCanvas;

public class PongCanvas extends GameCanvas implements Runnable {

private int sleepTime=30;

public PongCanvas() {

super(false);

}

public void run(){

while(true){

try{

Thread.sleep(sleepTime);

}catch(Exception ex){

}

}

}

public void start(){

try{

}catch(IOException ioex){

System.out.println("Kesalahan Pada "+ioex);

}

Thread runner=new Thread(this);

runner.start();

}

}

Simpan file tersebut dengan nama PongCanvas.java di folder yang sama dengan file PimPong.java. untuk mengetes ada tidaknya kesalahan klik Clear Consul lalu klik Build.

LANGKAH 3 :

Pada praktik kali ini kita sudah membuat 2 buah file yaitu PimPong.java dan PongCanvas.java. Langkah selanjutnya yaitu menggabungkan kedua file tersebut sehingga menjadi satu kesatuan yang terkait.

Pertama : aktifkan kembali file PimPong.java, tambahkan beberapa script sehingga menjadi script berikut :

/* -------------------------------------

* Nama File : PimPong.java

* by Gunawan

* jagungodak@yahoo.com

*/

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*; //Penambahan

public class PimPong extends MIDlet {

private static PongCanvas pongCanvas;

public PimPong(){

pongCanvas=new PongCanvas();

}

public void startApp() {

Display display=Display.getDisplay(this);

pongCanvas.start();

display.setCurrent(pongCanvas);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

}

Klik Save untuk menyimpan. Perhatikan baris / script yang berwarna merah .Script yang berwarna merah merupakan script tambahan untuk menggabungkan Class PongCanvas.java ke dalam file PimPong.java. Serta pendifinisian Display yang akan di gunakan.

Langkah berikutnya adalah membuat latarbelakang / background dari canvas. Pembuatan background dari canvas akan di jelaskan pada Praktik 2 Game Pimpong : Membuat Background

Tugas I D3TKJ Kelas A,B,C Semester 4

21.32 Diposting oleh Gunawan

TUGAS :

1. Carilah contoh-contoh penggunaan Timer pada pembuatan Game berbasis MIDlet J2ME. Contohnya dapat di lihat di sini


info:
Script boleh dicari di internet.

Praktek 1 : Timer Animation

16.32 Diposting oleh Gunawan

Timer berfungsi sebagai pengatur waktu sebuah background atau task schedule sebuah game.
Timer di definisikan oleh 2 kelas yaitu java.until.TimerTask dan java.until.Timer

Berikut contoh dari Timer :



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

public class TimerAnimation extends MIDlet{
private Display display;
private AnimationCanvas canvas;
private Timer timer;
private AnimateTimerTask timertask;

public TimerAnimation(){
display = Display.getDisplay(this);
timer = new Timer();
canvas = new AnimationCanvas(this);
timertask = new AnimateTimerTask(canvas);
timer.schedule(timertask, 0, 100);
}

protected void startApp(){
display.setCurrent(canvas);
}

protected void pauseApp(){}

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

public void exitMIDlet(){
destroyApp(true);
}
}

class AnimateTimerTask extends TimerTask{
private AnimationCanvas canvas;

public AnimateTimerTask(AnimationCanvas canvas){
this.canvas = canvas;
}

public final void run(){
if ((canvas.x_loc + canvas.radius + canvas.x_dir > canvas.getWidth()) ||
(canvas.x_loc - canvas.radius + canvas.x_dir < x_dir =" -canvas.x_dir;"> canvas.getHeight()) ||
(canvas.y_loc - canvas.radius + canvas.y_dir < y_dir =" -canvas.y_dir;" clean =" false;" change_way =" 0;" max_changes =" 50;" a_midlet =" a_midlet;" random =" new" radius =" 7;" exit =" new" fire =" getKeyCode(FIRE);" right =" getKeyCode(RIGHT);" left =" getKeyCode(LEFT);"> MAX_CHANGES){
init();
}
if (clean){
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
clean = !clean;
}
g.setColor(red, green, blue);
g.fillArc( x_loc, y_loc, radius, radius, 0, 360);
}

private void init(){
x_loc = getWidth() / 2;
y_loc = getHeight() / 2;
x_dir = (random.nextInt() % 10);
if (x_dir == 0) x_dir = 1;
y_dir = (random.nextInt() % 10);
if (y_dir == 0) y_dir = 1;
change_way = 0;
clean = true;
changeColor();
}

protected void changeColor(){
red = (random.nextInt() >>> 1) % 256;
green = (random.nextInt() >>> 1) % 256;
blue = (random.nextInt() >>> 1) % 256;
}

public void commandAction(Command c, Displayable d){
String label = c.getLabel();
if (label.equals("Exit"))
a_midlet.exitMIDlet();
}

protected void keyPressed(int keyCode){
if (keyCode == fire)
init();
else if (keyCode == left)
radius = Math.max(1, --radius);
else if (keyCode == right)
radius = Math.min(getWidth() / 4, ++radius);
}
}

Download Materi J2ME

17.25 Diposting oleh Gunawan

Silahkan download materi J2ME dari ITS


-
[   ]MC01_J2ME Introduction.ppt13-Dec-2008 12:53 2.2M
[   ]MC02_J2ME UI 1.ppt13-Dec-2008 12:53 2.1M
[   ]MC03_J2ME UI 2.ppt13-Dec-2008 12:53 513K
[   ]MC04_J2ME Persistent Storage.ppt13-Dec-2008 12:53 509K
[   ]MC05_J2ME Networking.ppt13-Dec-2008 12:53 461K
[   ]MC06_Servlet.ppt13-Dec-2008 12:53 666K
[   ]MC08_Mobile Application UI Design.ppt13-Dec-2008 12:53 1.2M
[   ]MC10_J2ME Low Level UI2.ppt13-Dec-2008 12:53 1.0M
[   ]MC11_J2ME_Game_Animation.pdf13-Dec-2008 12:53 119K
[   ]MC12_J2ME_Game_Animation.pdf