February 16, 2009

Menggerakan Mobil Dengan Menggunakan Mouse

Sekarang saya akan mencampur beberapa Scenario yang telah saya buat menggunakan Greenfoot. Pertama, saya menggunakan Scenario sebelumnya yang digunakan untuk mendeteksi Mouse input (download disini).

Setelah semuanya siap, copy/paste class Mover dari sini.

Pertama, saya mengcopy/paste class mover di subclass nya actor.

public class Mover extends Actor{......

Kedua, saya membuat subclass dari Mover, yaitu Mobil.

public class Mobil extends Mover{......

Setelah itu menambah fungsi/method baru, turnTo(int x, int y) di dalam class Mover.
Method turnTo(int x, int y) menggunakan Trigonometri.

public class Mover extends Actor
{
........
.....
....
public boolean atWorldEdge()
{
.......
}
/** Ini methodnya **/
public void turnTo(int x, int y)
{
int turnAngle = 0;
int deltaX = x - this.getX();
int deltaY = y - this.getY();

turnAngle = (int) (180 * Math.atan2(deltaY, deltaX) /Math.PI);
setRotation(turnAngle);
}

}

Keempat, saya memindahkan method act() di subclass nya world, Papan class, Ke act() di Mobil class.

/** di Mobil.class **/
public void act(){
if(Greenfoot.mouseClicked(null))
{
Greenfoot.playSound("mouseClick.wav");
}
}

Membuat Mobil Tertuju ke Arah Klik


Didalam act() Mobil, kita tambahkan objek bernama MouseInfo, karena kita membutuhkan data tentang posisi klik mouse / tujuan kita.
objek MouseInfo mengandung data data tentang mouse.
objek MouseInfo dipanggil menggunakan static method Greenfoot.getMouseInfo()

public void act()
{
if(Greenfoot.mouseClicked(null))
{
Greenfoot.playSound("mouseClick.wav");
MouseInfo mi = Greenfoot.getMouseInfo();
}
}

Setelah meng "initialize" objek 'mi', kita ambil data data yang ada pada objek tersebut, diantaranya adalah posisi x dan y nya.

public void act()
{
if(Greenfoot.mouseClicked(null))
{
Greenfoot.playSound("mouseClick.wav");
MouseInfo mi = Greenfoot.getMouseInfo();
int mx = mi.getX(); // kita ambil posisi x nya
int my = mi.getY(); // kita ambil posisi y nya
}
}

Setelah mendapatkan data data yang dibutuhkan, mari kita laksanakan method yang kita paste sebelumnya ke class Mover, method turnTo() !

public void act()
{
if(Greenfoot.mouseClicked(null))
{
Greenfoot.playSound("mouseClick.wav");
MouseInfo mi = Greenfoot.getMouseInfo();
int mx = mi.getX(); // kita ambil posisi x nya
int my = mi.getY(); // kita ambil posisi y nya
turnTo(mx,my);
}
}

Berhasil, kita telah membuat Mobil yang kita buat mengarah ke arah klik!
Sekarang, langsung saja tambahkan method move agar mobil itu bergerak.

public void act()
{
move(3); // <<<
if(Greenfoot.mouseClicked(null))
{
Greenfoot.playSound("mouseClick.wav");
MouseInfo mi = Greenfoot.getMouseInfo();
int mx = mi.getX(); // kita ambil posisi x nya
int my = mi.getY(); // kita ambil posisi y nya
turnTo(mx,my);
}
}

Langkah terakhir! membuat dan memasukan objek Mobil kedalam Papan (subclass nya World)

public Papan()
{
super(400, 200, 1);
addObject(new Mobil(), Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
}

Compile !
Applet sama sourcenya menyusul! :D

No comments:

Post a Comment