Итерируйте по ImageViews и устанавливайте случайное рисование и видимость - PullRequest
0 голосов
/ 01 декабря 2018

Я делаю небольшую игру, и у меня возникают проблемы с переборами в ImageViews.

У меня есть 12 ImageViews, которые не должны отображать случайным образом ни яблока, ни зеленого, ни красного яблока.

Как я могу перебирать ImageViews и устанавливать видимость и возможность рисования?Приложение вылетает: «Приложение остановлено»

    void shuffleApples() {

    ImageView[] apples = new ImageView[12];
    apples[0] = img_apple1;
    apples[1] = img_apple2;
    apples[2] = img_apple3;
    apples[3] = img_apple4;
    apples[4] = img_apple5;
    apples[5] = img_apple6;
    apples[6] = img_apple7;
    apples[7] = img_apple8;
    apples[8] = img_apple9;
    apples[9] = img_apple10;
    apples[10] = img_apple11;
    apples[11] = img_apple12;

    for(int i = 0; i < apples.length; i++) {
        Random randomAppleVisibility = new Random();
        Random randomAppleColor = new Random();
        int appleVisibility = randomAppleVisibility.nextInt(0);
        int appleColor = randomAppleColor.nextInt(0);

        if(appleVisibility==0) {
            apples[i].setVisibility(View.GONE);
        }
        else {
            if(appleColor==0) {
                apples[i].setImageResource(R.drawable.apple_red);
                redApples++;
            }
            else {
                apples[i].setImageResource(R.drawable.apple_green);
                greenApples++;
            }
        }
    }
}

спасибо за помощь!

1 Ответ

0 голосов
/ 01 декабря 2018

Если вы хотите получить случайное целое значение 0 или 1, сделайте это:

int appleVisibility = randomAppleVisibility.nextInt(2);
int appleColor = randomAppleColor.nextInt(2);

Это

nextInt(0) 

выдает java.lang.IllegalArgumentException, поскольку аргументдолжно быть положительным числом.About nextInt():

Возвращает псевдослучайное, равномерно распределенное значение типа int между 0 (включительно) и указанным значением (исключая)

Вы должны рассмотреть возможность размещения этих строк:

Random randomAppleVisibility = new Random();
Random randomAppleColor = new Random();

до цикла for.

...