Tugas 10
Nama : Muhamad Faiz Fernanda
Kelas : PPB -A
NRP : 5025211186
Analisis Kode Aplikasi Android "Unscramble"
Unscramble adalah permainan tebak kata untuk pemain tunggal, di mana pemain diminta untuk menebak kata asli dari kumpulan huruf yang telah diacak. Aplikasi ini menjadi contoh yang tepat dalam menerapkan komponen-komponen arsitektur Android modern, seperti ViewModel dan StateFlow, yang digunakan untuk membangun aplikasi reaktif berbasis Jetpack Compose.
Tampilan Aplikasi
Analisis Kode Sumber Aplikasi
Aplikasi Unscramble dirancang menggunakan pendekatan arsitektur modern dengan prinsip pemisahan tanggung jawab—memisahkan antara data, logika bisnis, dan tampilan. Tujuan utamanya adalah menghasilkan kode yang rapi, modular, dan mudah untuk dikembangkan atau diuji.
1. Sumber Data – WordsData.kt
File ini berfungsi sebagai pusat data utama untuk permainan (single source of truth). Semua kata yang digunakan dalam permainan serta parameter dasar permainan didefinisikan di sini.
-
MAX_NO_OF_WORDS
: Menentukan jumlah maksimal kata dalam satu sesi permainan, yaitu 10 kata. -
SCORE_INCREASE
: Menetapkan poin yang diberikan untuk setiap jawaban benar, yaitu 20 poin. -
allWords
: KoleksiSet
yang menyimpan daftar kata yang akan diacak. PenggunaanSet
memastikan tidak ada kata yang muncul lebih dari sekali.
Contoh:
2. State UI – GameUiState.kt
Kelas data ini mewakili seluruh informasi yang dibutuhkan UI dalam satu waktu. Pendekatan ini memudahkan manajemen state karena semua elemen UI dikelompokkan ke dalam satu objek state.
3. Logika dan Pengelola State – GameViewModel.kt
File ini merupakan pusat pengolahan logika permainan. Semua logika bisnis ditempatkan di ViewModel, sehingga UI tidak langsung menangani perhitungan atau pemrosesan data.
-
StateFlow
: MenggunakanMutableStateFlow
untuk menyimpan dan mengelola state dariGameUiState
. Data ini diekspos ke UI melaluiStateFlow
yang bersifat read-only dari luar. -
Pengacakan Kata: Fungsi
pickRandomWordAndShuffle()
mengambil kata acak dari daftar, memastikan tidak ada pengulangan, lalu mengacak hurufnya untuk ditampilkan ke pemain. -
Validasi Jawaban: Fungsi
checkUserGuess()
membandingkan tebakan pemain dengan jawaban yang benar. Bila cocok, skor ditambah. Jika salah, state diperbarui agar UI menampilkan kesalahan. -
Alur Satu Arah: Semua interaksi dari UI seperti menebak atau melewati kata akan memicu fungsi di ViewModel, yang kemudian memperbarui state. Perubahan ini secara otomatis direspons oleh UI.
Contoh:
4. Antarmuka Pengguna – GameScreen.kt
Seluruh tampilan aplikasi dibangun menggunakan fungsi-fungsi Composable dari Jetpack Compose.
-
Observasi State: Composable
GameScreen
mengamati perubahan state melaluicollectAsState()
. Ini memastikan UI akan selalu diperbarui ketika data berubah. -
Tata Letak: Layout utama dikelola melalui
GameLayout
, yang mencakup area skor, kata acak, input teks untuk jawaban, dan tombol submit serta skip. -
Dialog Skor Akhir: Ketika permainan selesai (state
isGameOver
bernilaitrue
), akan muncul dialog akhir yang menampilkan skor dan memberikan opsi untuk mengulang atau keluar.
5. Main Activity – MainActivity.kt
Sebagai titik awal aplikasi, MainActivity
berfungsi untuk mengatur tema dan menampilkan layar utama permainan. Fungsinya cukup sederhana: menjadi wadah bagi composable GameScreen
.
Kesimpulan
Proyek Unscramble menunjukkan penerapan praktik terbaik dalam pengembangan aplikasi Android dengan pendekatan modern. Dengan memisahkan antara data, logika (melalui ViewModel), dan UI (melalui Compose), kode menjadi lebih modular, mudah diuji, serta lebih terstruktur. Penggunaan StateFlow
menjadikan proses manajemen state reaktif dan efisien, memastikan bahwa tampilan aplikasi selalu selaras dengan data aktual.
Komentar
Posting Komentar