Tugas 7 PPB - Dessert Clicker

 Nama : I Gusti Ngurah Ervan Juli Ardana NRP : 5025211205 Kelas : Pemrograman Perangkat Bergerak B Tahun : 2024


Pada pertemuan kelas Pemrograman Perangkat Bergerak B kali ini, kami diperkenalkan dengan pengenalan Dessert Clicker pada  android studio. Pada pertemuan ini, saya akan akan membuat sebuah aplikasi bernama Dessert Clicker. Aplikasi ini memungkinkan pengguna berinteraksi dengan cara men-tap gambar kue, yang akan meningkatkan jumlah kue yang terjual dan total pendapatan


Aplikasi Dessert Clicker

  • Implementasi

  1. Buatlah Empty Activity pada android studio

  2. Ubahlah bagian mainactivity.kt sebagai berikut: 

  • Kelas Main Activity : 

pertama kali dilakukan pemanggilan enableEdgeToEdge() untuk mengoptimalkan tampilan aplikasi agar memanfaatkan layar secara penuh. Selanjutnya, super.onCreate(savedInstanceState) digunakan untuk melakukan inisialisasi standar dari kelas induk ComponentActivity. 


class MainActivity : ComponentActivity() {

   override fun onCreate(savedInstanceState: Bundle?) {

       enableEdgeToEdge()

       super.onCreate(savedInstanceState)

       Log.d(TAG, "onCreate Called")

       setContent {

           DessertClickerTheme {

               // A surface container using the 'background' color from the theme

               Surface(

                   modifier = Modifier

                       .fillMaxSize()

                       .statusBarsPadding(),

               ) {

                   DessertClickerApp(desserts = Datasource.dessertList)

               }

           }

       }

   }


  • Fungsi messsage : 

Setiap fungsi ini berfungsi penting dalam mengelola siklus hidup aktivitas di Android, memungkinkan aplikasi untuk merespons perubahan dalam status dan interaksi pengguna dengan baik


   override fun onStart() {

       super.onStart()

       Log.d(TAG, "onStart Called")

   }


   override fun onResume() {

       super.onResume()

       Log.d(TAG, "onResume Called")

   }


   override fun onRestart() {

       super.onRestart()

       Log.d(TAG, "onRestart Called")

   }


   override fun onPause() {

       super.onPause()

       Log.d(TAG, "onPause Called")

   }


   override fun onStop() {

       super.onStop()

       Log.d(TAG, "onStop Called")

   }


   override fun onDestroy() {

       super.onDestroy()

       Log.d(TAG, "onDestroy Called")

   }

}


  • Fungsi DetermineDessertToShow

fun determineDessertToShow(

   desserts: List<Dessert>,

   dessertsSold: Int

): Dessert {

   var dessertToShow = desserts.first()

   for (dessert in desserts) {

       if (dessertsSold >= dessert.startProductionAmount) {

           dessertToShow = dessert

       } else {

           // The list of desserts is sorted by startProductionAmount. As you sell more desserts,

           // you'll start producing more expensive desserts as determined by startProductionAmount

           // We know to break as soon as we see a dessert who's "startProductionAmount" is greater

           // than the amount sold.

           break

       }

   }


   return dessertToShow

}


  • Fungsi DessertCliickerAppbar

Fungsi determineDessertToShow ini berguna dalam simulasi atau permainan di mana berbagai jenis kue diproduksi berdasarkan jumlah kue yang telah dijual, dengan jenis kue yang lebih mahal menjadi tersedia saat jumlah penjualan meningkat.


@Composable

private fun DessertClickerAppBar(

   onShareButtonClicked: () -> Unit,

   modifier: Modifier = Modifier

) {

   Row(

       modifier = modifier,

       horizontalArrangement = Arrangement.SpaceBetween,

       verticalAlignment = Alignment.CenterVertically,

   ) {

       Text(

           text = stringResource(R.string.app_name),

           modifier = Modifier.padding(start = dimensionResource(R.dimen.padding_medium)),

           color = MaterialTheme.colorScheme.onPrimary,

           style = MaterialTheme.typography.titleLarge,

       )

       IconButton(

           onClick = onShareButtonClicked,

           modifier = Modifier.padding(end = dimensionResource(R.dimen.padding_medium)),

       ) {

           Icon(

               imageVector = Icons.Filled.Share,

               contentDescription = stringResource(R.string.share),

               tint = MaterialTheme.colorScheme.onPrimary

           )

       }

   }

}


  • Fungsi TransactionInfo:

Fungsi TransactionInfo adalah sebuah fungsi Kotlin private yang menggunakan Jetpack Compose untuk menampilkan informasi transaksi dalam aplikasi.


private fun TransactionInfo(

   revenue: Int,

   dessertsSold: Int,

   modifier: Modifier = Modifier

) {

   Column(modifier = modifier) {

       DessertsSoldInfo(

           dessertsSold = dessertsSold,

           modifier = Modifier

               .fillMaxWidth()

               .padding(dimensionResource(R.dimen.padding_medium))

       )

       RevenueInfo(

           revenue = revenue,

           modifier = Modifier

               .fillMaxWidth()

               .padding(dimensionResource(R.dimen.padding_medium))

       )

   }

}


  • Fungsi DessertSoldInfo : 

Fungsi DessertsSoldInfo adalah sebuah fungsi Kotlin yang bersifat private dan menggunakan Jetpack Compose untuk menampilkan informasi tentang jumlah kue yang terjual dalam aplikasi.

private fun DessertsSoldInfo(dessertsSold: Int, modifier: Modifier = Modifier) {

   Row(

       modifier = modifier,

       horizontalArrangement = Arrangement.SpaceBetween,

   ) {

       Text(

           text = stringResource(R.string.dessert_sold),

           style = MaterialTheme.typography.titleLarge,

           color = MaterialTheme.colorScheme.onSecondaryContainer

       )

       Text(

           text = dessertsSold.toString(),

           style = MaterialTheme.typography.titleLarge,

           color = MaterialTheme.colorScheme.onSecondaryContainer

       )

   }

}


  • Fungsi Preview : 

Fungsi MyDessertClickerAppPreview adalah sebuah fungsi Kotlin yang diberi anotasi @Preview dan @Composable, digunakan untuk menampilkan UI aplikasi Dessert Clicker

@Preview

@Composable

fun MyDessertClickerAppPreview() {

   DessertClickerTheme {

       DessertClickerApp(listOf(Dessert(R.drawable.cupcake, 5, 0)))

   }

}


  • Dokumentasi Hasil : 

Gambar 1. Tampilan sebelum Kue di click



Gambar 2. Tampilan Setelah Gambar Kue di click


Link Repository : https://github.com/NgurahErvan/Dessert-Clicker---Android


Komentar

Postingan populer dari blog ini

Blog Ervan

Tugas 1 PPB - Redesign Mobile Application

Tugas 1 PBKK - Calculator app