سلام
برای اینکه برنامه از حالت سادگیش خارج بشه ، قبل از اینکه عدد انتخاب شده تاس رو نشون بده یک بار بصورت رندوم همه اعداد تاس رو نشون میده که حالت چرخیدن رو بهش بده و عملکرد برنامه رو زیباتر کنه
کدش رو اینجا براتون گذاشتم:
package com.ktLearn.diceRoll
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.widget.Button
import android.widget.ImageView
class MainActivity : AppCompatActivity() {
private val dice = Dice(6)
private lateinit var ivDive: ImageView
private lateinit var btnRoll: Button
private val rollImageIds = arrayOf(
R.drawable.dice_1,
R.drawable.dice_2,
R.drawable.dice_3,
R.drawable.dice_4,
R.drawable.dice_5,
R.drawable.dice_6
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnRoll = findViewById(R.id.activity_main_roll_btn)
ivDive = findViewById(R.id.activity_main_iv_dice)
rollDice()
btnRoll.setOnClickListener {
createAnimation()
}
}
private fun rollDice() {
val rolledDice = dice.roll()
when (rolledDice) {
6 -> ivDive.setImageResource(R.drawable.dice_6)
5 -> ivDive.setImageResource(R.drawable.dice_5)
4 -> ivDive.setImageResource(R.drawable.dice_4)
3 -> ivDive.setImageResource(R.drawable.dice_3)
2 -> ivDive.setImageResource(R.drawable.dice_2)
1 -> ivDive.setImageResource(R.drawable.dice_1)
}
}
private fun createAnimation() {
val handler = Handler(Looper.getMainLooper())
var count = 0
val runnable = object : Runnable {
override fun run() {
var imageIndex = (0 until rollImageIds.size).random()
ivDive.setImageResource(rollImageIds[imageIndex])
count++
if (count < 6) {
handler.postDelayed(this, 100)
} else {
rollDice()
}
}
}
handler.postDelayed(runnable, 100)
}
}