Я создаю простую игру в 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;
}
}