Tugas 7 - Pemrograman Perangkat Bergerak

Nama : sayid ziyad ibrahim alaydrus
NRP : 5025201147
kelas : PPB-F

Tugas : membuat aplikasi unscramble dengan viewmodel dan state


Unscramble adalah permainan kata satu pemain di mana pemain mencoba menebak kata dari huruf-huruf yang diacak. Pemain mendapatkan poin untuk setiap tebakan yang benar dan memiliki kesempatan untuk mencoba lagi jika salah. Pemain juga memiliki opsi untuk melewati kata yang sulit. Di pojok kanan atas, ditampilkan jumlah kata yang telah dimainkan. Setiap permainan terdiri dari 10 kata acak.



Apa itu ViewModel?

ViewModel adalah sebuah kelas yang dirancang untuk menyimpan dan mengelola data yang biasanya berhubungan dengan UI. Sehingga data tersebut dapat digunakan kembali saat terjadi perubahan konfigurasi.

Apa fungsi dari ViewModel?

Terkadang, terjadi beberapa perubahan konfigurasi pada device yang kita gunakan, entah itu saat rotasi layar, munculnya virtual keyboard, dan lain-lain. Saat perubahan itu terjadi, android akan melakukan restart terhadap activity yang sedang berjalan.


1. menambahkan view model


Setelah kalian berhasil melakukan import project Aplikasi Unscramble di Android Studio, tugas pertama adalah menambahkan ViewModel ke aplikasi untuk menyimpan status UI game (kata acak, jumlah kata, dan skor). Untuk mengatasi masalah pada kode awal yang kalian lihat di bagian sebelumnya, kalian perlu menyimpan data game di ViewModel.

a. buildgradle.kts

dependencies { // other dependencies implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1") //... }



2. merancang compose UI

Pada fungsi GameScreen, teruskan argumen kedua dari jenis GameViewModel dengan nilai default viewModel(). seperti berikut:

import androidx.lifecycle.viewmodel.compose.viewModel @Composable fun GameScreen( gameViewModel: GameViewModel = viewModel() ) { // ... }


meneruskan gameUiState.currentScrambledWord ke composable GameLayout(). Anda menambahkan argumen di langkah selanjutnya, jadi abaikan error untuk saat ini.

GameLayout( currentScrambledWord = gameUiState.currentScrambledWord, modifier = Modifier .fillMaxWidth() .wrapContentHeight() .padding(mediumPadding) )




Tambahkan currentScrambledWord sebagai parameter lain ke fungsi composable GameLayout()


@Composable fun GameLayout( currentScrambledWord: String, modifier: Modifier = Modifier ) { }



3. memverifikasi kata tebakan dan update skor


fun checkUserGuess() { if (userGuess.equals(currentWord, ignoreCase = true)) { } else { } // Reset user guess updateUserGuess("") }




5. update skor 

Untuk memperbarui nilai skor, di GameViewModel, pada fungsi checkUserGuess(), di dalam kondisi if untuk saat tebakan pengguna benar, tingkatkan nilai score.

import com.example.unscramble.data.SCORE_INCREASE fun checkUserGuess() { if (userGuess.equals(currentWord, ignoreCase = true)) { // User's guess is correct, increase the score val updatedScore = _uiState.value.score.plus(SCORE_INCREASE) } else { //... } }




Hasil dan dokumentasi






Comments

Popular posts from this blog

Tugas 1 -Evolusi Perangkat Lunak

Tugas 6 - Evolusi Perangkat Lunak

Tugas 3- Evolusi perangkat Lunak