Как сравнить два следующих случайных значения из массива (Java) - PullRequest
0 голосов
/ 02 ноября 2019

Я создаю простую игру в Android Studio. Я хочу, чтобы в центре экрана появлялись 5 разных изображений, каждый раз только одно из них. Есть две кнопки «Да» и «Нет». Когда следующее изображение совпадает с предыдущим, нажмите «ДА», если не «НЕТ», и после того, как одна из кнопок нажата, изображение изменится.

Проблемы: 1. Я не знаю, как сравнивать случайные значения из изображений массива [] и следующего. 2. Во время тестирования я обнаружил, что изображения всегда разные. У метода getRandom () нет возможности получить тот же индекс из массива. Вероятно, есть проблема с этим методом.

За любую помощь, большое спасибо:)

Вот код:

GeomemotryActivity

package com.pracainzynierska.inzynierka;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;

public class GeomemotryActivity extends AppCompatActivity {

    private Button yes_btn, no_btn;
    private ImageView shape;
    private TextView points;

    Integer[] images = {R.drawable.circle,R.drawable.square,R.drawable.star,R.drawable.star6, R.drawable.triangle};
    Random rand = new Random();
    int star6, circle, square, star, triangle, player_points = 0;
    int img, img_prev;

    Integer[] shapesArray = {0,1,2,3,4};

    //int firstShape, secondShape;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_geomemotry);
        shape = findViewById(R.id.shape);



        yes_btn = findViewById(R.id.yes_btn);
        no_btn = findViewById(R.id.no_btn);
        points = findViewById(R.id.points);

        points.setTextColor(Color.RED);

        //this line sets random image in the beginning
        shape.setImageResource(images[rand.nextInt(images.length)]);

        getShape(); //load shape images


        //there's a problem
        yes_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showShape(shape, getRandom(shapesArray));
                compareShape(img,img_prev);
            }
        });

        no_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showShape(shape, getRandom(shapesArray));
                compareShape(img,img_prev);
            }
        });

    }


    //there's a problem
   private void compareShape(int rnd, int rnd_next)
   {
       rnd = new Random().nextInt(images.length);
       rnd_next = new Random().nextInt(images.length);
       if (rnd_next == rnd)
       {
           player_points+=10;
           points.setText("Points: " + player_points);
       }
       else
       {
           points.setText("Points: " + player_points);
       }
   }

   //probably something's wrong there as well
    private void showShape(ImageView iv, int choice)
    {
        if (shapesArray[choice]==0)
        {
            iv.setImageResource(circle);
        }
        else if (shapesArray[choice]==1)
        {
            iv.setImageResource(square);
        }
        else if (shapesArray[choice]==2)
        {
            iv.setImageResource(star);
        }
        else if (shapesArray[choice]==3)
        {
            iv.setImageResource(star6);
        }
        else if (shapesArray[choice]==4)
        {
            iv.setImageResource(triangle);
        }
    }

    public static int getRandom(Integer[] array) {
        int ch = new Random().nextInt(array.length);
        return array[ch];
    }



    private void getShape()
    {
        star6 = R.drawable.star6;
        circle = R.drawable.circle;
        square = R.drawable.square;
        star = R.drawable.star;
        triangle = R.drawable.triangle;

    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...