Нас 5 игроков. Поэтому, когда я запускаю приложение, каждый игрок должен получить 3 цвета. Однако ни один цвет не может быть применен более одного раза.
Так, например:
- Игрок 1: красный / зеленый / синий
- Игрок 2: зеленый/черный/белый
- Игрок 3: синий/белый/черный
- Игрок 4: белый/красный/зеленый
- Игрок 5: черный/синий/красный
(Извините за плохой код... Я в этом новичок.)
package com.example.array_abgleich_test;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class MainActivity extends AppCompatActivity {
TextView pos, enemy1, enemy2;
Button reset;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
pos = findViewById(R.id.pos);
enemy1 = findViewById(R.id.enemy1);
enemy2 = findViewById(R.id.enemy2);
reset = findViewById(R.id.reset);
reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (position[0].equals(enemy_1[0])) {
shuffleenemy_1();
}
showrandompos();
showrandomenemy1();
showrandomenemy2();
}
});
}
//--------------------------------------ARRAYS------------------------------------------------------
String[] position = {"white", "green", "blue", "red", "black"};
String[] enemy_1 = {"white", "green", "blue", "red", "black"};
String[] enemy_2 = {"white", "green", "blue", "red", "black"};
//--------------------------------------METHOD------------------------------------------------------
public void shuffleposition() {
Collections.shuffle(Arrays.asList(position));
}
public void shuffleenemy_1() {
Collections.shuffle((Arrays.asList(enemy_1)));
}
public void shuffleenemy_2(){
Collections.shuffle((Arrays.asList(enemy_2)));
}
public void showrandompos () {
shuffleposition();
pos.setText(position[0]);
pos.setText(position[1]);
pos.setText(position[2]);
pos.setText(position[3]);
pos.setText(position[4]);
}
public void showrandomenemy1 (){
shuffleenemy_1();
enemy1.setText(enemy_1[0]);
enemy1.setText(enemy_1[1]);
enemy1.setText(enemy_1[2]);
enemy1.setText(enemy_1[3]);
enemy1.setText(enemy_1[4]);
}
public void showrandomenemy2 (){
shuffleenemy_2();
enemy2.setText(enemy_2[0]);
enemy2.setText(enemy_2[1]);
enemy2.setText(enemy_2[2]);
enemy2.setText(enemy_2[3]);
enemy2.setText(enemy_2[4]);
}
}
Из другого поста я получил методы «shuffle & showrandompos», поэтому реализовал их и попытался, нажав кнопку, проверить, совпадают ли первые позиции массива. Если да --> перетасовать.
Однако это не работает. Программа работает без ошибок, но например при первом отрисовке цвета у меня получается "красный, красный, синий" вместо "красный, зеленый, белый".
Мне удалось написать рабочий код в IntelliJ IDEA, но мне не удается перенести этот код в Android Studio.
reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (position[0].equals(enemy_1[0])) {
shuffleenemy_1();
}
showrandompos();
showrandomenemy1();
showrandomenemy2();
}
});
Подробнее здесь: https://stackoverflow.com/questions/785 ... same-value
Мобильная версия