۰ سینا قربانی
جذاب‌تر کردن عملکردن برنامه
جامعه کاتلین ایجاد شده در ۱۳ خرداد ۱۴۰۲

سلام

برای اینکه برنامه از حالت سادگیش خارج بشه ، قبل از اینکه عدد انتخاب شده تاس رو نشون بده یک بار بصورت رندوم همه اعداد تاس رو نشون میده که حالت چرخیدن رو بهش بده و عملکرد برنامه رو زیباتر کنه

کدش رو اینجا براتون گذاشتم:

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)
    }
}