Tutorial Greenfoot Versi 1.0 untuk Greenfoot versi 1.0
Michael Kölling
Tutorial ini adalah pengenalan tentang objek(object) dan dunia(world) di Greenfoot. Greenfoot adalah perangkat lunak yang didesain untuk pemula agar dapat terbiasa dengan Pemrograman Berorientasi Objek(Object-Oriented Programming), yang mendukung pengembangan aplikasi bergambar dengan memakai bahasa pemrograman Java™. Greenfoot didesain dan telah diimplentasikan di Universitas Kent, Inggris dan Universitas Deakin, Melbourne - Australia Informasi lebih lanjut mengenai Greenfoot bisa dilihat di www.greenfoot.org. Tutorial ini ditujukan kepada mereka yang ingin mengenal lebih jauh tentang Greenfoot, singkat dan fokus kepada fungsionalitas dan cara kerja Greenfoot itu sendiri. Tutorial ini tidak diperuntukkan bagi mereka yang ingin mempelajari Java, kami menganggap pembaca sudah mengetahui tentang Java sebelumnya atau didampingi oleh pembimbing saat menjalankan tutorial ini. Tutorial ini menggunakan skenario yang sudah disediakan sebelumnya dan selanjutnya mendiskusikan bagaimana cara memakai atau memodifikasi skenario tersebut. Pembaca yang ingin membuat skenario mereka sendiri, atau ingin membuat perubahan secara signifikan dari skenario yang sudah ada dapat membaca Manual Untuk Programmer Greenfoot. Perangkat lunak Greenfoot dan tutorial ini tersedia gratis tanpa dipungut biaya bagi yang menggunakan dan selama untuk kepentingan non komersil. Dilarang keras untuk membongkar dan mengubah perangkat lunak ini dari yang seharusnya. Tidak ada bagian dari perangkat lunak Greenfoot, skenario ataupun dokumentasi yang diperjualbelikan untuk keuntungan pribadi tanpa persetujuan tertulis dari pemegang hak cipta. Hak cipta perangkat lunak Greenfoot dipegang oleh Poul Henriksen dan Michael Kölling. Terdapat 3 versi yang tersedia: untuk Windows, untuk MacOS X, dan untuk sistem operasi yang lain. Prasyarat Diperlukan Java 5(JDK) versi 1.5 atau yang terbaru untuk menjalankan Greenfoot. Kami merekomendasikan untuk membaharui Java ke versi stabil(non-beta) terbaru. JDK bisa diunduh di laman web Sun http://java.sun.com/j2se/. Untuk diperhatikan, jangan mengunduh Java versi “JRE” (Java Runtime Environment) karena JRE sendiri tidaklah cukup, Anda membutuhkan Java versi “JDK”(Java Development Kit). Pada MacOS X J2SE versi terbaru telah tersedia sewaktu menginstal sistem operasi, sehingga tidak perlu untuk menginstalnya lagi. Untuk sistem Microsoft Windows, unduh aplikasi instalasi versi Windows. Klik dua kali pada aplikasi dan ikuti petunjuk instalasi. Proses instalasi sama seperti menginstal aplikasi lainnya. Untuk sistem Mac OS X, unduh aplikasi instalasi untuk versi Mac OS. Berkas yang diunduh akan berbentuk zip, Safari mungkin akan mengekstraksi berkas tersebut secara otomatis. Jika tidak, klik dua kali pada berkas yang telah diunduh untuk mengekstraknya. Setelah mengekstraksi, akan terdapat folder aplikasi Greenfoot dan contoh skenario. Folder tersebut dapat diletakkan dimana saja, tapi umumnya aplikasi Greenfoot diletakkan di folder Applications dan ‘scenario’ di dalam folder Documents. Berkas instalasi untuk sistem yang lain adalah tipe jar. Aplikasi tersebut dapat dijalankan dengan cara membuka 'command line' dan menulis
java -jar greenfoot-installer-XX.jar (XX adalah angka versi aplikasi instalasi yang diunduh). Pada beberapa sistem, mengklik dua kali pada berkas tipe jar tersebut juga dapat menjalankan aplikasi instalasi. (Dengan catatan, perintah ini dapat dijalankan jika sudah menginstal Java terlebih dahulu) Tutorial ini menggunakan dua skenario yang telah disediakan, yakni ‘wombats’ dan ‘wombats2’. Setiap skenario akan muncul sebagai folder di sistem.
Gambar 1: Skenario Wombats di Greenfoot
Anda mungkin membaca tutorial ini dari perangkat lunak Greenfoot, dan itu bagus. Jika tidak, maka anda perlu membuka Greenfoot sekarang juga. Pada proses instalasi di atas akan menginstal perangkat lunak bernama ‘greenfoot’, jalankan. (Pada sistem Linux dan Unix , ‘greenfoot’ berupa shell script yang dapat dijalankan.) Setelah menjalankan Greenfoot dan jika skenario Wombats tidak otomatis terbuka, maka pilih ‘Open...’ dari menu ‘Project’ dan pilih skenario ‘wombats’ dari contoh skenario Greenfoot. Anda akan melihat seperti Gambar 1 pada layar (walaupun anda tidak akan melihat daun dan wombats untuk sementara). Area besar bergaris yang menutupi sebagian besar jendela aplikasi disebut “ dunia(world) ”. Karena skenario kita ini berhubungan dengan Wombat(lihat catatan kaki 1), maka disini yang kita lihat adalah dunia Wombat. Di sebelah kanan dari jendela dunia adalah jendela kelas(class) . Disini kita dapat melihat semua kelas Java yang berhubungan dengan skenario. Kelas “World” dan “Actor” akan selalu ada disana, karena kelas tersebut sudah menjadi bagian dari Greenfoot. Kelas lainnya yang ada di jendela adalah kelas yang dikhususkan untuk skenario Wombat, dan akan akan berbeda jika anda membuka skenario yang lain. Bagian bawah dari jendela dunia adalah area Execution Control (bagian yang memiliki tombol ‘Act’ dan ‘Run’ dan pengatur kecepatan). Di bagian atas sebelah kanan jendela Greenfoot terdapat tombol “Scenario Information”. Ketika anda mengklik tombol tersebut, sebagian besar skenario akan menampilkan informasi detail tentang skenario yang sedang dibuka. Biasanya informasi tersebut berisikan tujuan dari skenario, bagaimana menjalankannya, apa yang bisa anda lakukan dengan skenario itu, dan mungkin beberapa petunjuk untuk anda jika ingin memodifikasi skenario tersebut. Sekarang kita akan menempatkan beberapa objek ke dalam dunia. Klik kanan (pada Mac: ctrl-klik) kelas Wombat pada jendela kelas. Akan muncul menu, dan pilih ‘New Wombat()’. Lalu klik dimanapun di dalam jendela dunia. Anda baru saja membuat wombat(biasa disebut 'objek' pada Java) dan menempatkannya ke dalam dunia. Makanan Wombat adalah daun, maka masukkan juga dedaunan ke dalam dunia. klik kanan kelas Leaf lalu tempatkan daun ke dalam dunia. Ada jalan pintas untuk mempercepat proses tersebut, dengan menggunakan shift-klik ke dalam jendela dunia. Pastikan kita sudah memilih kelas Leaf, lalu tahan tombol Shift pada keyboard dan klik di dalam jendela dunia beberapa kali. Objek yang terpilih(disini adalah Leaf) akan masuk ke dalam dunia setiap kali kita mengklik. Klik tombol ‘Act’ di area execution controls. Sekarang setiap objek akan berjalan(bertindak) sesuai dengan perannya masing-masing. Setiap objek berjalan sesuai dengan perintah program yang sudah ditentukan(akan dijelaskan lebih lanjut berikutnya). Di contoh ini, dedaunan diprogram untuk diam tidak bergerak, sedangkan Wombat akan bergerak maju ke depan. Coba anda tempatkan dua wombat ke dalam dunia dan tekan tombol‘Act’, maka keduanya akan bergerak. Wombat suka makan dedaunan, maka jika Wombat bertemu dengan daun, mereka akan memakannya. Klik tombol ‘Run’, ini akan sama seperti dengan mengklik tombol 'Act' secara berulang-ulang dengan cepat, dan anda akan melihat tombol Run berubah menjadi tombol ‘Pause’. Mengklik tombol tersebut akan menghentikan skenario secara keseluruhan. Tombol geser disebelah tombol Act dan Run berguna untuk mengatur kecepatan skenario. Klik Run lalu geser tombol tersebut, dan anda akan mengerti maksud saya.
Anda dapat memanggil sebuah fungsi secara langsung, jika anda tidak ingin menjalankan skenario secara keseluruhan. Fungsi adalah suatu tindakan tertentu yang dapat dilakukan sebuah objek. Jalankan skenario dan pastikan ada Wombat di dalam jendela dunia, lalu klik kanan pada Wombat dan anda akan melihat bahwa suatu objek dalam jendela dunia juga dapat memiliki menu pop-up(Gambar 2). Gambar 2: Menu pop-up suatu objek
Anda dapat memilih fungsi dari daftar pilihan yang muncul, untuk memerintahkan Wombat melakukan sesuatu. Sebagai contoh turnLeft(), memilih fungsi ini akan memerintahkan Wombat untuk berbelok ke kiri. Sekarang coba move(). Beberapa fungsi akan memberikan informasi, contohnya getLeavesEaten() akan memberitahu anda berapa jumlah daun yang telah dimakan si Wombat sampai saat ini, silahkan dicoba. Anda juga akan melihat fungsi ‘act()’. Fungsi ini akan dipanggil setiap saat anda mengklik tombol Act, tapi jika anda hanya ingin satu obyek tertentu berjalan di jendela dunia, maka anda dapat memanggil fungsi act() objek tersebut secara langsung. Ada saatnya anda memiliki banyak objek di dalam dunia, anda sudah tidak membutuhkannya lagi dan ingin mengulangnya dari awal. Solusi termudah adalah dengan membuang dunia itu dan membuat sebuah dunia yang baru, ini dapat dilakukan dengan cara mengklik tombol 'Reset'. Anda akan melihat jendela dunia yang baru dan kosong. Dunia lama sudah terbuang beserta dengan segala objek di dalamnya, karena anda tidak dapat memiliki 2 dunia sekaligus. Kita telah melihat objek di dalam dunia memiliki fungsi yang dapat dipanggil melalui menu pop-up. Dunia sendiri adalah objek yang memiliki fungsi dan dapat kita panggil. Sebelumnya kita sudah mengetahui bagaimana cara membuat sebuah dunia baru, sekarang kita akan memanggil fungsi dunia yang berperan sebagai objek. Di bagian atas jendela dunia terdapat judul yang menunjukkan nama dunia, “WombatWorld” pada kasus ini. Klik kanan judul tersebut dan anda akan melihat menu pop-up dari dunia. (Untuk diperhatikan, judul yang dimaksud adalah yang terdapat di atas jendela dunia bukan pada jendela kelas di sebelah kanan.) Salah satu pilihan fungsi di menu ini adalah ‘populate()’. Coba dan lihatlah hasilnya, fungsi tersebut akan membuat beberapa daun dan Wombat serta memasukkanya ke dalam dunia. Setelah itu anda bisa menjalankan skenario. Fungsi lainnnya adalah ‘randomLeaves(int howMany)’. Fungsi ini menempatkan beberapa daun ke dalam dunia secara acak. Anda mungkin penasaran dengan kata-kata tambahan di dalam kurung int howMany. Kata-kata itu adalah ‘parameter’, yang berarti anda harus menambahkan beberapa informasi tambahan ketika memanggil fungsi ini. Kata ‘int’ merujuk pada angka dan ‘howMany’ merujuk kepada jumlah daun yang anda inginkan. Ketika fungsi ini dipanggil, kotak dialog akan muncul dan menunggu anda untuk memasukkan nilai untuk parameter tadi. Coba masukkan angka 12 dan klik OK, lihatlah hasilnya. (Jika dihitung, terkadang daun yang tampak akan lebih sedikit dari angka parameter yang dimasukkan. Hal ini karena beberapa daun mungkin berada pada lokasi yang sama dan menumpuk di lokasi tersebut.) Baiklah, mungkin anda mulai bosan dengan Wombat yang hanya berlari mengelilingi dunia tanpa henti. Sekarang mari kita lanjutkan dengan hal yang lebih menantang : memprogram Wombat anda untuk melakukan hal-hal menarik!
Tutorial ini menggangap pembaca sudah mengenal atau terbiasa dengan dasar bahasa pemrograman Java. Tutorial ini tidak ditujukan untuk pengenalan Java bagi pemula. Anda dapat memprogram objek anda sendiri seperti wombat atau apapun yang anda mau dengan cara menulis kode Java untuk kelas dari objek tersebut, dan itu yang akan kita lakukan sekarang. Klik dua kali kelas Wombat di jendela kelas. Sebuah teks editor akan muncul dan anda akan melihat kode pemrograman Java dari kelas Wombat. Hal pertama yang akan kita coba adalah mengubah perilaku Wombat yang ketika sampai di area paling pinggir jendela dunia Wombat akan selalu berbelok ke kiri, menjadi berbelok dengan arah secara acak. Untuk melakukan hal ini, kita akan menambahkan fungsi ‘turnRandom()’ pada kelas Wombat. /** * Berbelok dengan arah secara acak. */ public void turnRandom() { // mendapatkan sebuah angka secara acak antara 0 dan 3... int turns = Greenfoot.getRandomNumber(4);
// ...lalu belok kiri sebanyak angka acak tersebut. for(int i=0; i<turns; i++) { turnLeft(); } } Selanjutnya mengubah fungsi ‘act()’ untuk memanggil fungsi turnRandom. Fungsi act() sebelumnya terlihat seperti ini:
public void act() { if(foundLeaf()) { eatLeaf(); } else if(canMove()) { move(); } else { turnLeft(); } } Ubah panggilan kepada fungsi ‘turnLeft()’ menjadi panggilan kepada fungsi ‘turnRandom()’. Selesai, sekarang saatnya mencoba. Klik tombol ‘Compile’ yang terletak di bagian atas teks editor. Jika terdapat pesan kesalahan, perbaiki dan klik tombol compile lagi. Ulangi hal ini sampai tidak terdapat pesan kesalahan lagi. Sekarang anda dapat menutup jendela teks editor. Anda harus menyusun(compile) skenario sebelum menjalankannya. Hal ini dapat dilakukan dari dalam teks editor ataupun dari jendela utama aplikasi Greenfoot dengan menekan tombol‘Compile’. Setelah sukses menyusun(compile), anda dapat melanjutkan membuat objek lagi. Penyusunan(compile) yang sukses tanpa ada pesan kesalahan akan menciptakan objek di dalam dunia secara otomatis. Ada dua cara untuk mengubah gambar dari suatu objek: Mengubah gambar kelas, dimana hal tersebut akan mengubah gambar semua objek dari kelas tersebut. Cara lainnnya adalah mengubah gambar secara programatikal dengan memodifikasi kode, yang hanya akan mengubah objek secara individu. Tiap objek dapat diubah gambarnya sewaktu-waktu. Untuk mengubah gambar kelas, pilih ‘Set Image...’ dari menu pop-up kelas yang dipilih. Anda dapat mencoba dengan kelas Leaf, coba ganti dengan gambar seperti pisang, dan wombat nantinya akan memakan pisang. (Mungkin bukan hal yang direkomendasikan oleh penjaga kebun binatang, tapi itulah sebabnya kita menggunakan simulasi...) Greenfoot sudah menyediakan koleksi gambar yang siap digunakan, atau anda bisa menggunakan gambar sendiri dengan cara memasukkan gambar ke dalam folder ‘images’ yang terletak di dalam folder skenario (‘wombats’) lalu dapat memilih gambar tersebut. Cara kedua adalah mengubah gambar dari objek secara programatikal. Hal ini dapat dilakukan secara gampang hanya dengan cara memanggil fungsi ‘setImage’ yang merupakan rintisan dari kelas Actor. Fungsi ‘setImage’ memiliki dua versi: yang pertama memerlukan parameter dari GreenfootImage, sedangkan yang kedua menggunakan gambar dari folder gambar (lalu membaca gambar tersebut memakai fungsi GreenfootImage dan mengubahnya). Kita akan menggunakan cara kedua yang memakai berkas gambar. Tugas yang akan kita selesaikan adalah memastikan wombat tidak terlihat terbalik ketika berbelok ke kiri. Di skenario ‘wombat’ sudah tersedia gambar yang bernama ‘wombat-left.gif’ di dalam folder ‘images’. Gambar tersebut berformat GIF yang akan menampilkan gambar wombat menghadap ke kiri, sama persis dengan yang telah kita lihat sejauh ini. Kita dapat mengubah gambar wombat menjadi versi menghadap kiri dengan menulis:
setImage("wombat-left.gif"); Fungsi ini akan kita gunakan ketika wombat mengubah arahnya. Untuk melakukannya kita perlu mengubah fungsi ‘setDirection(int Direction)’. Cari fungsi tersebut di kode Wombat. Beberapa baris kode akan kita tambahkan disini untuk mengatur gambar dan perputaran yang sesuai ketika menetapkan arah. Kita akan menggunakan gambar ‘wombat-left’ saat wombat menghadap ke barat atau utara, sedangkan gambar aslinya ‘wombat’ akan dipakai ketika menghadap timur atau selatan. Untuk diperhatikan gambar ‘wombat-left’ tidak perlu diputar saat menghadap ke barat karena sudah menghadap ke barat sedari asalnya. Fungsi ‘setDirection’ yang baru akan terlihat seperti:
/** * Menetapkan arah yang sedang dihadapi. */ public void setDirection(int direction) { this.direction = direction; switch(direction) { case SOUTH : setImage("wombat.gif"); setRotation(90); break; case EAST : setImage("wombat.gif"); setRotation(0); break; case NORTH : setImage("wombat-left.gif"); setRotation(90); break; case WEST : setImage("wombat-left.gif"); setRotation(0); break; default : break; } } Kode ini akan berjalan sebagaimana mestinya. Jika ingin lebih serius, seharusnya kita dapat memuat gambar dari berkas gambar hanya sekali(di dalam konstruktor) dan menyimpannya ke dalam variabel bertipe GreenfootImage. Dengan begitu kita bisa menggunakan dua gambar dari objek untuk mengubah gambar berulang-ulang. Setelah ini mungkin kita ingin memisahkan gambar untuk wombat ketika naik dan turun, tapi biarlah itu kami tinggalkan untuk pembaca yang antusias. Untuk mengubah perilaku sebuah objek, seringkali kita akan memakai kelas-kelas standar dari Greenfoot. Greenfoot menyediakan empat kelas penting yang perlu anda ketahui: World, Actor, GreenfootImage dan Greenfoot. Kelas World dan Actor sudah kita lihat sejauh ini di jendela aplikasi sebagai kelas induk(superclass). Kelas GreenfootImage digunakan ketika berkaitan dengan gambar, dan kelas Greenfoot menyediakan akses ke framework Greenfoot itu sendiri. Cara termudah untuk mempelajari kelas-kelas tersebut adalah dengan membaca dokumentasi API Greenfoot secara online. Anda bisa menemukannya di http://www.greenfoot.org/programming/ Di laman tersebut, anda dapat membaca penjelasan tentang kelas Greenfoot(Greenfoot API) secara online, dan dapat diunduh secara utuh untuk dicetak. Anda dapat memanggil fungsi ‘Inspect’ melalui menu pop-up dari setiap wombat yang ada di jendela dunia, untuk melihat ke dalam objek dan memeriksa nilai-nilai dari tiap variabel. Hal ini dapat bermanfaat ketika sedang membuat kelas. Anda mungkin menyadari ada beberapa variabel yang sudah ditetapkan di kelas Wombat(seperti ‘leavesEaten’) dan beberapa lagi bahkan tidak terlihat di kelas Wombat. Hal itu karena variabel tambahan(seperti x, y dan rotation) diwariskan dari kelas Actor dan akan ada di setiap objek Greenfoot. Jika suatu nilai tergambar sebagai anak panah, maka variabel tersebut mempunyai referensi ke objek lain, yang bisa dilihat dengan cara memilih variabel tersebut lalu mengklik ‘Inspect’. Sekarang saatnya memberi tantangan kepada Wombat dengan menambahkan rintangan, yaitu batu. (Kita akan membuat batunya begitu besar hingga wombat tidak akan bisa memanjatnya) Untuk melakukannya, kita perlu membuat sub-kelas baru dari kelas induk Actor. Pilih ‘New subclass’ dari menu pop-up kelas Actor, ini akan membuat sebuah kelas baru sebagai sub-kelas dari kelas Actor. Ketik ‘Rock’ ketika diminta menulis nama kelas baru tersebut, anda juga akan diminta memilih gambar untuk kelas tersebut. Anda bisa mencari(Mbah Google) atau membuat(memakai aplikasi grafis) gambar dan menyimpannya di sub-folder ‘images’ dari folder skenario sebelum membuat kelas baru ini. Disini kami sudah mempersiapkan berkas gambar bernama ‘rock.gif’ di dalam folder skenario untuk anda. Pilih gambar, klik OK, dan sebuah kelas baru bernama Rock sudah selesai dibuat. Sekarang buka teks editor untuk kelas itu, anda akan melihat kerangka kode yang otomatis tersusun. Untuk saat ini, kita tidak perlu menulis kode apapun(Batu hanya diam,tidak mempunyai perilaku khusus.) Tutup jendela teks editor, susun(compile) lalu tes dan selesai ! Batu telah jadi Sekarang pilih fungsi populate() untuk memasukkan wombat dan dedauan, lalu masukkan batu secara manual seperti yang sudah dijelaskan sebelumnya. Anda akan melihat batu sudah masuk ke dalam skenario, tapi wombat masih bisa berjalan melewatinya. Oh..ternyata belum selesai. Tutorial ini tidak mencakup untuk mengubah skenario secara signifikan atau membuat skenario baru. Jika anda ingin mencoba hal tersebut, anda mempunyai dua pilihan: Mempelajari dari skenario yang sudah ada, atau anda dapat membaca Manual Untuk Programmer Greenfoot. Tentu saja sebaiknya anda juga membaca dokumentasi kelas Greenfoot(Greenfoot API) seperti yang sudah dijelaskan sebelumnya. Hal terakhir yang akan kita kerjakan sekarang adalah melanjutkan persoalan yang belum selesai, yaitu mencegah wombat berjalan melewati batu. Buka teks editor untuk kelas Wombat lalu cari fungsi ‘canMove’. Fungsi ini berguna untuk mengecek apakah wombat sudah mencapai area paling pinggir dari jendela dunia. Kita perlu mengubahnya untuk menghasilkan nilai 'false' ketika ada batu di depan Wombat. Ubah pernyataan 'return', yang sebelumnya seperti ini
return true; menjadi:
List rocks = myWorld.getObjectsAt(x, y, Rock.class); if(rocks.isEmpty()) { return true; } else { return false; }
Kode ini akan mendaftar semua batu yang berada di depan Wombat. Jika daftar ini kosong, maka Wombat bisa bergerak maju, tetapi jika ada batu yang terdaftar maka Wombat tidak akan bisa bergerak maju. Skenario ‘wombats2’ yang sudah termasuk ketika anda mengunduh tutorial ini, berisi semua perubahan yang sudah didiskusikan di tutorial ini. Coba buka beberapa skenario yang sudah terinstal bersama dengan Greenfoot. Cari yang anda suka, dan pelajari bagaimana skenario itu bisa berjalan. Buka laman web Greenfoot untuk mencari skenario yang lain. Dan yang terpenting, berdiskusilah dengan pengguna Greenfoot yang lain. Untuk mengetahui informasi lebih lanjut tentang Greenfoot dan bergabung dengan komunitas greenfoot, anda mempunyai dua pilihan:
Milis Greenfoot dapat dilihat di: http://www.greenfoot.org/about/mailing.html Selamat bersenang-senang! 1 Wombat adalah binatang asli Australia. Jika anda belum pernah mendengarnya,anda dapat mengetahui lebih lanjut di Wikipedia: http://en.wikipedia.org/wiki/Wombat . |