how to fix the error package com.example.test;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class MainActivity extends AppCompatActivity  {

    private int[] cardImages = {R.drawable.photo1, R.drawable.photo2, R.drawable.photo3, R.drawable.photo4};
    private ImageButton[] buttons; // Array to store buttons representing cards

    private int[] cardStates = new int[8];  // Array to store the state of each card (e.g., 1=face up, 2=face down, 3=matched)


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        buttons = new ImageButton[8];


        for (int i = 0; i < 8; i++) {
            buttons[i] = findViewById(getResources().getIdentifier("card" + (i + 1), "id", getPackageName()));
            cardStates[i] = 2;
        }
        assignCardImages();
    }

    private void assignCardImages() {
        List<Integer> buttonPositions = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7));
        Collections.shuffle(buttonPositions, new Random());

        // Assign the first 4 random photo resources to the buttons
        for (int i = 0; i < 8; i++) {
            final int index = i; // Store the index in a final variable for the click listener
            buttons[i].setImageResource(cardImages[i % 4]);
        }

        // Set click listeners for each ImageButton
        for (int i = 0; i < buttons.length; i++) {
            final int index = i; // Store the index in a final variable for the click listener
            buttons[i].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Update the photo when the button is clicked
                    buttons[index].setImageResource(getNextPhoto(cardImages[index]));
                }
            });
        }
    }

    private int getNextPhoto(int currentPhoto) {
        // Perform any logic required to determine the next photo based on the current photo
        // For example, you can use a switch statement or if-else conditions
        switch (currentPhoto) {
            case R.drawable.photo1:
                return R.drawable.photo2;
            case R.drawable.photo2:
                return R.drawable.photo3;
            case R.drawable.photo3:
                return R.drawable.photo4;
            case R.drawable.photo4:
                return R.drawable.photo1;
            default:
                return currentPhoto;
        }



    private View.OnClickListener cardClickListener = new View.OnClickListener() {



        @Override
        public void onClick(View v) {


            ImageButton selectedImageButton = (ImageButton) v;
            int selectedCardIndex = Arrays.asList(buttons).indexOf(selectedImageButton);

            if (cardStates[selectedCardIndex] == 2) {
                cardStates[selectedCardIndex] = 1;

                selectedImageButton.setImageResource(cardImages[selectedCardIndex]);

                if (isTwoCardsFaceUp()) {
                    int firstCardIndex = getFirstCardIndex();
                    int secondCardIndex = getSecondCardIndex();

                    if (cardImages[firstCardIndex] == cardImages[secondCardIndex]) {
                        cardStates[firstCardIndex] = 3;
                        cardStates[secondCardIndex] = 3;
                    } else {
                        cardStates[firstCardIndex] = 2;
                        cardStates[secondCardIndex] = 2;
                        buttons[firstCardIndex].setBackgroundResource(R.drawable.photo5);
                        buttons[secondCardIndex].setBackgroundResource(R.drawable.photo5);
                    }
                }
            }
        }
    };

    private boolean isTwoCardsFaceUp() {
        int count = 0;
        for (int state : cardStates) {
            if (state == 1) {
                count++;
            }
        }
        return count == 2;
    }

    private int getFirstCardIndex() {
        for (int i = 0; i < 8; i++) {
            if (cardStates[i] == 1) {
                return i;
            }
        }
        return -1;
    }

    private int getSecondCardIndex() {
        for (int i = 0; i < 8; i++) {
            if (cardStates[i] == 1 && i != getFirstCardIndex()) {
                return i;
            }
        }
        return -1;
    }

}