Dunia, Animasi, Dan Akhir Permainan
Dunia, Animasi, Dan Akhir Permainan
3-8
Dunia, Animasi, dan Akhir Permainan
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang.
Tujuan
• Pelajaran ini akan membahas tujuan berikut:
− Membangun objek world menggunakan metode konstruktor
− Membuat objek menggunakan konstruktor
− Menulis pernyataan pemrograman untuk menggunakan
kata kunci new
− Mendefinisikan tujuan dan sintaks variabel
− Mengenali sintaks untuk menentukan dan menguji variabel
− Menulis pernyataan pemrograman untuk beralih di
antara dua gambar
− Menulis laporan pemrograman untuk mengakhiri game
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 3
Permainan
Konstruktor
• Bila subclass Dunia baru dibuat dan
dikompilasi, Greenfoot akan menjalankan
konstruktor yang membuat instancenya untuk
ditampilkan dalam skenario
• Konstruktor menyiapkan instance dan membuat
status awal, misalnya ukuran dan resolusi instance ini
− Konstruktor tidak memiliki return type
− Nama mereka, persis setelah kata "public," sama
dengan kelas yang ditetapkan
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 4
Permainan
Parameter Konstruktor
• Sebuah parameter konstruktor memungkinkan
nilai awal instance diteruskan ke konstruktor
• Parameter ini:
− Hanya tersedia untuk instance yang dibuat oleh konstruktor.
− Memiliki cakupan dibatasi yang terbatas pada
saat konstruktor dinyatakan
− Memiliki masa pakai dibatasi yang terbatas pada
satu pelaksanaan konstruktor
− Hilang setelah konstruktor selesai dijalankan
− Variabel ini berlaku selama instance ini ada
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 5
Permainan
Contoh Konstruktor
• Konstruktor ini di subclass Dunia menggunakan kata
kunci super() untuk meneruskan nilai tinggi, lebar, dan
resolusi ke instance
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 6
Permainan
Contoh Parameter
• Untuk mengubah ukuran papan game,
modifikasi argumen dalam parameter
konstruktor
• Contoh ini membuat dunia persegi, bukan persegi
panjang dengan mengubah batas koordinat x ke 400
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 7
Permainan
Membuat Instance Aktor Secara Otomatis
• Tulis kode dalam konstruktor dunia untuk secara
otomatis menambahkan instance aktor di permainan
bila skenario diinisialisasi
• Hal ini akan membuat pemain tidak perlu secara
manual menambahkan instance sebelum permainan
dimulai
• Misalnya, dalam sebuah game pencocokan, kartu
harus secara otomatis ditampilkan dalam skenario saat
permainan dimulai
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 8
Permainan
Kode untuk Secara Otomatis Membuat Turunan
• Kode di dalam konstruktor Dunia meliputi
komponen berikut:
− Pernyataan super() dengan ukuran dunia sebagai argumen
− Metode addObject() dengan argumen berikut:
• Kata kunci new, diikuti oleh nama kelas, memberi tahu
konstruktor bahwa sebuah instance baru dari kelas itu harus
ditambahkan
• Koordinat X dan Y di mana instance baru harus diatur posisinya di
dunia
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 9
Permainan
Instance Greenfoot Aktor
• Bergiliran antara dua gambar yang tampak
sedikit berbeda, memberikan instance kesan
bergerak
• Instance Greenfoot Aktor:
− Menerima dan menyimpan gambar dari kelas mereka
• Gambar ini ditetapkan untuk kelas ketika kelas diciptakan
− Memiliki kemampuan untuk menyimpan beberapa gambar
− Dapat diprogram untuk mengubah gambar yang
ditampilkan kapan saja
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 10
Permainan
Kelas GreenfootImage
• Kelas GreenfootImage memungkinkan aktor
Greenfoot untuk mempertahankan gambar yang
terlihat dengan memegang objek bertipe
GreenfootImage
• Kelas ini digunakan untuk membantu sebuah kelas
memperoleh dan memanipulasi berbagai jenis gambar
• Gambar yang kelas ini akan gunakan harus sudah
ada sebelumnya dalam folder Gambar skenario
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 11
Permainan
Konstruktor untuk Mendapatkan Objek Gambar Baru
• Buat konstruktor yang mengambil objek gambar
baru dari file saat membuat instance dari kelas
• Konstruktor contoh di bawah ini membuat
gambar baru dan menyambungkannya ke kelas
Aktor
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 12
Permainan
Nama File gambar
sebagai Argumen di
Kata kunci baru
Daftar Parameter
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 13
Permainan
Menetapkan Gambar Baru ke Kelas
• Pernyataan di bawah ini membuat objek gambar
baru dari nama file gambar
• Ketika dimasukkan ke dalam kode sumber kelas,
objek gambar ini siap untuk digunakan oleh kelas
• Pernyataan dijalankan sebagai
berikut:
− Objek GreenfootImage dibuat lebih dulu
− Panggilan metode setImage() dijalankan, meneruskan
objek gambar yang baru dibuat sebagai argumen ke daftar
parameter
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 13
Permainan
Contoh Menetapkan Gambar
• Metode setImage() menetapkan gambar dalam file
"bee.png" ke kelas Aktor
• Setiap kali instance kelas ini ditambahkan ke
skenario, ini akan menampilkan gambar "bee.png"
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 14
Permainan
Membuat gambar Nama file gambar
sebagai argumen.
baru.
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 15
Permainan
Mengapa Instance Menyimpan Beberapa Gambar
• Anda mungkin ingin instance menyimpan
dan mengakses beberapa gambar:
− Untuk tampak berubah warna
− Untuk tampak berubah dari satu jenis objek ke jenis lainnya
Misalnya, secara ajaib berubah dari kelinci ke kura-kura
− Untuk tampak bergerak:
• Untuk berjalan:
− Ubah dari objek dengan kaki kiri dipanjangkan, ke objek dengan kaki kanan
dipanjangkan
• Untuk membalik kartu:
− Ubah dari kartu kosong menjadi bukan kartu kosong
• Untuk terbang:
− Ubah dari sayap terkepak menjadi sayap terlipat
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 15
Permainan
Mengakses Beberapa Gambar
• Misalnya, sebuah instance dapat mengakses dua
gambar, masing-masing dengan posisi sayap yang
sedikit berbeda, jadi instance mengepakkan sayapnya
saat bergerak
• Untuk mencapai gerakan ini:
− Buat dua gambar instance, masing-masing dengan
posisi sayap sedikit berbeda
− Simpan dua gambar dalam instance ini, sehingga
mereka dapat diakses berulang-ulang sebagai objek
bergerak
− Kodekan kelas untuk beralih antara dua gambar
yang ditampilkan
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 17
Permainan
Objek 1 Variabel 1
Objek 2 Variabel 2
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 18
Permainan
Format Variabel
• Format variabel berisi:
− Jenis data:
• Jenis data apa yang akan disimpan dalam variabel
− Nama variabel:
• Deskripsi variabel apa yang digunakan agar dapat dijadikan referensi
nantinya
private variable-type variable-name;
Variabel
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 19
Permainan
Pernyataan Penetapan
• Penetapan diperlukan untuk menyimpan objek-
objek di variabel
• Bila sebuah objek telah ditetapkan ke sebuah
variabel, variabel berisi referensi ke objek tersebut
• Sebuah pernyataan penetapan:
− Menyimpan objek atau nilai ke dalam variabel
− Tertulis dengan simbol sama dengan
• Format:
variable = expression;
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 20
Permainan
Komponen Pernyataan Penetapan
• Sebuah pernyataan penetapan meliputi:
− Variabel:
• Nama variabel untuk menyimpan nilai atau objek
− Simbol sama dengan, yang merupakan simbol penetapan
− Ekspresi:
• Nama objek atau nilai untuk ditetapkan
• Perintah bahwa objek atau nilai baru
• Kelas yang menaungi gambar
• Contoh:
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 21
Permainan
Memulai Gambar atau Nilai
• Memulai proses membuat instance dan nilai awalnya
• Ketika kelas menciptakan instance baru, setiap
instance berisi referensi ke gambar atau nilai-nilai yang
terkandung dalam variabel
• Pedoman:
− Signature tidak menyertakan return type
− Nama konstruktor sama dengan nama kelas
− Konstruktor secara otomatis dijalankan untuk
meneruskan gambar atau nilai pada instance jika instance
kelas dibuat
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 22
Permainan
Contoh Konstruktor Aktor
• Konstruktor aktor berikut memberi tahu Greenfoot
untuk secara otomatis membuat instance Lebah baru
dan memulai atau menetapkan dua variabel ke
instance
• Baris terakhir dari konstruktor,
setImage(Gambar1), menunjukkan bahwa variabel
pertama harus
ditampilkan saat instance ditambahkan untuk skenario
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 24
Permainan
Menulis Tindakan dalam Pseudocode
• Kenali tindakan yang harus diprogram
dengan menuliskannya dalam pseudocode
• Pseudocode ini mendeskripsikan tugas atau
pengoperasian untuk instance yang dikerjakan dalam
bahasa campuran Java dan kata bahasa Inggris biasa
• Hal ini membantu kita memahami lebih baik perilaku
apa yang kita inginkan untuk instance lakukan sebelum
menuliskan kode sebenarnya
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 25
Permainan
Contoh Pseudocode
• gambar1 ditampilkan saat instance dibuat
• Saat Lebah membuat gerakan berikutnya,
gambar2 harus ditampilkan, dan sebaliknya
• Hal ini dinyatakan sebagai pernyataan if-else
if (current image displayed is image1) then
use image2 now
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 26
Permainan
else
use image1 now
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 27
Permainan
'==' Operator
• Pernyataan pemrograman yang memerintahkan
instance untuk silih berganti di antara gambar berisi:
− Pernyataan if-else
− '==' operator (dua tanda sama dengan)
• '==' operator:
− Digunakan dalam sebuah pernyataan if untuk menguji
apakah dua nilai sama
− Membandingkan nilai satu dengan yang lain
− Menghasilkan hasil boolean (true atau false)
• Ingatlah bahwa '=' adalah simbol penetapan,
bukan simbol untuk menguji apakah dua nilai sama
Komponen Pernyataan if-else
• Komponen Pernyataan if-else:
− Metode getImage menerima gambar instance saat ini
− Operator '==' memeriksa apakah nilai yang ditampilkan
oleh instance setara dengan gambar1
• jika sama, maka tampilkan gambar2
• atau tampilkan gambar1
Contoh Pernyataan if-else
• Pernyataan if-else di bawah ditulis dalam metode act
untuk membuat instance memilih antara tampilan dua
gambar saat bergerak maju
Contoh Pernyataan if-else
• Kita juga akan memindahkan kode animasi ke
metodenya sendiri untuk memastikan kode lebih
bersih
Akhir Permainan
• Kelas Greenfoot memiliki metode stop() yang
dapat Anda gunakan untuk mengakhiri permainan
di satu titik yang Anda tetapkan
• Anda mungkin ingin mengakhiri permainan bila:
− Pemain mencapai sebuah pencapaian
− Waktu pada jam telah habis
− Instance menyentuh koordinat atau objek tertentu
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 31
Permainan
Contoh Permainan Lebah
• Contoh permainan:
− Pemain menentukan berapa kali Lebah tertangkap oleh objek
Laba-laba untuk mengakhiri permainan
− Saat permainan berakhir, suara memutar, "Game Over"
• Spesifikasi Game:
− Buat dan mulai variabel untuk menyimpan nyawa dan skor
− Berikan jumlah total Lalat yang dimakan (skor)
− Masukkan metode stop() untuk menghentikan
permainan ketika nyawa pemain mencapai 0
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 32
Permainan
Temukan Metode stop() di API Greenfoot
• Buka menu Bantuan dan pilih Dokumentasi Kelas
Greenfoot
• Temukan metode stop() dalam Greenfoot API
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 33
Permainan
Tulis Metode stop() dalam Kode Sumber
• Pada titik seharusnya permainan diakhiri, tulis metode
yang mengikuti kode sumber
• Notasi titik digunakan untuk memanggil metode
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 34
Permainan
Contoh Menatapkan Variabel ke Instance
• Lebah harus menangkap sejumlah objek Lalat
untuk meningkatkan skor
• Lebah juga akan kehilangan nyawa jika tertangkap
oleh laba-laba
• Variabel ditetapkan sebelum konstruktor
dan metodenya
• Konstruktor Lebah menetapkan variabel untuk
instance yang nnya
dihasilka
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 35
Permainan
Contoh Metode catchFly() yang Ditetapkan
• Metode catchFly() yang ditetapkan ditulis di
bawah metode() untuk memberi tahu Lebah untuk
menangkap objek lalat
• Kita akan menambahkan satu ke variabel skor
untuk setiap Lalat yang dimakan
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 36
Permainan
Contoh Menetapkan Variabel ke Instance 2
• Nyawa Bee akan hilang melakukan kontak
dengan spider
• Kami juga akan memosisikan ulang Bee ke bagian
kiri atas
• Kami akan memperpanjang kelas Bee
dengan menambahkan metode baru:
− caughtBySpider() dan menambah panggilan untuk
metode act() tersebut
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 37
Permainan
Contoh Menetapkan Variabel ke Instance 2
• Kemudian kami akan menguji jika pengguna
tidak memiliki nyawa lebih dan menghentikan
game
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 38
Permainan
Menampilkan Teks
• Kadang-kadang kita ingin agar pengguna aplikasi
mendapat informasi mengenai aspek-aspek tertentu
dari interaksi mereka, seperti nyawa, skor, atau
kartu tersisa
• Greenfoot lagi-lagi mempunyai beberapa cara
untuk mencapai tujuan ini
• Yang paling sederhana adalah dengan
menggunakan metode Dunia - showText()
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 39
Permainan
Memperbarui Metode catchFly()
• Kita akan menambahkan kode untuk metode
catchFly() untuk menambah bidang skor lalu
menampilkan hasilnya ke layar
• Kita juga telah memindahkan skor terbaru ke
metodenya sendiri dan memanggilnya dalam catchFly()
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 40
Permainan
Terminologi
• Istilah-istilah penting yang digunakan dalam
pelajaran ini termasuk:
− Constructor
− Variabel ditetapkan
− Pseudocode
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 41
Permainan
Rangkuman
• Dalam pelajaran ini, Anda seharusnya sudah belajar
cara:
− Membangun objek dunia menggunakan metode konstruktor
− Membuat objek menggunakan konstruktor
− Menulis pernyataan pemrograman untuk menggunakan
kata kunci baru
− Mendefinisikan tujuan dan sintaks variabel
− Mengenali sintaks untuk menentukan dan menguji variabel
− Menulis pernyataan pemrograman untuk beralih di
antara dua gambar
− Menulis laporan pemrograman untuk mengakhiri game
JF 3-8
Dunia, Animasi, dan Akhir
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 42
Permainan