Tugas 10 - Cake Clicker App

 Muhammad Fahmi Syahputra 

5025221302 - PPB (G)

Link GitHub : https://github.com/fahmisyahputra/cake-clikker-app-ppb

Pada tugas kali ini, saya membuat sebuah aplikasi Cake Clicker dengan menerapkan Jetpack Compose dan bahasa pemrograman KotlinAplikasi ini adalah aplikasi interaktif sederhana dengan Compose yang dimana ketika gambar dessert diklik, aplikasi akan:
- Menambah pendapatan (revenue)
- Menambah jumlah penjualan (dessertsSold)
- Menampilkan dessert baru secara otomatis, tergantung milestone tertentu

Fitur utama aplikasi ini adalah:
- Menggunakan Compose state management (rememberSaveable)
- Interaktif (gambar bisa diklik)
- Top app bar dengan tombol share
- Tampilan yg responsif dan modern


File Utama: MainActivity.kt

File ini adalah entry point utama dari aplikasi. Kita menggunakan ComponentActivity sebagai basis, dan memanggil setContent untuk mengisi UI menggunakan Jetpack Compose.

Di dalamnya juga terdapat lifecycle logging (menggunakan Log.d()) untuk mencatat fase hidup aktivitas seperti onCreate, onStart, onResume, dll. Ini berguna untuk debugging dan pemahaman alur hidup aktivitas Android.


Fungsi DessertClickerApp()

Fungsi utama Compose yang mengatur keseluruhan struktur UI aplikasi.

- State Management

Menggunakan rememberSaveable untuk menyimpan state berikut:

  • revenue: jumlah pendapatan total

  • dessertsSold: total dessert yang dijual

  • currentDessertPrice dan currentDessertImageId: menyimpan dessert yang sedang ditampilkan

Semua data ini tetap tersimpan meskipun layar diputar, karena rememberSaveable secara otomatis menyimpan state melalui lifecycle.



-Layout

Menggunakan Scaffold dengan:

  • TopBar: berisi nama aplikasi dan tombol share

  • Konten utama: ditampilkan lewat DessertClickerScreen()





Fungsi DessertClickerScreen()

UI utama tempat interaksi terjadi.

  • Latar belakang ditampilkan dengan Image(R.drawable.bakery_back)

  • Gambar dessert ditampilkan dan bisa diklik menggunakan Modifier.clickable { onDessertClicked() }

  • Bagian bawah layar menampilkan informasi transaksi seperti total penjualan dan revenue lewat TransactionInfo().


Fungsi TransactionInfo()

Menampilkan dua komponen penting:

  • DessertsSoldInfo(): total penjualan dessert

  • RevenueInfo(): total pendapatan

Keduanya ditampilkan dalam Row dengan jarak kiri-kanan menggunakan Arrangement.SpaceBetween.


Fungsi determineDessertToShow()

Fungsi ini menentukan dessert apa yang ditampilkan selanjutnya tergantung jumlah yang sudah dijual (dessertsSold). Daftar dessert diurutkan berdasarkan startProductionAmount, jadi semakin banyak yang dijual, semakin mahal dessert berikutnya.



Fungsi shareSoldDessertsInformation()

Membuat intent ACTION_SEND untuk berbagi informasi penjualan dan pendapatan. Fungsi ini menggunakan try-catch untuk menghindari crash jika tidak ada aplikasi yang bisa menangani intent tersebut (contohnya tidak ada aplikasi berbagi di device).


Fungsi DessertClickerAppBar()

Menampilkan top bar dengan:

  • Judul aplikasi (dari stringResource)

  • Ikon share (Icons.Filled.Share) yang bisa diklik dan memanggil fungsi shareSoldDessertsInformation().

AppBar ini juga mempertimbangkan WindowInsets agar tampilannya tetap rapi meski ada status bar atau notch.






Hasil Aplikasi :










Comments

Popular posts from this blog

Tugas 2 PPB G - Membuat Aplikasi "Hello Android" dengan Jetpack Compose

Final Project PPB G

Tugas 9 - PPB G Aplikasi Woof