Tugas 10 PPB G 2025 - Farhan Dwi Putra 5025211093

Nama : Farhan Dwi Putra

NRP : 5025211093

Kelas : Pemrograman Perangkat Bergerak (G)


Tugas Pertemuan 10

Deskripsi

Tugas ini berfokus pada pembuatan aplikasi sederhana bernama Cake Clicker App menggunakan Jetpack Compose. Aplikasi ini dirancang sebagai sarana latihan untuk memahami konsep state management dan lifecycle aktivitas di Android.

Konsepnya cukup sederhana: pengguna dapat menekan gambar kue (cake) untuk menjualnya. Setiap klik akan menambah total pendapatan dan jumlah cake yang berhasil dijual. Seiring bertambahnya jumlah penjualan, gambar cake akan berubah menjadi varian yang lebih mahal.


1. Struktur Data

Aplikasi menggunakan struktur data berbentuk data class untuk merepresentasikan setiap jenis cake yang akan ditampilkan:

data class Cake(val imageId: Int, val price: Int, val startProductionAmount: Int)

Tiga atribut utama:

  • imageId: ID dari gambar yang mewakili cake.

  • price: Harga satuan dari cake tersebut.

  • startProductionAmount: Jumlah minimum cake yang harus dijual sebelum cake tersebut bisa ditampilkan.

Data ini dimuat dalam bentuk list statis di file terpisah.


2. Antarmuka Pengguna dengan Jetpack Compose

a. Pengelolaan State

Aplikasi menggunakan rememberSaveable agar data pendapatan dan jumlah cake terjual tetap tersimpan meskipun terjadi perubahan konfigurasi seperti rotasi layar.

var revenue by rememberSaveable { mutableStateOf(0) }
var cakesSold by rememberSaveable { mutableStateOf(0) }

b. Tampilan Utama

UI dibangun menggunakan Composable CakeClickerScreen yang menampilkan gambar latar, gambar cake interaktif, dan panel informasi:

Image(
    painter = painterResource(cakeImageId),
    contentDescription = null,
    modifier = Modifier.clickable { onCakeClicked() }
)

Ketika gambar ditekan, data akan diperbarui secara otomatis.


3. Logika Pemilihan Gambar Cake

Cake yang ditampilkan akan berganti mengikuti perkembangan jumlah cake yang sudah terjual. Fungsi berikut digunakan untuk menentukan jenis cake yang harus muncul:

fun determineCakeToShow(
    cakes: List<Cake>,
    cakesSold: Int
): Cake {
    var cakeToShow = cakes.first()
    for (cake in cakes) {
        if (cakesSold >= cake.startProductionAmount) {
            cakeToShow = cake
        } else {
            break
        }
    }
    return cakeToShow
}

Fungsi ini memastikan pengguna melihat gambar cake yang sesuai dengan level penjualannya.


4. Observasi Siklus Hidup Aktivitas

Untuk memahami lifecycle dari sebuah activity di Android, aplikasi ini juga menyertakan kode log yang mencatat perubahan status lifecycle, seperti onCreate, onStart, onResume, hingga onDestroy.

override fun onStart() {
    super.onStart()
    Log.d(TAG, "onStart Called")
}

Hal ini memungkinkan developer untuk memantau siklus hidup aktivitas secara langsung melalui Logcat.


Hasil


Source Code : Github

Comments

Popular posts from this blog

EAS PPB G 2025 - Kelompok Doa Ibu

EAS PPB G 2025 - Farhan Dwi Putra 5025211093

Tugas 11 PPB G 2025 - Farhan Dwi Putra 5025211093