Feeds:
Posts
Comments

Archive for the ‘Ngoding’ Category

Kali ini saya akan share mengenai bagaimana membuat game collision dengan sprite di java. Kita akan memanfaatkan method collidesWith yang dimiliki oleh class sprite.

Untuk membuat kasus ini paling tidak ada 4 script java yang harus disiapkan yaitu midlet, gamecanvas dan 2 script untuk sprite itu sendiri.

Langsung saja, file-file yang sudah saya buat untuk contoh di atas adalah sebagai berikut:

Midlet


import javax.microedition.lcdui.Display;
import javax.microedition.midlet.*;
/**
* @author Yudhistira
*/
public class GambarGerak extends MIDlet {
Display ds;
RotateCanvas rc =new RotateCanvas();

public void startApp() {
ds= Display.getDisplay(this);
ds.setCurrent(rc);
rc.start();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}

}

Sprite (benda pertama)


import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
/**
*
* @author Yudhistira
*/
public class bonteng extends Sprite{

public bonteng(Image image) {
super(image);
setRefPixelPosition(getWidth()*4/3, getWidth()*4/3);
}

}

Sprite (benda kedua)


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

/**
*
* @author Yudhistira
*/
public class brokoli extends Sprite {

int koorx, koory;
int awalx, awaly;

public brokoli(Image image) {
super(image);
koorx = getWidth();
koory = getHeight();
setPosition(koorx, koory);
}

public void kiri() {
koorx = koorx - 1;
setPosition(koorx, koory);
simpanPos();
}

public void kanan() {
koorx = koorx + 1;
setPosition(koorx, koory);
simpanPos();
}

public void atas() {
koory = koory - 1;
setPosition(koorx, koory);
simpanPos();
}

public void bawah() {
koory = koory + 1;
setPosition(koorx, koory);
simpanPos();
}

public void simpanPos() {
awalx = koorx;
awaly = koory;
}

public void kembaliPos() {
setPosition(awalx, awaly);
}
}

GameCanvas


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.LayerManager;

/**
*
* @author Yudhistira
*/
public class RotateCanvas extends GameCanvas implements Runnable {

int koorx, koory;
GambarSprite gs;
bonteng bt;
brokoli bk;
LayerManager lm;
boolean flag = false;

public RotateCanvas() {
super(true);
koorx = getWidth();
koory = getHeight();
try {
bt = new bonteng(Image.createImage("/bonteng.jpg"));
bk = new brokoli(Image.createImage("/brokoli.jpg"));
lm = new LayerManager();
lm.append(bt);
lm.append(bk);

} catch (IOException ex) {
ex.printStackTrace();
}

}

private void drawImage(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
lm.paint(g, 0, 0);
flushGraphics();
}

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

public void run() {
Graphics gp = getGraphics();

while (flag) {
try {
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0) {
bk.kiri();
} else if ((keyState & RIGHT_PRESSED) != 0) {
bk.kanan();
} else if ((keyState & UP_PRESSED) != 0) {
bk.atas();
} else if ((keyState & DOWN_PRESSED) != 0) {
bk.bawah();
}
if (tabrakan()) {
bk.kembaliPos();
System.out.println("Collision happen... tabrakan euyyy");
} else {
drawImage(gp);
}
Thread.sleep(20);

} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}

private boolean tabrakan() {
boolean fl = false;
if (bk.collidesWith(bt, true)) {
fl = true;
}
return fl;
}
}

Percobaan di atas sudah proven ditest dengan netbean 7.3 dan dideploy di nokia N700

Tampilan saat dirun

Tampilan saat dirun

 

Read Full Post »

Memilih Topik TA

Tugas akhir untuk seorang mahasiswa seringkali menjadi topik menarik, ada beberapa mahasiswa sudah mengetahui akan subjek yang akan dibahas namun kesulitan untuk memberikan judul/topik untuk subjek tersebut, apakah ada batasan-batasan untuk memberikan judul misalnya panjang judul, keseragaman bahasa (ada sisipan bahasa asingnya) , ada istilah-istilah teknologi dan seterusnya.

Usahakan membuat judul jangan berbentuk frase dan berbelit-belit (pabaliut) , contoh judul : “Orang itu cantik” kalo ada frasenya menjadi “Orang berbaju merah yang duduk di pojok kantin dekat sekolah  itu cantik”  hemmmm.. lieurrr 😀

Saya menyarankan inti dari judul itu harus memberikan gambaran akan subjek yang dibahas, dan harus bisa membuat orang jatuh hati untuk membaca TA tersebut, dari judul, orang bisa tau akan problem solving yang dibahas.

Read Full Post »

Ini contoh script untuk membuat Game Canvas, mudah-mudahan ada manfaatnya. Pertama kita bikin file java midletnya seperti berikut

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

/**
 * @author Yudhi
 */
public class DinamisMidlet extends MIDlet {
 Display ds;
 public void startApp() {
 ds=Display.getDisplay(this);
 DinamisCanvas dc=new DinamisCanvas();
 ds.setCurrent(dc);
 }

 public void pauseApp() {
 }

 public void destroyApp(boolean unconditional) {
 }
}

Setelah itu baru buat file javanya

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

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Yudhi
 */
public class DinamisCanvas extends GameCanvas implements Runnable {

 private int koorx;
 private int koory;
 private boolean flag = true;
 private Sprite sp;

 public DinamisCanvas() {
 super(true);
 koorx = getWidth();
 koory = getHeight();
 Image img;
 try {
 img = Image.createImage("/ngebut.jpg");
 sp = new Sprite(img);
 } catch (IOException ex) {
 ex.printStackTrace();
 }

 Thread th=new Thread(this);
 th.start();
 }

 public void run() {
 Graphics gp = getGraphics();
 while (flag == true) {
 gerak();
 tulis(gp);
 try {
 Thread.sleep(20);
 } catch (InterruptedException ex) {
 ex.printStackTrace();
 }
 }
 }

 private void gerak() {
 int state = getKeyStates();
 if ((state & LEFT_PRESSED) != 0) {
 koorx = koorx - 1;
 sp.setTransform(sp.TRANS_MIRROR_ROT90);
 }else if ((state & RIGHT_PRESSED)!=0){
 koorx = koorx + 1;
 sp.setTransform(sp.TRANS_MIRROR_ROT180);
 }else if ((state & UP_PRESSED)!=0){
 koory = koory - 1;
 sp.setTransform(sp.TRANS_MIRROR_ROT270);
 }else if ((state & DOWN_PRESSED)!=0){
 koory = koory + 1;
 sp.setTransform(sp.TRANS_MIRROR);
 }
 }

 private void tulis(Graphics g) {
 g.setColor(255, 255, 255);
 g.fillRect(0, 0, getWidth(), getHeight());
 g.setColor(0, 0, 255);
//        try {
//            g.drawString("Bergerak...", koorx / 2, koory / 2, g.TOP | g.HCENTER);
//            Image img = Image.createImage("/ngebut.jpg");
//            g.drawImage(img, koorx / 2, koory / 2, g.TOP | g.HCENTER);
//        } catch (IOException ex) {
//            ex.printStackTrace();
//        }
 sp.setPosition(koorx / 2, koory / 2);
 sp.paint(g);

 flushGraphics();
 }
}

Menarik juga ya 🙂

Read Full Post »