Notice: Constant DISALLOW_FILE_EDIT already defined in /home/nouriin/public_html/wp-config.php on line 107
آموزش شبیه سازی پرتاب کردن تاس در اندروید | محمد نوری | برنامه نویس و مدرس اندروید

آموزش شبیه سازی پرتاب کردن تاس در اندروید

dice-roll-effect-android
اندروید

آموزش شبیه سازی پرتاب کردن تاس در اندروید

احتمالا تا حالا توی بازی‌ها از تاس استفاده کردی.

یه وسیله‌ای که از 1 تا 6 عدد داره و هرسری که پرتاب می‌کنید یک عدد رو به صورت تصادفی بهتون نشون میده.

توی این پست میخوام بهت یاد بدم که چطور همچین چیزی رو درست کنی.

یعنی یه تاس داشته باشی که با هرپرتاب از 1 تا 6 یه عددی رو به صورت تصادفی بهت نشون بده.

درست مثل دمو زیر : 

dice-roll-effect-android
نتیجه نهایی

همونطور که توی عکس بالا مشخصه، هربار که روی دکمه “بچرخون” که میزنم تاس شروع به چرخیدن میکنه و یک عددی رو نشونم میده.

پیاده سازی پرتاب تاس

برای درست کردن این حالت نیازی به هیچ کتابخونه ای نیست!

پیاده سازی این حرکت، فوق‌العاده راحته.

با این چند خط کد، همیشه توی جیبت یه تاس داری و هیچ موقع کم نمیاری😁

خب بریم دیگه سراغ پیاده سازی.

کدهای استفاده شده

کدهای مربوط به فایل انیمیشن rotate.xml

اول از همه باید پوشه anim رو به res اضافه کنی.

برای اینکار روی پوشه res کلیک راست کن، New رو انتخاب کن و سپس Android Resource Directory رو انتخاب کن.

پنجره‌ای شبیه به پنجره زیر باز میشه :

dice-roll-effect-android
پنجره باز شده

توی بخش Resource type گزینه anim رو انتخب کن.

Directory name هم کاری نداشته باش و بزار anim باقی بمونه.

بعد از اینکه پوشه anim اضافه شد، یه فایل xml با نام rotate یا هر نام دیگه‌ای درست کن و کدهای زیر رو داخلش قرار بده

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:fromDegrees="0"
        android:toDegrees="720"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="500"/>
</set>

کدهای فایل activity_layout.xml : 

کدهای زیر رو میتونی توی فایل xml مروبط به صفحه‌ت (اکتیویتی یا فرگمنت) اضافه کنی.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/bgLight"
    tools:context=".dice_game.DiceGamePage">

    <ImageView
        android:id="@+id/diceGame_img"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:contentDescription="@string/app_name"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.button.MaterialButton
        android:id="@+id/diceGame_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:fontFamily="@font/iran_sans"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        android:text="بچرخون"
        android:textSize="16sp"
        android:textColor="@color/aquaBlue"
        android:shadowColor="@color/gray"
        android:shadowDx="1"
        android:shadowDy="1"
        android:shadowRadius="1"
        app:backgroundTint="@color/yellow"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/diceGame_img" />

</androidx.constraintlayout.widget.ConstraintLayout>

توی این طرح من فقط از ImageView و MaterialButton استفاده کردم.

کدهای فایل activity.kt : 

برای کدهای مربوط به اکتیویتی یا فرگمنت هم میتونی از کدهای زیر استفاده کنی.

class DiceGamePage : AppCompatActivity() {

    private val random = Random()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_dice_game_page)

        diceGame_btn.setOnClickListener { diceAction() }
    }

    private fun diceAction() {
        val random = random.nextInt(5) + 1
        val anim = AnimationUtils.loadAnimation(this, R.anim.rotate)
        diceGame_img.startAnimation(anim)

        when (random) {
            1 -> diceGame_img.setImageResource(R.drawable.dice1)
            2 -> diceGame_img.setImageResource(R.drawable.dice2)
            3 -> diceGame_img.setImageResource(R.drawable.dice3)
            4 -> diceGame_img.setImageResource(R.drawable.dice4)
            5 -> diceGame_img.setImageResource(R.drawable.dice5)
            6 -> diceGame_img.setImageResource(R.drawable.dice6)
        }
    }
}

خب دیگه کار تمومه.

چرا Random رو تا عدد 5 در نظر گرفتم؟

وقتی میخوایم عدد تصادفی بسازیم طبیعتا 0 هم شاملش میشه.

ولی ما توی تاس عدد 0 نداریم.

برای همین میایم عدد تصادفی رو تا 5 درنظر میگیریم و بعد +1 میکنیم که هم عدد 0 نشون داده نشه هم اینکه بتونه 6 رو هم پوشش بده.

 

دانلود تصاویر مربوط به تاس

دانلود تصاویر تاس

دیدگاه خود را اینجا قرار دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فیلدهای نمایش داده شده را انتخاب کنید. دیگران مخفی خواهند شد. برای تنظیم مجدد سفارش ، بکشید و رها کنید.
  • عکس
  • شناسه محصول
  • امتیاز
  • قیمت
  • در انبار
  • موجودی
  • افزودن به سبد خرید
  • توضیحات
  • محتوا
  • عرض
  • اندازه
  • تنظیمات بیشتر
  • ویژگی ها
  • Custom attributes
  • زمینه های دلخواه
مقایسه
لیست علاقه مندی ها 0