Tugas PPB Pertemuan 11

 VIEW MODEL AND STATE IN COMPOSE

Nama : Muhammad Ahyun Irsyada
NRP : 5025211251

Deskripsi Singkat 

Aplikasi Unscramble adalah sebuah perangkat lunak yang dirancang untuk membantu pengguna menguraikan kata-kata acak menjadi kata-kata yang bermakna. Aplikasi ini biasanya digunakan dalam permainan kata, seperti teka-teki silang, permainan kata, atau saat memecahkan anagram. Berikut adalah beberapa fitur dan fungsi umum yang biasanya ada dalam aplikasi Unscramble:

  1. Input Kata Acak: Pengguna dapat memasukkan serangkaian huruf acak.
  2. Proses Penguraian: Aplikasi akan menguraikan huruf-huruf tersebut menggunakan algoritma tertentu untuk mencari semua kombinasi huruf yang mungkin membentuk kata-kata yang sah.
  3. Kamus Terintegrasi: Aplikasi biasanya terhubung dengan kamus besar yang berisi daftar kata-kata yang valid dalam satu atau beberapa bahasa.
  4. Hasil Berperingkat: Aplikasi mungkin menampilkan hasil dalam urutan berdasarkan panjang kata atau frekuensi penggunaan kata dalam bahasa sehari-hari.
  5. Opsi Bahasa: Beberapa aplikasi mendukung penguraian kata dalam berbagai bahasa.
  6. Antarmuka Pengguna: Desain yang intuitif dan mudah digunakan, dengan antarmuka yang memungkinkan pengguna untuk dengan cepat memasukkan huruf dan melihat hasilnya.
  7. Fitur Tambahan: Beberapa aplikasi mungkin menawarkan fitur tambahan seperti definisi kata, sinonim, atau opsi untuk menyimpan dan berbagi hasil.

Aplikasi Unscramble berguna tidak hanya untuk hiburan, tetapi juga sebagai alat pendidikan untuk meningkatkan kosakata dan keterampilan bahasa.

Penjelasan Aplikasi 

1. Menyiapkan File WordsData.kt

File WordsData.kt digunakan untuk menyimpan daftar kata-kata yang akan digunakan dalam permainan. Selain itu, file ini juga menentukan jumlah maksimum kata yang dapat dimainkan dalam satu sesi permainan dan jumlah poin yang diberikan untuk setiap kata yang berhasil ditebak dengan benar. Hal ini membantu menetapkan aturan permainan yang jelas terkait skor dan jumlah kata.

2. Menyiapkan MainActivity.kt

File MainActivity.kt terutama berisi kode template yang dihasilkan oleh Android Studio. Kode ini bertanggung jawab untuk mengatur tampilan utama aplikasi, termasuk menampilkan layar GameScreen di dalam blok setContent{}. Hal ini memastikan bahwa layar GameScreen ditampilkan dengan benar saat aplikasi dijalankan.

3. Menyiapkan File GameScreen.kt

File GameScreen.kt adalah tempat didefinisikannya semua elemen antarmuka pengguna yang dapat disusun (composable). File ini mencakup berbagai fungsi composable utama seperti GameStatus, GameLayout, dan GameScreen. Fungsi-fungsi ini bekerja bersama untuk menciptakan antarmuka pengguna dan interaksi permainan yang lengkap.

4. Implementasi Fungsi GameStatus

GameStatus adalah fungsi composable yang digunakan untuk menampilkan skor permainan di bagian bawah layar. Fungsi ini menggunakan komponen Card untuk menampilkan teks yang menunjukkan skor pemain. Pada tahap ini, skor diatur secara statis menjadi 0, namun nantinya akan diperbarui berdasarkan kinerja pemain dalam permainan.

5. Implementasi Fungsi GameLayout

GameLayout adalah fungsi composable yang menampilkan elemen-elemen utama dalam permainan, seperti kata acak yang harus ditebak, petunjuk permainan, dan kolom teks untuk tebakan pengguna. Fungsi ini menggunakan tiga elemen dalam Card: teks kata acak yang tetap sebagai "scrambleun", teks petunjuk yang memberikan informasi kepada pemain, dan kolom teks untuk input pengguna menggunakan komponen OutlinedTextField.

6. Implementasi Fungsi GameScreen

Fungsi composable GameScreen menggabungkan semua elemen permainan. Ini mencakup fungsi composable GameStatus dan GameLayout, serta menampilkan judul permainan, jumlah kata yang telah ditebak, dan komponen untuk tombol Submit dan Skip. Hal ini memastikan bahwa semua elemen antarmuka pengguna permainan terlihat dan berfungsi dengan baik.

7. Implementasi Dialog FinalScoreDialog

FinalScoreDialog adalah fungsi composable yang menampilkan dialog kepada pengguna di akhir permainan. Dialog ini memberikan opsi kepada pemain untuk bermain lagi atau keluar dari permainan. Pada tahap ini, logika untuk menampilkan dialog ini di akhir permainan akan ditambahkan, memastikan bahwa pemain memiliki pengalaman akhir yang memuaskan.

8. Menambahkan ViewModel ke Aplikasi

ViewModel adalah komponen yang penting untuk menyimpan dan menampilkan status UI. Ini memastikan bahwa data aplikasi tetap ada meskipun aktivitas dihancurkan dan dibuat ulang oleh framework Android. Untuk mengimplementasikan ViewModel, kita perlu memperluas class ViewModel dari library komponen arsitektur dan menyimpan data aplikasi di dalamnya, menjaga konsistensi data dan status aplikasi.

9. Mengimplementasikan StatusUI

StatusUI adalah representasi visual dari informasi aplikasi. Elemen-elemen UI di layar terhubung dengan status aplikasi melalui StatusUI, sehingga setiap perubahan pada StatusUI langsung tercermin di UI. Ini memastikan bahwa pengguna selalu melihat tampilan yang sesuai dengan status aplikasi saat ini.

10. Menambahkan Dependensi ViewModel

Untuk menggunakan ViewModel, kita perlu menambahkan dependensi yang diperlukan di build.gradle.kts (Module

). Dependensi ini memungkinkan kita untuk menambahkan ViewModel berbasis siklus hidup ke aplikasi Compose, memastikan bahwa kita dapat memanfaatkan semua fitur ViewModel.

11. Membuat GameViewModel

Buat file Kotlin bernama GameViewModel di dalam paket ui dan perluas class ini dari ViewModel. GameViewModel akan bertanggung jawab untuk menyimpan dan mengelola data terkait permainan, seperti kata acak saat ini dan skor pemain. Dengan menggunakan ViewModel, kita dapat memastikan bahwa data permainan tetap konsisten dan tidak hilang saat rotasi perangkat atau penghancuran aktivitas.

12. Menambahkan StateFlow

StateFlow adalah aliran data yang dapat diamati yang menampilkan pembaruan status saat ini dan baru. Ini sangat berguna untuk menjaga status aplikasi tetap terawat saat terjadi perubahan konfigurasi perangkat. Dengan StateFlow, kita dapat mengelola aliran data secara efisien dan memastikan bahwa UI selalu mencerminkan status aplikasi terbaru.

13. Memilih Kata Acak

Untuk memilih kata acak, tambahkan properti currentWord bertipe String pada GameViewModel. Properti ini akan menyimpan kata acak saat ini yang harus ditebak oleh pemain. Selain itu, buat metode untuk memilih kata acak tanpa parameter input, yang akan digunakan untuk memperbarui currentWord setiap kali diperlukan.

14. Merancang UI dengan Compose

Dalam Compose, UI diperbarui dengan mengubah status aplikasi. Setiap kali status UI berubah, Compose akan membuat ulang bagian UI yang terpengaruh. Ini memastikan bahwa UI selalu up-to-date dengan status aplikasi dan memberikan pengalaman pengguna yang mulus.

15. Memverifikasi Kata Tebakan dan Memperbarui Skor

Implementasikan metode untuk memverifikasi kata yang ditebak pengguna dan memperbarui skor permainan. Metode ini akan membandingkan tebakan pengguna dengan kata acak saat ini dan memperbarui skor sesuai dengan hasilnya. Selain itu, lakukan pembaruan status UI permainan dengan skor baru dan kata baru.

16. Memperbarui Skor dan Jumlah Kata

Perbarui skor permainan dan jumlah kata yang telah ditebak oleh pengguna untuk mencerminkan kemajuan dalam permainan. Ini memberikan umpan balik kepada pemain tentang performa mereka dan membantu mereka melacak kemajuan mereka dalam permainan.

17. Menangani Akhir Permainan dan Menampilkan Dialog

Tambahkan logika untuk mengakhiri permainan dan menampilkan dialog akhir permainan kepada pengguna. Dialog ini memberikan opsi kepada pengguna untuk mengulangi permainan atau keluar. Dengan menangani akhir permainan secara eksplisit, kita dapat memastikan bahwa pemain memiliki pengalaman akhir yang memuaskan dan dapat dengan mudah memutuskan apakah ingin bermain lagi atau tidak.

18. Menyimpan Status Saat Rotasi Perangkat

ViewModel menyimpan data aplikasi yang dipertahankan saat aktivitas dihancurkan dan dibuat ulang oleh Android. Data yang disimpan dalam ViewModel tetap tersedia setelah rotasi perangkat, memastikan kontinuitas pengalaman pengguna. Dengan demikian, pemain tidak akan kehilangan kemajuan mereka dalam permainan hanya karena rotasi perangkat, yang meningkatkan keseluruhan pengalaman bermain.




Komentar

Postingan populer dari blog ini

Quiz Cl PBKK-B

Quiz 1 PBKK-b

PPB-B EAS