Berdasarkan studiKasus berikut ini;
"Buatlah sebuah scenario baru dengan nama sekenario sesuai ketentuan, dengan melakukan save as.. dari sekenario sebelumnya. Sesuaikan dengan kasus anda sebelumnya!!"

Cara Menambahkan Perilaku Random, Actor Suplemen dan Control Navigasi di Greenfoot
Maka yang perlu kita lakukan adalah mengadopsi dari project/scenario sebelumnya, yaitu di sini:
CARA PERTAMA MENGGUNAKAN GREENFOOT
A. Menambahkan Perilaku Random
1). Software tools memiliki sebuah method untuk membuat angka random >> Greenfoot.getRandomNumber(int x), maka bukalah editor tools pada class Elephant, tambahkan kode blok perintah berikut ini:
If (Greenfoot.getRandomNumber(100) > 90)
{
turn (Greenfoot.getRandomNumber(90)-45);
}
2). Letakan kode diatas didalam fungsi utama act() dan dibawah blok method isAtEdge(), atau perhatikan contoh dibawah ini:

Save code tersebut, lalu kompilasi, selanjutnya instanisasi objek/class Elephant kedalam world !
3). Eksekusi scenario dengan menekan tombol RUN, sehingga hasilnya akan seperti ini:
https://youtu.be/Gmrz772nccY
Evaluasi:
Soal 1). Amati dan jelaskan hasil eksekusi dari sekenario tersebut!
Jawaban 1). Jadi dengan adanya penambahan block method random, maka actor akan berputar tidak hanya saat mencapai tepi(edge) jendela, tetapi juga saat angka random tertentu, method yang diterapkan dalam scenario saya terdapat suatu kondisi dimana ramdom di mulai dari angka 0-100 dan jika diperoleh angka lebih besar dari 90, maka program di dalam block method di eksekusi, sehingga turn(Greenfoot.getRandomNumber()) dieksekusi. Namun dalam scenario saya turn mempunyai kondisi dimana turn random mulai dari 0 - 90, lalu belokan sejauh minus(-)45 derajat artinya actor belok arah kiri.
Soal 2). Rubah parameter int x pada method Greenfoot.getRandomNumber(int x), amati dan jelaskan fungsi dan perubahan dari method tersebut!
Jawaban 2). Saat method random saya rubah menjadi 50 atau if(Greenfoot.getRandomNumber(50) > 90), maka yang terjadi adalah program pada blok method tersebut tidak akan pernah di eksekusi, sebab kondisi method tersebut tidak akan pernah tercapai karena random hanya dilakukan dari angka 0-50, sementara kondisi yang harus dipenuhi adalah angka harus lebih besar dari 90, sehingga yang terjadi pada actor adalah pergerakannya sama seperti semula atau saat sebelum penambahan method random.
B. Menambahkan Actor Suplemen
Untuk menyempurnakan scenario diatas, maka hal yang perlu kita tambahakan kedalam habitatnya adalah makanan (Actor Suplemen), maka lakukan sebagaimana materi sebelumnya (membuat new actor/new subclass)dengan cara:
- Klik kanan Actor >> New subclass
- Pilih objek yang susai untuk kasus Anda, dalam kasus saya adalah Elephant, maka saya akan berikan Rumput sebagai suplemennya.
- Instanisasi beberapa class rumput/grass kedalam World
- Eksekusi scenario menggunakan tombol RUN, sehingga hasilnya akan nampak seperti ini:
https://youtu.be/1YLei5WLTDk
Evaluasi
Soal 3). Amati dan jelaskan hasil eksekusi dari sekenario tersebut!
Jawaban 3). Saat actor elephat menyentuh actor grass, maka lewat begitu saja dan tidak ada reaksi atau perubahan pada actor grass, hal ini terjadi karena actor grass belum ada definisi program atau method Act nya.
Hehehe sepertinya si Gajah belum lapar, sehingga rumput-rumput disitu tidak dimakannya, untuk selanjutnya bagaimana kalo kita buat si Gajah menjadi sangat kelaparan?! Baik tetap ikuti langkah selanjutnya:
1. Klik kanan actor Elephant >> Open Editor
2. Tambahkan kode pernyataan berikut
if ( isTouching(grass.class))
{
removeTouching(grass.class);
}
3. Letakan dibawah method move(5); sehingga tampak seperti gambar ini;

4. Kompilasi dan jalankan Scenario. Alhasil pada video ini;
https://youtu.be/isxytEkhfUk
Evaluasi:
Soal 4). Amati dan Jelaskan hasil eksekusi dari hasil penambahan perilaku diatas!
Jawaban 4). Saat actor elephat menyentuh actor grass, maka yang terjadi adalah actor grass hilang, ini mengekspresikan perilaku elephat yang sedang makan rumput, hal ini dapat dilakukan dengan cara menambahkan method if isTouching(grass.cass){ remove Touching(grass.cass);}
Soal 5). Jelaskan tambahan fungsi dari kode pernyataan berikut:
if ( isTouching(grass.class))
{
removeTouching(grass.class);
}
Jawaban 5). fungsi atau method if ( isTouching(grass.class)) { removeTouching(grass.class);} ini memiliki pengertian bahwa "Jika menyentuh(parameter) maka saat menyentuh, hapus(parameter)" dan kebetulan yang menjadi parameter dalam scenario projec saya adalah grass, sehingga "saat elephat menyentuh grass, maka grass terhapus".
C. Kendali Aktor Utama
Kali ini adalah penyempurnaan tahap akhir dalam project 2 ini, dimana scenario kita adalah seekor Gajah dapat kita kontrol/kendalikan untuk arah pergerakannya. Kita akan coba gunakan 2 navigasi pada keyboard yaitu Arah kiri dan Arah kanan, dengan cara mengikuti petunjuk berikut ini:
1. Klik kanan pada class Elephant >> Open Editor
2. Hapus atau non aktifkan Blok code dibawah ini;

3. Ganti dengan Blok kode berikut ini:

4. Kompilasi dan Jalankan Scenario, maka akan diperoleh hasil seperti ini:
https://youtu.be/u1C5IsoWW8c
StudiKasus:
Implementsikan pembuatan method pada perilaku actor utama dengan membuatnya ke dalam sub-sub modul fungsi, sehingga method act() hanya berisi kode-kode berikut ini:

Oke beres, Project selengkapnya termasuk penyelesaian StudiKasus di atas bisa Anda download di sini:
DOWNLOAD PROJECT 2