5025221154 - Helsa Sriprameswari Putri - Tugas 4 Membuat Dice Roller

 Tugas 4 Membuat Dice Roller

 

Nama : Helsa Sriprameswari Putri

NRP : 5025221154 

 

Github repository : https://github.com/helsasp/Tugas4_PPB_DiceRoller

Demo Youtube : 

 

 App Preview :

 

Source Code : 

package com.example.diceroller

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.example.diceroller.ui.theme.DiceRollerTheme

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DiceRollerTheme {
DiceRollerApp()
}
}
}
}


@Preview
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage(modifier = Modifier
.fillMaxSize()
.wrapContentSize(Alignment.Center)
)
}

@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Column (
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(imageResource),
contentDescription = result.toString()
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { result = (1..6).random() }) {
Text(stringResource(R.string.roll))
}
}
}
  • Function MainActivity

Kelas MainActivity adalah titik masuk aplikasi. Di dalam onCreate(), setContent digunakan untuk menampilkan UI aplikasi, yang diatur dalam tema DiceRollerTheme. Tema ini dapat digunakan untuk memberi desain yang konsisten pada antarmuka.

  • Function DiceRollerApp

Fungsi DiceRollerApp adalah fungsi composable untuk menampilkan UI utama aplikasi. Fungsi ini memanggil DiceWithButtonAndImage, yang berfungsi untuk menampilkan gambar dadu dan tombol untuk menggulir dadu.

  • Function DiceWithButtonAndImage

  • Fungsi composable ini mendefinisikan UI aplikasi, yaitu gambar dadu dan tombol yang dapat ditekan.
  • Variabel result menyimpan nilai yang dirolln (1 hingga 6). Gambar dadu yang ditampilkan disesuaikan dengan nilai result.
  • Fungsi Button akan menghasilkan nilai acak antara 1 hingga 6 ketika ditekan, dan gambar dadu akan diperbarui sesuai dengan nilai tersebut.
    •  UI Layout:

  • Column digunakan untuk menyusun elemen-elemen secara vertikal.
  • Image digunakan untuk menampilkan gambar dadu yang sesuai dengan nilai hasil guliran.
  • Button akan menggulirkan dadu ketika ditekan.
  • Spacer menambah jarak antara gambar dan tombol.
  • Modifier fillMaxSize dan wrapContentSize memastikan bahwa layout akan mengisi seluruh layar dan memposisikan elemen-elemen secara terpusat.
  •  

    • Resource
  • R.drawable.dice_1, R.drawable.dice_2, dll., adalah gambar-gambar dadu yang ada di folder res/drawable yang dipilih berdasarkan nilai acak yang dihasilkan.
  • R.string.roll adalah string resource yang berfungsi untuk label tombol (misalnya, "Roll").
  • Komentar

    Postingan populer dari blog ini

    5025221154 Helsa Sriprameswari Putri - EAS Glowin' App

    5025221154 Helsa Sriprameswari Putri - ETS PPB

    5025221154 Helsa Sriprameswari Putri - Tugas 6 Membuat Program Konversi Mata Uang