Monkey in Paper
Pada kesempatan kali ini akan dibuat sebuah aplikasi game yang berjudul
Monkey in Paper. Game ini dibuat dengan aplikasi Greenfoot. Game ini diberi
nama Monkey in Paper karena pada seluruh pembuatan game ini objek serta
penggunaan background-nya berwarna hitam dan putih seperti di atas sebuah kertas.
Jadilah judul Monkey in Paper ini diambil.
Secara umum, game ini sangatlah mudah dan dapat dimainkan oleh siapa saja.
Ada sebuah objek yaitu seekor monyet yang membawa keranjang. Tugas dari monyet
tersebut adalah menangkap objek yang harus ditangkap yaitu pisang. Setiap pisang
yang ditangkap bernilai 10. Ada satu objek lain yaitu bom. Dimana bom itu akan
menyebabkan score berkurang apabila monyet mengenainya. Score akan berkurang
sesuai dengan lamanya monyet mengenai bom tersebut. Game akan selesai apabila
score telah mencapai angka 50.
Berikut pembahasan serta langkah untuk membuat game Monkey in Paper
ini:
1. Buka Greenfoot. Pada World Classes buat new subclass dengan cara klik
kanan pada World new subclass. Pilih Beri nama kelas dengan nama
Paper. Lalu pilih image untuk dijadikan background. Lalu klik OK.
Gambar 2. World
2. Pada Actor Classes buat new subclass dengan cara klik kanan pada Actor
new subclass. Beri nama kelas dengan nama Objek. Lalu klik OK.
3. Pada Class Objek, buat subclass baru dengan cara klik kanan pada Objek
new subclass. Beri nama kelas dengan nama Monkey Lalu klik OK.
Lalukan hal yang sama untuk membuat subclass Banana dan Bomb.
4. Buat juga subclass baru pada Actor dengan nama Score dan Counter
Gambar 3. World
5. Lalu pada World Classes Paper, klik kanan, pilih Open Editor.
Source code pada World Classes Paper:
import greenfoot.*;
Greenfoot
/**
* Write a description of class Paper here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Paper extends World
{
/**
* Constructor untuk objects dari class Paper.
*/
public Paper()
{
// Buat world dengan ukuran 720x480 cells dengan cell size
1x1 pixels
super(720, 480, 1);
BananaAppear(); //method BananaAppear
prepare(); //method prepare
BombAppear(); //method BombAppear
}
public void act() //method act
{
if (getObjects(Banana.class).isEmpty()) BananaAppear();
if (getObjects(Bomb.class).isEmpty()) BombAppear();
}
private void prepare() //method prepare untuk menentukan posisi
dari kelas objek masing-masing
{
Monkey monkey = new Monkey();
addObject(monkey, 648, 403);
Counter counter = new Counter();
addObject(counter, 57, 69);
Score score = new Score();
addObject(score, 64, 44);
score.setLocation(59, 44);
monkey.setLocation(373, 403);
}
public void BananaAppear() //method BananaAppear
{
if(Greenfoot.getRandomNumber(2) < 50)
{
addObject(new Banana(),
Greenfoot.getRandomNumber(519),20);
}
}
public void BombAppear() //method BombAppear
{
if(Greenfoot.getRandomNumber(2) < 50)
{
addObject(new Bomb(),
Greenfoot.getRandomNumber(519),21);
}
}
}
/**
* Write a description of class Objek here.
*
* @author (your name)
* @version (a version number or a date)
*/
//Konstruktor Objek pada World Actor
public class Objek extends Actor
{
public boolean atWorldEdge()
{
/**
* Method untuk memakan objek dari kelas 'clss'. Method 'eat'
akan dilakukan bila
* objek yang dimaksud ada. Selain objek tersebut, method tidak
dilakukan
*/
public void eat(Class clss)
{
Actor actor = getOneObjectAtOffset(0, 0, clss);
if(actor != null) {
getWorld().removeObject(actor);
}
}
}
7. Lalu pada Kelas Objek, subclass Bomb, klik kanan, pilih Open Editor.
Source code pada Kelas Objek, Subclass Bomb:
import greenfoot.*;
MouseInfo)
/**
* Write a description of class Rock here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Bomb extends Objek
{
/**
* Act - do whatever the Bomb wants to do. This method is called
whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
setLocation(getX(), getY()+5);
Bombing();
}
public void Bombing() //method Bombing
{
if (canSee(Monkey.class)) //bila melihat kelas Monkey
{
((Counter)getWorld().getObjects(Counter.class).get(0)).Counting(-1);
//kelas Count dikurangi sebanyak 1 poin
Greenfoot.playSound("boom.wav"); //Mainkan sound
boom.wav
}
if (atWorldEdge()) //bila objek berada di bawah world
{
getWorld().removeObject(this); //remove object
}
}
}
8. Lalu pada Kelas Objek, subclass Banana, klik kanan, pilih Open Editor.
Source code pada Kelas Objek, Subclass Banana :
import greenfoot.*;
MouseInfo)
/**
* Write a description of class Banana here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Banana extends Objek
{
/**
* Act - do whatever the Banana wants to do. This method is
called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
private int timer=0;
public void act() //method act
{
setLocation(getX(), getY()+6); //posisi objek banana,
kecepatan banana = +6
BananaFall(); //lakukan method BananaFall
}
public void BananaFall() //method BananaFall
{
if (atWorldEdge()) //jika objek banana berada di bawah
world
{
9. Lalu pada Kelas Objek, subclass Monkey, klik kanan, pilih Open Editor.
Source code pada Kelas Objek, Subclass Monkey:
import greenfoot.*;
MouseInfo)
/**
* Write a description of class Monkey here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Monkey extends Objek
{
/**
* Act - do whatever the Monkey wants to do. This method is
called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act() //method act
{
moveMonkey(); //method moveMonkey
objectDisappear(); //method objectDisappear
}
public void objectDisappear() //method objectDisappear
{
if (canSee(Banana.class)) //bila melihat kelas objek banana
{
eat(Banana.class); //eat kelas objek banana
((Counter)getWorld().getObjects(Counter.class).get(0)).Counting(10);
// kelas counter ditambah sebanyak 10 poin
Greenfoot.playSound("score.wav"); // mainkan sound
score.wav
}
}
public void moveMonkey() //method moveMonkey
{
if (Greenfoot.isKeyDown("left")) //bila arah panah ke kiri
ditekan
{
move(-7); //bergerak ke -7
}
/**
* Write a description of class Score here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Score extends Actor
{
/**
* Act - do whatever the Score wants to do. This method is
called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
// Add your action code here.
}
}
12. Setelah di Compile dan terdapat tulisan No Syntax Error maka program siap
dijalankan. Klik Run
1. Game Monkey in Paper terdiri atas beberapa objek yaitu objek banana,
bomb, dan monkey. Terdapat pula Score untuk menghitung counter nilai yang
didapatkan.
BANANA
COUNTER
SCORE
BOMB
MONKEYs
BASKET
MOVE TO
RIGHT
MOVE TO
LEFT
BANANA
4. Namun apabila Monkey mengenai objek Bomb, maka Score akan berkurang
sebanyak Monkey mengenai Bomb tersebut.
BOMB
5. Apabila Score lebih dari sama dengan 50 poin, maka game selesai. Dan akan
muncul terminal window seperti gambar di bawah ini.
SCORE >= 50
Gambar 10. Score lebih dari sama dengan 50 poin, game selesai