PPB: Tugas 8 (Unscramble)
Nama: Nayya Kamila Putri Yulianto
NRP: 5025211183
Kelas: PPB (B)
Aplikasi Unscramble adalah permainan kata satu pemain di mana pemain harus menyusun kembali huruf-huruf yang diacak untuk menebak kata aslinya. Saat memulai permainan, aplikasi akan menampilkan kata yang sudah diacak, dan pemain harus menggunakan semua huruf yang tersedia untuk menebak kata yang benar. Jika tebakannya benar, pemain akan mendapatkan poin. Namun, jika salah, pemain dapat mencoba menebak lagi beberapa kali sebelum opsi untuk melewati kata ditawarkan. Di sudut kanan atas layar, aplikasi menampilkan jumlah total kata acak yang dimainkan dalam satu permainan, yang biasanya berjumlah 10 kata.
Implementasi aplikasi ini meliputi:
WordsData.kt: Berisi daftar kata yang digunakan dalam permainan, konstanta untuk jumlah maksimum kata per game, dan jumlah poin yang diberikan kepada pemain untuk setiap tebakan kata yang benar.
MainActivity.kt: File ini sebagian besar berisi kode yang dihasilkan dari template. Di dalamnya, kita menetapkan tampilan
GameScreen
menggunakansetContent {}
.GameScreen.kt: Berisi semua elemen antarmuka pengguna yang diimplementasikan menggunakan Composable UI. Ini termasuk tampilan kata yang diacak, petunjuk permainan, dan kolom teks tempat pengguna memasukkan tebakannya.
GameStatus: Fungsi Composable yang menampilkan skor saat ini dan informasi lainnya di bagian bawah layar permainan, mungkin dalam sebuah
Card
. Skor saat ini biasanya ditampilkan secara dinamis, tetapi untuk implementasi sederhana, mungkin dihardcode menjadi 0.GameLayout: Fungsi Composable lainnya yang menangani tata letak utama permainan, menampilkan elemen-elemen seperti kata acak, instruksi permainan, dan area input tebakan.
- GameScreen
GameScreen adalah komposisi dari beberapa fungsi composable yang penting untuk gameplay. Ini mencakup: - GameStatus: Menampilkan skor saat ini dan informasi lainnya di bagian bawah layar.
- GameLayout: Menangani tata letak utama permainan, menampilkan elemen-elemen seperti kata acak, instruksi permainan, dan area input tebakan.
- Judul Game dan Jumlah Kata: Memberikan informasi kepada pengguna tentang judul permainan dan jumlah kata yang telah dimainkan.
- Tombol Submit dan Skip: Memungkinkan pengguna untuk mengirim tebakan mereka atau melewati kata saat ini.
- FinalScoreDialog
- Menampilkan dialog kecil yang berisi skor akhir dan pesan selamat.
- Menyediakan tombol atau opsi untuk "Play Again" agar pengguna dapat memulai permainan baru.
- Menyediakan tombol atau opsi "Exit Game" untuk keluar dari permainan dan kembali ke layar utama atau menu aplikasi.
Menambahkan ViewModel
ViewModel akan bertanggung jawab menyimpan dan menampilkan status UI serta menjaga data aplikasi saat aktivitas dihancurkan dan dibuat ulang oleh Android framework.Mengimplementasikan StatusUI
StatusUI menghubungkan elemen-elemen UI dengan status aplikasi, sehingga setiap perubahan pada StatusUI langsung tercermin di UI.Membuat GameViewModel
Buat file Kotlin baru bernamaGameViewModel
dan tambahkan logika permainan di dalamnya, dengan meng-extend class ini dariViewModel
.Menambahkan StateFlow
Gunakan StateFlow untuk mengelola pembaruan status saat ini dan baru, sehingga status aplikasi tetap terjaga meskipun terjadi perubahan konfigurasi perangkat.Memilih Kata Acak
Tambahkan properticurrentWord
pada GameViewModel untuk menyimpan kata acak saat ini. Buat metode untuk memilih kata acak dari daftar kata yang tersedia.Merancang UI dengan Compose
Perbarui UI menggunakan Compose dengan menghubungkan status aplikasi dari ViewModel. Setiap kali terjadi perubahan status UI, Compose akan membuat ulang bagian UI yang terpengaruh.Memverifikasi Kata Tebakan dan Memperbarui Skor
Implementasikan logika untuk memverifikasi kata yang ditebak pengguna dengan kata asli yang sudah diacak. Jika benar, update skor permainan.Memperbarui Skor dan Jumlah Kata
Setiap kali pengguna berhasil menebak kata, perbarui skor dan jumlah kata yang sudah ditebak untuk mencerminkan kemajuan permainan.Menangani Akhir Permainan dan Menampilkan Dialog
Tambahkan logika di ViewModel untuk mengakhiri permainan ketika semua kata telah ditebak atau waktu habis. Tampilkan dialog akhir permainan yang memberikan opsi kepada pengguna untuk mengulangi permainan atau keluar dari permainan.Menyimpan Status dalam Rotasi Perangkat
ViewModel akan menyimpan data aplikasi agar tetap tersedia setelah rotasi perangkat, memastikan bahwa data permainan tidak hilang ketika layar berubah orientasi.
Link Github
FinalScoreDialog adalah komposisi komposabel yang menampilkan dialog akhir permainan. Dialog ini biasanya muncul saat permainan selesai, memberikan opsi kepada pengguna untuk memainkan kembali atau keluar dari permainan. Implementasinya mencakup:
Comments
Post a Comment