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
result
menyimpan nilai yang dirolln (1 hingga 6). Gambar dadu yang ditampilkan disesuaikan dengan nilai result
.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.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
Posting Komentar