I'm in a process of making the TicTacToe app in Android Studio using java, and this is my first try at this. So the failure is the winning section, and I cannot find the error myself. When I choose 2 in a row and the computer randomly chooses the 3 square in the same row it finishes the game and the winner is the computer.
public class PlayGame extends AppCompatActivity {
int activePlayer = 0;
int[] gameState = {2, 2, 2, 2, 2, 2, 2, 2, 2};
int[][] winningPositions = {{0, 1, 2}, {3, 4, 5}, {6, 7 ,8}, {0, 3, 6}, {1, 4, 7}, {2, 5, 8}, {0, 4, 8}, {2, 4, 6}};
boolean gameActive = true;
ArrayList<String> emptySquares = new ArrayList<>();
public void computer(){
if (gameActive) {
int select = emptySquares.size();
int selected = new Random().nextInt(select);
String selectedSquare = emptySquares.get(selected);
switch (selectedSquare) {
case "0":
ImageView imageView1 = findViewById(R.id.imageView1);
imageView1.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
case "1":
ImageView imageView2 = findViewById(R.id.imageView2);
imageView2.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
case "2":
ImageView imageView3 = findViewById(R.id.imageView3);
imageView3.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
case "3":
ImageView imageView4 = findViewById(R.id.imageView4);
imageView4.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
case "4":
ImageView imageView5 = findViewById(R.id.imageView5);
imageView5.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
case "5":
ImageView imageView6 = findViewById(R.id.imageView6);
imageView6.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
case "6":
ImageView imageView7 = findViewById(R.id.imageView7);
imageView7.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
case "7":
ImageView imageView8 = findViewById(R.id.imageView8);
imageView8.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
case "8":
ImageView imageView9 = findViewById(R.id.imageView9);
imageView9.setImageResource(R.drawable.x);
activePlayer = 0;
emptySquares.remove(selectedSquare);
gameState[Integer.parseInt(selectedSquare)] = activePlayer;
break;
}
check();
}
}
public void dropIn(View view){
ImageView counter = (ImageView) view;
int tappedCounter = Integer.parseInt(counter.getTag().toString());
if (gameState[tappedCounter] == 2 && gameActive && emptySquares.contains(Integer.toString(tappedCounter))){
gameState[tappedCounter] = activePlayer;
counter.setTranslationY(-1500);
if (activePlayer == 0){
counter.setImageResource(R.drawable.o);
activePlayer = 1;
emptySquares.remove(Integer.toString(tappedCounter));
counter.animate().translationYBy(1).rotation(1).setDuration(300);
check();
computer();
}
}
}
public void check(){
for (int[] winningPosition : winningPositions){
if (gameState[winningPosition[0]] == gameState[winningPosition[1]] && gameState[winningPosition[1]] == gameState[winningPosition[2]] && gameState[winningPosition[0]] != 2){
gameActive = false;
String winner = "";
if (activePlayer == 1){
winner = "O";
}
else {
winner = "X";
}
TextView winnerTextView = findViewById(R.id.textView);
winnerTextView.setText("Winner : "+ winner);
winnerTextView.setVisibility(View.VISIBLE);
}
else {
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_game);
emptySquares.add("0");
emptySquares.add("1");
emptySquares.add("2");
emptySquares.add("3");
emptySquares.add("4");
emptySquares.add("5");
emptySquares.add("6");
emptySquares.add("7");
emptySquares.add("8");
}}