Помогите кто может или нарушения функционирования алгоритма в JAVA
помогите пожалуйста, в общем, пытаюсь вывести числовые выражения из массива, но не получается. По клику на верхний блок числовые выражения по новой не генерируются, причём в обеих блоках. Также общей проблемой является то, что картинки правильных/неправильных ответов после того как отпустил палец с экрана не пропадают. Где я совершил ошибку?
package apps.emelianov.a75;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.Random;
public class Level1 extends AppCompatActivity {
public int num1;
public String num2;
public int num3;
public int num4;
public String num5;
public int num6;
Array array = new Array(); //Создали новый объект из класса Array (OK)
Random random = new Random(); //Для генерации случайных чисел (OK)
public int count = 0; //Счётчик правильных ответов
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.universal1);
//Развернуть игру на весь экран - начало
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
//Развернуть игру на весь экран - конец
//Кнопка назад - начало
Button button_back_level1 = (Button)findViewById(R.id.button_back_level1);
button_back_level1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
Intent intent = new Intent(Level1.this, GameLevels.class);
startActivity(intent);
finish();
} catch (Exception e) {
}
}
});
//Кнопка назад - конец
//Массив для прогресса игры - начало
final int[] progress = {
R.id.point1, R.id.point2, R.id.point3, R.id.point4, R.id.point5, R.id.point6, R.id.point7,
R.id.point8, R.id.point9, R.id.point10, R.id.point11, R.id.point12, R.id.point13, R.id.point14, R.id.point15,
R.id.point16, R.id.point17, R.id.point18, R.id.point19, R.id.point20,
};
//Массив для прогресса игры - конец
//Подключаем анимацию - начало
final Animation a = AnimationUtils.loadAnimation(Level1.this, R.anim.alpha);
//Подключаем анимаию - конец
num1 = random.nextInt(10);
num2 = getString(R.string.plus);
num3 = random.nextInt(10);
num4 = random.nextInt(10);
num5 = getString(R.string.plus);
num6 = random.nextInt(10);
while(num1 == num4 ) {
num1 = random.nextInt(10);
num4 = random.nextInt(10);
}
//Цикл с предусловием проверяющий равенство чисел - конец
//Цикл с предусловием, проверяющий равенство чисел - начало
while(num3 == num6 ) {
num3 = random.nextInt(10);
num6 = random.nextInt(10);
}
//Цикл с предусловием проверяющий равенство чисел - конец
//Цикл с предусловием, проверяющий равенство чисел - начало
final TextView numericUp = (TextView)findViewById(R.id.numericUp);
final TextView numericLow = (TextView)findViewById(R.id.numericLow);
//Обрабатываем нажатие на верхний блок - начало
final ImageView img_high = findViewById(R.id.img_high);
final ImageView img_low = findViewById(R.id.img_low);
numericUp.setText("" + num1 + num2 + num3); //Достаём из массива числовое выражение
img_high.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
//Условие касания картинки - начало
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//Если коснулся картинки - начало
img_low.setEnabled(false);//блокируем нижний блок
if (num1 > num4 & num3 > num6) {
img_high.setImageResource(R.drawable.yes);
} else {
img_high.setImageResource(R.drawable.wrong);
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
//Если отпустил палец - начало
if (num1 + num4 > num3 + num6) {
//Если верхняя картинка меньше
if (count < 20) {
count = count + 1;
}
//Закрашиваем прогресс серым цветом - начало
for (int i = 0; i < 20; i++) {
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.style_points);
}
//Закрашиваем прогресс серым цветом - конец
//Закрашиваем прогресс зеленым цветом - начало
for (int i = 0; i < count; i++) {
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.sryle_points_completed);
}
//Закрашиваем прогресс зеленым цветом - конец
} else {
//Если верхняя картинка меньше
if (count < 3) {
count=0;
} else {
count = count - 2;
}
}
}
//Закрашиваем прогресс серым цветом - начало
for (int i = 0; i < 19; i++) {
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.style_points);
}
//Закрашиваем прогресс серым цветом - конец
//Закрашиваем прогресс зеленым цветом - начало
for (int i = 0; i < count; i++) {
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.sryle_points_completed);
}
//Закрашиваем прогресс зеленым цветом - конец
//Если отпустил палец - конец
if (count == 20) {//Выход из уровня!!!!!!!!!!!!!!!!!!!!!!!!!!
} else {
//Генерируем выражения далее
num1 = random.nextInt(10);
num3 = random.nextInt(10);
img_high.startAnimation(a);
num4 = random.nextInt(10);
num6 = random.nextInt(10);
img_low.startAnimation(a);
img_low.setEnabled(true); //Включаем обратно правую картинку
}
return false;
}
//Условие касания картинки - конец
});
//Обрабатываем нажатие на верхний блок - конец
numericLow.setText("" + num4 + num5 + num6); //Достаём из массива числовое выражение
//Обрабатываем нажатие на НИЖНИЙ блок - начало
img_low.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
//Условие касания картинки - начало
if (event.getAction()==MotionEvent.ACTION_DOWN){
//Если коснулся картинки - начало
img_high.setEnabled(false);//блокируем верхний блок
if(num1<num4 & num3<num6) {
img_low.setImageResource(R.drawable.yes);
} else {
img_low.setImageResource(R.drawable.wrong);
}
}
else if(event.getAction()==MotionEvent.ACTION_UP) {
//Если отпстил палец - начало
if(num1<num4 & num3<num6) {
if(count<20) {
count=count+1;
}
//Закрашиваем прогресс серым цветом - начало
for (int i=0; i<20; i++) {
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.style_points);
}
//Закрашиваем прогресс серым цветом - конец
//Закрашиваем прогресс зеленым цветом - начало
for(int i=0; i<count; i++) {
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.sryle_points_completed);
}
//Закрашиваем прогресс зеленым цветом - конец
}else{
//Если нижняя картинка меньше
if(count<3) {
count=0;
}else{
count=count-2;
}
}
//Закрашиваем прогресс серым цветом - начало
for (int i=0; i<19; i++) {
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.style_points);
}
//Закрашиваем прогресс серым цветом - конец
//Закрашиваем прогресс зеленым цветом - начало
for(int i=0; i<count; i++) {
TextView tv = findViewById(progress[i]);
tv.setBackgroundResource(R.drawable.sryle_points_completed);
}
//Закрашиваем прогресс зеленым цветом - конец
}
//Если отпустил палец - конец
if(count==20) {
//Выход из уровня!!!!!!!!!!!!!!!!!!!!!!!!!!
}else{
//Генерируем выражения далее
num1 = random.nextInt(10);
num3 = random.nextInt(10);
num4 = random.nextInt(10);
num6 = random.nextInt(10);
numericUp.setText("" + num1 + num2 + num3); //Достаём из массива числовое выражение
numericLow.setText("" + num4 + num5 + num6); //Достаём из массива числовое выражение
img_high.startAnimation(a);
img_low.startAnimation(a);
img_high.setEnabled(true); //Включаем обратно правую картинку
}
//Условие касания картинки - конец
return true;
}
});
//Обрабатываем нажатие на НИЖНИЙ блок - конец
