Tugas 10
Nama: Danar Sodik Priyambodo
Kelas: PPB - A
NRP: 5025211145
Analisis Aplikasi Android "Unscramble"
Unscramble adalah permainan tebak kata untuk satu pemain, di mana pengguna harus menebak kata asli dari huruf-huruf yang telah diacak. Aplikasi ini merupakan contoh implementasi arsitektur Android modern yang baik, karena mengadopsi komponen seperti ViewModel dan StateFlow untuk membangun aplikasi yang bersifat reaktif menggunakan Jetpack Compose.
Tampilan Aplikasi
Analisis Kode Program
Aplikasi Unscramble dirancang dengan mengikuti prinsip arsitektur modular, di mana data, logika bisnis, dan antarmuka pengguna dipisahkan dengan jelas. Tujuannya adalah agar kode mudah dikembangkan, diuji, dan dipelihara.
1. Sumber Data – WordsData.kt
File ini berperan sebagai sumber data utama permainan, menyimpan seluruh kata yang digunakan dan parameter penting lainnya.
MAX_NO_OF_WORDS
: Menetapkan jumlah maksimum kata yang ditampilkan per sesi, yaitu 10.SCORE_INCREASE
: Menentukan nilai skor yang ditambahkan setiap kali pengguna menjawab benar, yaitu 20 poin.allWords
: Koleksi kata dalam bentukSet
yang digunakan untuk diacak. Penggunaan Set mencegah adanya kata ganda.
2. UI State – GameUiState.kt
Kelas data ini menyimpan semua informasi yang dibutuhkan UI pada satu waktu. Seluruh elemen UI dapat diperbarui berdasarkan satu objek state yang terstruktur.
kotlin Copy Edit data class GameUiState( val currentScrambledWord: String = "", val currentWordCount: Int = 1, val score: Int = 0, val isGuessedWordWrong: Boolean = false, val isGameOver: Boolean = false )3. Logika dan Manajemen State – GameViewModel.kt
Seluruh logika permainan dikelola di dalam ViewModel, sehingga antarmuka pengguna hanya bertugas menampilkan data.
- StateFlow: ViewModel menyimpan
GameUiState
di dalamMutableStateFlow
, lalu mengeksposnya sebagaiStateFlow
yang hanya bisa dibaca dari luar. - Pengacakan Kata: Fungsi
pickRandomWordAndShuffle()
memilih kata acak yang belum digunakan dan mengacak hurufnya. - Validasi Jawaban: Fungsi
checkUserGuess()
memeriksa apakah tebakan pengguna cocok dengan kata asli dan memperbarui skor jika benar. - Data Flow Searah: Setiap aksi dari pengguna akan memicu pembaruan pada
_uiState
, yang kemudian direspons otomatis oleh UI.
4. Antarmuka Pengguna – GameScreen.kt
Tampilan aplikasi dibangun menggunakan fungsi-fungsi Composable dari Jetpack Compose.
- Observasi State: Komponen
GameScreen
memantau perubahan state dengancollectAsState()
, memastikan tampilan selalu sinkron dengan data. - Tata Letak: Disusun menggunakan
GameLayout
yang mencakup skor, kata acak, kolom input, serta tombol “Submit” dan “Skip”. - Dialog Skor Akhir: Saat permainan selesai, dialog akhir akan ditampilkan, memberi pilihan untuk bermain lagi atau keluar.
5. Aktivitas Utama – MainActivity.kt
MainActivity
bertugas sebagai titik awal aplikasi. Di sini, tema diatur dan fungsi GameScreen
dipanggil untuk menampilkan tampilan utama permainan.
Kesimpulan
Proyek Unscramble merupakan representasi yang baik dari praktik pengembangan aplikasi Android berbasis arsitektur modern. Dengan pemisahan tanggung jawab antara data, logika (melalui ViewModel), dan tampilan (melalui Compose), kode menjadi lebih bersih, mudah dirawat, dan modular. Penggunaan StateFlow
memberikan alur data yang reaktif dan efisien, sehingga UI selalu ter-update sesuai dengan perubahan data terkini.
Video Demo
Source Code: https://github.com/Danar1111/Unscramble-App-Kotlin.git
Komentar
Posting Komentar