P a g e | 1
MEMBUAT GAME MENGGUNAKAN GREENFOOT
Sejarah Greenfoot
Greenfoot proyek yang telah dimulai oleh Michael Kölling pada tahun 2003, dan
prototipe yang pertama dibangun oleh Poul Henriksen (Magister siswa) dan Michael
Kölling (supervisor) di 2003/2004.
Dari 2005 pembangunan dilanjutkan melibatkan anggota lain dari BlueJ Group di
University of Kent dan Deakin University. Kemudian pertama rilis, Greenfoot versi
1.0, telah diterbitkan pada 31 Mei 2006, dengan lebih lanjut dan terus dikembangkan
dari sejak pertamarilis. Pada bulan Mei 2007, Greenfoot proyek telah mendapatkan
penghargaan "Duke's Choice Award" dalam kategori "Java Teknologi dalam
Pendidikan".
Greenfoot sendiri saat ini masih sedang dikembangkan di University of Kent dan
Deakin University dengan dukungan dari Sun Microsystems, dan Greenfoot itu
P a g e | 2
sendiri adalah gratis, karena Pelaksanaannya didasarkan pada pembangunan
lingkungan serta edukasi.
Greenfoot Software
Greenfoot adalah interaktif Java untuk pembangunan lingkungan, dikembangkan
terutama untuk keperluan pendidikan, serta memungkinkan untuk memudahkan
pembangunan aplikasi grafis dua dimensi, seperti simulasi dan permainan interaktif.
Greenfoot ini adalah sebuah program yang dikembangkan oleh Universitas of Kent
yang fungsinya untuk edukasi pemograman, dan software ini di design dengan
menggunakan Java. Software ini memungkinkan kita untuk membuat sebuah game 2
dimensi seperti Pacman, Supermario dan sebagainya.
Karena tujuan awalnya untuk edukasi pemograman, greenfoot ini awal mulanya
untuk menarik minat anak-anak untuk belajar memprogram, Greenfoot ini cocok
untuk anak usia 13 tahun keatas. Untuk menggunakannya sama seperti memprogram
biasa pada umumnya, berbentuk teks tapi jadi lebih mudah karena ada perangkat
bantu seperti class browser, editor, compiler.
Greenfoot juga mendukung bahasa Java secara penuh, dengan adanya perangkat
bantu tadi, membuat lebih mudah dalam memahami konsep OOP. Greenfoot
memungkinkan implemention dan interaksi dengan objek dalam konteks "skenario".
Di dalam project tersebut, kita bisa membuat dua macam tipe class dari library
greenfoot. Yaitu class world dan actor. Class World merupakan latar dari game yang
akan dibuat. Untuk membuat class world, caranya adalah dengan meng-klik new sub
class di bagian world. Maka akan mucul sebuah kotak dialog. Kemudian kita diminta
P a g e | 3
untuk memberi nama untuk kelas world tersebut. Setelah itu kita dapat memilih
gambar sebagai latar belakang class world yang akan kita buat. Di dalam greenfoot
sendiri telah tersedia beberapa gambar untuk latar belakang, seperti gambar tanah,
pasir, batu, air, dll. Class Actor adalah sebuah kelas yang berfungsi sebagai karakter
pada game yang akan kita buat. Untuk membuat actor caranya adalah dengan meng-
klik icon aktor, kemudian pilih new subclass. caranya hampir mirip dengan
pembuatan class world. Pada class actor juga telah disediakan beberapa gambar,
sepertii gambar animal, people, symbol, dll.
Pada greenfoot tersedia perangkat lunak download termasuk lunar lander game,
sebuah simulasi ants, dan kura-kura grafis. Juga tersedia angka simulasi, Conway
dari permainan kehidupan, dan pada layar piano. Setelah berada di bawah obyek
pembangunan, mereka dapat interaktif akan ditempatkan dalam Greenfoot 'dunia',
dan pengembang dapat berinteraksi langsung dengan obyek untuk memohon metode.
# Tampilan Awal Greenfoot
Greenfoot tersedia untuk Microsoft Windows , Mac OS X , Linux , Sun Solaris , dan
JVM (Java Virtual Machine)
P a g e | 4
Syarat Program :
Untuk dapat menjalankan program greenfoot di komputer, anda harus sudah
menginstal program Java 5 (JDK 1.5) atau dapat menggunakan Java 6( jdk-6u2-
windows-i586-p.exe)
Anda harus memiliki Java 5 (alias JDK 1.5) atau yang versi terbaru dan sudah
terinstal di sistem anda untuk dapat menggunakan Greenfoot.. Jangan download versi
bernama "JRE" (Java Runtime Environment) - JRE tidak cukup. Anda memerlukan
versi yang bernama JDK.
Cara instal dan cara membuat game :
Tahap awal install-lah Java 6 dengan cara double klik pada file hasil download
dan serperti kebanyakan program di windows lainnya cara instalasinyapun sangat
mudah, ikuti instruksi dilayar hingga muncul finish.
Gambar 1. Double klik file java dan ikuti instruksi layar hingga selesai.
Lanjutkan dengan menginstall greenfoot hinga selesai
Gambar 2. Install file greenfoot hingga selesai
P a g e | 5
Tampilan awal Greenfoot:
Gambar 3. Tampilan awal greenfoot
Yang akan kita bahas disini adalah scenario pertama, Tom &Jerry (kucing ngejar
tikus)
Scenario-nya :
- Ada 4 tikus , 5 keju, dan 1 kucing
- Tikus makan keju
- Kucing makan tikus
- Tikus akan bergerak mencari keju hingga semua keju habis
- Kucing akan menghentikan tikus dengan memakan tikus
- Jika semua keju habis, Anda KALAH
- Jika semua tikus dimakan kucing, Anda MENANG
- Tikus bergerak otomatis (random dari komputer)
- Kucing bergerak dikontrol keyboard
P a g e | 6
- Kucing dan tikus tidak bisa menembus/melewati pohon
Buat scenario dengan mengklik menu scenario lalu new lanjutkan dengan member
nama scenario(misal: Tom & Jarry ) seprti gambar 4. Lalu akan muncul isian seperti
gambar 5 .
Gambar 4. Membuat scenario baru Gambar 5. Beri nama scenario
Jika dilihat di windows explorer maka hasil yang kita lakukan akan terlihat seperti
gambar di bawah ini:
Gambar 6. Hasil pembuatan scenario jika dilihat menggunakan windows explorer
P a g e | 7
Disana terlihat scenario yang kita buat berbentuk folder dan didalamnya ada 3 folder
yang otomatis terbentuk, yaitu : greenfoot, image dan sound . fungsi folder image
adalah untuk menyimpan gambar yang akan kita gunakan, sedangkan folder sound
untuk menyimpan file suara yang kita pakai untuk game buatan kita. Folder images
dan sound awalnya masih kosong.
Subclass (World)
Buatlah sebuah subclass di class world dengan cara klik kanan lalu pilih new
subclass seperti gambar 7. Lalu akan muncul jendela baru untuk memasukkan nama
kelas seperti gambar 8 misalnya. Beri nama CatMouseWorld (perhatikan huruf
beasar dan kecilnya, karena pada pemrograman java bersifat case sensitif artinya
huruf besar berpengaruh),lalu terbentuk nama CatMouseWorld pada class World
seperti gambar 9.
Gambar 7 Cara membuat subclass Gambar 8. Beri nama subclass
Gambar 9. Nama CatMouseWorld pada class World
P a g e | 8
Desain:
pada Gambar 10.Klik kanan pada CatMouseWorld – Open editor, lalu muncul
jendela koding pada gambar 11.
Gambar 10 . Open editor Gambar 11. Jendela Koding
Untuk membuat sebuah World dengan ukuran 10 x 7 cell, dan tiap cell berukuran
60px ketikan kode
Gambar 12. Jendela
koding
Background dari image akan menggunakan “cell.jpg”
Coba Anda, COMPILE (tombol kiri atas), maka akan didapat pesan error
P a g e | 9
Hal ini karena file “cell.jpg” tidak ditemukan dalam folder lokal scenario yag kita
buat. Untuk itu, copy-kan “cell.jpg” dari folder Wombat
(C:/Greenfoot/scenarios/Wombat/images) ke folder scenario kita
(C:/Greenfoot/scenarios/Cat_n_Mouse/images)
Coba Anda, COMPILE (tombol kiri atas), maka akan didapat tampilan seperti
gambar 13
Gamabar 13. Tampilan wallpaper
Actor
Setelah desain World sudah berhasil dibuat, tentukan aktor-aktor yang
diperlukan dalam scenario (terserah Anda)
Dalam scenario ini, kita menggunakan aktor
- Cat : aktor kucing
- Mouse : aktor tikus
- Pizza : aktor pizza(makanan tikus)
- Pohon : aktor pelengkap sbg penghalang/tembok
- Counter : aktor penghitung keju dan tikus yang dimakan
- Hasil : aktor penampil hasil MENANG/KALAH
P a g e | 10
Klik kanan Actor, New subclass seperti pada gambar 14, dan isikan pilih
image seperti pada gambar 15,gambar Actor terserah Anda.
Gambar 14. New subclass pada actor Gambar 15. Memilih image yg digunakan
Dalam pemberian nama Actor harap diperhatikan penulisannya
(Besar/kecil huruf case sensitive), kita gunakan huruf kecil sehingga
menjadi
Gambar 16. Subclass
pada actor
P a g e | 11
Desain Lanjutan:
Sebelum kita membahas detail Actor-nya, kita akan mendesain kembali World-nya
- Rancanglah desain posisi aktor-aktor yang akan langsung ditampilkan pada
saat Start
- Tentukan posisi pohon ada dimana saja
- Tentukan posisi pizza ada dimana saja
- Tentukan posisi tikus ada dimana saja
- Tentukan posisi kucing ada dimana
Desain Untuk pohon:
(2,0) 0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
Gambar 17. Desain Pohon
P a g e | 12
Kita tambahkan method populasi_pohon() untuk pengaturan posisi pohon pada
CatMouseWorld
harus dipanggil
addObject(new pohon(),posisi cell X, posisi cell Y)
Gambar 18. Jendela koding pohon pada CatMouseWorld
Desain untuk pizza:
(3,0)
0 1 2 3 4 5 6 7 8 9
0
1
2
3
P a g e | 13
4
5
6
G Gambar18. Desain pohon dan pizza
Kita tambahkan method populasi_keju() untuk pengaturan posisi keju pada
CatMouseWorld
Harus dipanggil
addObject(new keju(),posisi cell X,
posisi cell Y)
Gambar 19. Jendela koding keju pada CatMouseWorld
Desain untuk kucing:
(7,4) 0 1 2 3 4 5 6 7 8 9
0
1
2
3
P a g e | 14
4
5
6
Gambar20. Desain pohon,pizza dan kucing
Kita tidak perlu membuat method khusus untuk menambah-kan kucing karena
kucing hanya 1 ekor, sehingga perintahnya hanya 1 baris. Langsung saja
ketikan pada class CatMouseWorld
addObject(new cat(),posisi
cell X,
posisi cell Y)
Gambar 21. Jendela koding kucing
pada CatMouseWorld
Desain untuk Tikus:
(7,0) 0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
P a g e | 15
Gambar22. Desain pohon,pizza dan kucing
Kita tambahkan method populasi_mouse() untuk pengaturan posisi tikus pada
CatMouseWorld
Harus dipanggil
addObject(new mouse(),posisi cell X, posisi cell Y)
Gambar 23. Jendela koding mouse pada CatMouseWorld
Actor kucing
Sifat dari kucing :
- Bergerak dikontrol melalui keyboard
- Makan tikus
P a g e | 16
- Tidak boleh menembus/menabrak pohon
Bergerak dikontrol melalui keyboard
harus dipanggil
getKey() = mengetahui
tombol yang ditekan
Gambar 24. Jendela koding pada actor kucing
Right= (X+1,Y)
Left = (X-1,Y
P a g e | 17
Up = (X,Y-1)
Down= (X,Y+1)
Makan Tikus
If (nemu_tikus) then
makan_tikus; (tikus di remove )
tikus_yg_dimakan++; (counter tikus_mati nilainya brtmbh)
Else
gerak;
Untuk counter tikus yg dimakan akan dibahas nanti
pada act() diubah menjadi spt
disamping
Gambar 24. Jendela koding pada actor kucing
Tidak boleh menembus/menabrak pohon
If (nemu_pohon) then
balik_ke_posisi_semula;
P a g e | 18
Balik_ke_poisi_semula;
If arah=kanan then geser_kiri;
If arah=kiri then geser_kanan;
If arah=atas then geser_bawah;
If arah=bawah then geser_atas;
Tidak boleh menembus/menabrak pohon
nemu_pohon() untuk mengecek apakah kucing menabrak pohon atau tidak
pada gerak() disipkan source code agar kucing tidak bisa menembus pohon
Actor tikus
Sifat dari tikus
- Bergerak otomatis
P a g e | 19
- Makan keju
- Tidak boleh menembus/menabrak pohon
Sebelumnya kita siapkan dahulu properti yang dibutuhkan:
Default gerak pertama silakan di set (terserah Anda)
Disini kita set ke kanan
Bergerak otomatis
If (tidak bisa_gerak(arah_grk)) then
arah_baru=acak(arah)
while(arah_baru==arah_gerak)
arah_baru=acak(arah)
Misal :
If (tidak bisa_gerak(kiri)) then //jika tdk bs gerak ke kiri
arah_baru=acak(arah) //kanan,kiri,atas,bawah
while(arah_baru==kiri)
arah_baru=acak(arah) //diacak terus smp selain kiri
Bisa_gerak() -> boolean
P a g e | 20
ARH_GRK=KANAN;
6 7 8 9 (8,1) – (7,1) = (1,0)
0
1
2
(1,0) adlh selisih posisi antara objek yg kita cari (pohon) dgn objek utama 9 adlh batas paling kanan, shg jika tikus ada di posisi X=9, tdk blh bergerak ke kanan
ARH_GRK=KIRI;
0 1 2 3 (0,1) – (1,1) = (-1,0)
0
1
2
(-1,0) adlh selisih posisi antara objek yg kita cari (pohon) dgn objek utama
P a g e | 21
0 adlh batas paling kiri, shg jika tikus ada di posisi X=0, tdk blh bergerak ke kiri
ARH_GRK=ATAS;
0 1 2 3 (2,1) – (2,2) = (0,-1)
0
1
2
(0,-1) adlh selisih posisi antara objek yg kita cari (pohon) dgn objek utama
0 adlh batas paling kiri, shg jika tikus ada di posisi Y=0, tdk blh bergerak ke atas
ARH_GRK=BAWAH;
0 1 2 3 (2,5) – (2,4) = (0,1)
4
5
6
(0,1) adlh selisih posisi antara objek yg kita cari (pohon) dgn objek utama
P a g e | 22
6 adlh batas paling bawah, shg jika tikus ada di posisi Y=6, tdk blh bergerak ke bawah
Tidak boleh menembus / menabrak pohon
If (nemu_pohon)
Balik ke posisi semula
nemu_pohon() untuk mengecek apakah tikus menabrak pohon atau tidak
Kembali ke posisi semula
Disisipkan pada method gerak()
P a g e | 23
Makan_keju
If (nemu_pizza)
makan_pizza;
jml_pizza_dimakan++;
Else
gerak;
Counter penghitung pizza yang dimakan akan dibahas selanjutnya
Makan_pizza
Me-remove pizza yang ditemukan
Sehingga act() dari mouse adalah
P a g e | 24
Actor CounterSifat dari counter
- Menghitung jumlah keju yang dimakan tikus- Menghitung jumlah tikus yag dimakan kucing- Mengecek jika jumlah keju yang dimakan memenuhi target, menampilkan
pesan Anda KALAH- Mengecek jika jumlah tikus yang dimakan memenuhi target, menampilkan
pesan Anda MENANG
Properti yang disiapkan:
- Menghitung jumlah keju yang dimakan tikus- Menghitung jumlah tikus yag dimakan kucing
- Mengecek jika jumlah keju yang dimakan memenuhi target, menampilakn pesan Anda KALAH
- Mengecek jika jumlah tikus yang dimakan memenuhi target, menampilkan pesan Anda MENANG
Counter di definisikan di dalam CatMouseWorld
addObject(ct,0,0) akan menambahkan couter pada posisi (0,0), karena tidak ada image-nya, maka akan ditampilkan dengan image logo greenfoot kecil
P a g e | 25
Jika game berjalan terlalu cepat, bisa di-set untuk spped-nya menjadi lebih lambat
Greenfoot.setSpeed(speed);
Actor hasil
Sifat dari hasil
Menampilkan hasil dari game, MENANG / KALAH melalui image
Dalam penggunaan Color dan Font, harus meng-import library
PJG-10
P a g e | 26
LBR-10
Color(0, 0, 0, 160) => Hitam
Color(R, G, B, Opaque)
R=0, G=0, B=0, Opaque=160
PJG-10
LBR-10
Color(255, 255, 255, 100) => Putih
R=255, G=255, B=255, Opaque=100
“Menang!!!” akan dituliskan jika parameter pil=1
Selain itu akan dituliskan “KALAH!!!
Method Menang
Method menang() akan digunakan sebagai method untuk menampilakn pesan MENANG
Disisipkan pada CatMouseWorld
P a g e | 27
addObject(new hasil(1),5,3);
1 adalah parameter untuk menampilkan pesan “Menang!!!”
Ditempatkan pada posisi cell (5,3)
Output di layar:
Method Kalah
Method kalah() akan digunakan sebagai method untuk menampilkan pesan KALAH
Disisipkan pada CatMouseWorld
addObject(new hasil(0),5,3);
0 adalah parameter untuk menampilkan pesan “Kalah!!!”
Ditempatkan pada posisi cell (5,3)
Output di layar:
P a g e | 28
Method kalah() dan method menang()
Pemanggilan Method kalah() dan Method menang() dilakukan oleh aktor counter, sehingga act() pada counter