Как переключить положение двух кнопок случайным образом؟

#kotlin

#kotlin

Вопрос:

Я хочу переключать положения кнопок, когда мы нажимаем кнопку переключения. Кнопки перемещаются случайным образом. Я много пробовал, но безуспешно. Так что, если кто-нибудь знает, как, но случайным образом

    val btnOne = findViewById<View>(R.id.buttonOne) as Button
    val btnTwo = findViewById<View>(R.id.buttonTwo) as Button

    val posOneX = btnOne.x
    val posOneY = btnOne.y

    val posTwoX = btnTwo.x
    val posTwoY = btnTwo.y

    btnOne.x = posTwoX
    btnOne.y = posTwoY

    btnTwo.x = posOneX
    btnTwo.y = posOneY
 

Комментарии:

1. Что вы подразумеваете под случайным образом? Если есть два элемента, и вы точно переключаете их, это определяющее поведение без случайности. В любом случае, вам придется работать с ViewGroup (группами), которые содержат представления, чтобы иметь возможность работать с их позициями относительно друг друга.

2. Вы могли бы использовать Random.nextBoolean() в качестве if условия, чтобы решить, делать ли обмен вообще, если это то, что вы имеете в виду

Ответ №1:

Да, я нашел решение

  b4.setOnClickListener {
     


            var arswap = arrayListOf<Button>(b1, b2, b3);
            var randomPos: Int = 0;


            fun swap(b1: Button, b2: Button) {
                var tempPosition = Point(b1.x.toInt(), b1.y.toInt())
                b1.x = b2.x;
                b1.y = b2.y;

                b2.x = tempPosition.x.toFloat();
                b2.y = tempPosition.y.toFloat();
            }

            var totalItems: Int = 3; // total number of items

            for (i in 0..totalItems/3 ) {

                randomPos = ((Math.random() * arswap.size).toInt());
                var randomItem =  ((Math.random() * ((totalItems / 2) - 1))   ((totalItems / 2)   1));


                swap(arswap[randomPos], arswap[randomItem.toInt()])
            }
       

    }