разработка игры с памятью

im пытается развить игру памяти в студии android. код работает для двух карт, но когда я запускаю новый уровень с четырьмя картами, мое приложение останавливается. пожалуйста помоги. тот же код работает для двух карт, где есть два изображения и скрытые изображения.

игра разработана без использования андроидной анимации. простые переменные берутся и проверяются для одних и тех же изображений, когда изображения одинаковы, а точки игрока увеличиваются и наоборот.

public class nextie расширяет AppCompatActivity {

ImageView imageView21;
ImageView imageView22;
ImageView imageView23;
ImageView imageView24;
int cardsArray[] = {101, 102,201,202};
int pts=0;


int cardnumber = 1;
int firstcard;
int secondcard;
int clickedfirst;
int clickedsecond;


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

    imageView21 = findViewById(R.id.im21);
    imageView21 = findViewById(R.id.im22);
    imageView23 = findViewById(R.id.im23);
    imageView24 = findViewById(R.id.im24);




    imageView21.setTag("0");
    imageView22.setTag("1");
    imageView23.setTag("2");
    imageView24.setTag("3");



    imageView21.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            int thecard = Integer.parseInt((String) view.getTag());

            CardFront2(imageView21, thecard);


        }
    });

    imageView22.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int thecard = Integer.parseInt((String) view.getTag());

            CardFront2(imageView22, thecard);


        }


    });


    imageView23.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int thecard = Integer.parseInt((String) view.getTag());

            CardFront2(imageView23, thecard);


        }


    });


    imageView24.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int thecard = Integer.parseInt((String) view.getTag());

            CardFront2(imageView24, thecard);


        }


    });


}


public void CardFront2(ImageView iv, int card) {

    if (cardsArray[card] == 101) {
        iv.setImageResource(R.drawable.ic_101);

    }


   else if (cardsArray[card] == 102) {
        iv.setImageResource(R.drawable.ic_103);


    }


   else if (cardsArray[card] == 201) {
        iv.setImageResource(R.drawable.ic_101);

    }


    else if (cardsArray[card] == 202)
    iv.setImageResource(R.drawable.ic_103);


    //to check which card is clicked first and second

    if (cardnumber == 1) {
        firstcard = cardsArray[card];


        if (firstcard > 200) {
            firstcard = firstcard - 100;

        }

        cardnumber = 2;
        clickedfirst = card;


    } else if (cardnumber == 2) {
        secondcard = cardsArray[card];

        if (secondcard > 200) {
            secondcard = secondcard - 100;

        }
        cardnumber = 1;
        clickedsecond = card;




     /*   imageView21.setEnabled(false);
        imageView22.setEnabled(false);
        imageView23.setEnabled(false);
        imageView24.setEnabled(false); */


        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                Calculate2(); //to check if the selected images are equal


            }
        }, 1000);





    }
}

public void Calculate2()
{
    if (firstcard == secondcard) {
        if (clickedfirst == 0) {
            imageView21.setVisibility(View.INVISIBLE);
        } else if (clickedfirst == 1) {
            imageView22.setVisibility(View.INVISIBLE);
        }
        else if (clickedfirst == 2) {
            imageView23.setVisibility(View.INVISIBLE);
        }
        else if (clickedfirst == 3) {
            imageView24.setVisibility(View.INVISIBLE);
        }

        if (clickedsecond == 0) {
            imageView21.setVisibility(View.INVISIBLE);
            pts = pts + 10;
        } else if (clickedsecond == 1) {
            imageView22.setVisibility(View.INVISIBLE);
            pts = pts + 10;
        }else if (clickedsecond == 2) {
            imageView23.setVisibility(View.INVISIBLE);
            pts = pts + 10;
        }else if (clickedsecond == 3) {
            imageView24.setVisibility(View.INVISIBLE);
            pts = pts + 10;
        }

    } else {

        imageView21.setImageResource(R.drawable.ques1);
        imageView22.setImageResource(R.drawable.ques1);
        imageView23.setImageResource(R.drawable.ques1);
        imageView24.setImageResource(R.drawable.ques1);
        pts = pts - 2;


    }

   /* imageView21.setEnabled(true);
    imageView22.setEnabled(true);
    imageView23.setEnabled(true);
    imageView24.setEnabled(true);*/


    checkEnd1();

}

public void checkEnd1()
{
    if (imageView21.getVisibility()==View.INVISIBLE && imageView22.getVisibility()==View.INVISIBLE &&
            imageView23.getVisibility()==View.INVISIBLE && imageView24.getVisibility()==View.INVISIBLE)
    {
        Toast.makeText(nextie.this,"LEVEL 2 over, your score is"+ pts,Toast.LENGTH_LONG).show();
    }

    else {

        Toast.makeText(nextie.this,"player points"+ pts,Toast.LENGTH_LONG).show();

    }
}


}

android,

0

Ответов: 0

разработка игры с памятью

im пытается развить игру памяти в студии android. код работает для двух карт, но когда я запускаю новый уровень с четырьмя картами, мое приложение останавливается. пожалуйста помоги. тот же код работает для двух карт, где есть два изображения и скрытые изображения.

игра разработана без использования андроидной анимации. простые переменные берутся и проверяются для одних и тех же изображений, когда изображения одинаковы, а точки игрока увеличиваются и наоборот.

public class nextie расширяет AppCompatActivity {

ImageView imageView21;
ImageView imageView22;
ImageView imageView23;
ImageView imageView24;
int cardsArray[] = {101, 102,201,202};
int pts=0;


int cardnumber = 1;
int firstcard;
int secondcard;
int clickedfirst;
int clickedsecond;


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

    imageView21 = findViewById(R.id.im21);
    imageView21 = findViewById(R.id.im22);
    imageView23 = findViewById(R.id.im23);
    imageView24 = findViewById(R.id.im24);




    imageView21.setTag("0");
    imageView22.setTag("1");
    imageView23.setTag("2");
    imageView24.setTag("3");



    imageView21.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            int thecard = Integer.parseInt((String) view.getTag());

            CardFront2(imageView21, thecard);


        }
    });

    imageView22.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int thecard = Integer.parseInt((String) view.getTag());

            CardFront2(imageView22, thecard);


        }


    });


    imageView23.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int thecard = Integer.parseInt((String) view.getTag());

            CardFront2(imageView23, thecard);


        }


    });


    imageView24.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int thecard = Integer.parseInt((String) view.getTag());

            CardFront2(imageView24, thecard);


        }


    });


}


public void CardFront2(ImageView iv, int card) {

    if (cardsArray[card] == 101) {
        iv.setImageResource(R.drawable.ic_101);

    }


   else if (cardsArray[card] == 102) {
        iv.setImageResource(R.drawable.ic_103);


    }


   else if (cardsArray[card] == 201) {
        iv.setImageResource(R.drawable.ic_101);

    }


    else if (cardsArray[card] == 202)
    iv.setImageResource(R.drawable.ic_103);


    //to check which card is clicked first and second

    if (cardnumber == 1) {
        firstcard = cardsArray[card];


        if (firstcard > 200) {
            firstcard = firstcard - 100;

        }

        cardnumber = 2;
        clickedfirst = card;


    } else if (cardnumber == 2) {
        secondcard = cardsArray[card];

        if (secondcard > 200) {
            secondcard = secondcard - 100;

        }
        cardnumber = 1;
        clickedsecond = card;




     /*   imageView21.setEnabled(false);
        imageView22.setEnabled(false);
        imageView23.setEnabled(false);
        imageView24.setEnabled(false); */


        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                Calculate2(); //to check if the selected images are equal


            }
        }, 1000);





    }
}

public void Calculate2()
{
    if (firstcard == secondcard) {
        if (clickedfirst == 0) {
            imageView21.setVisibility(View.INVISIBLE);
        } else if (clickedfirst == 1) {
            imageView22.setVisibility(View.INVISIBLE);
        }
        else if (clickedfirst == 2) {
            imageView23.setVisibility(View.INVISIBLE);
        }
        else if (clickedfirst == 3) {
            imageView24.setVisibility(View.INVISIBLE);
        }

        if (clickedsecond == 0) {
            imageView21.setVisibility(View.INVISIBLE);
            pts = pts + 10;
        } else if (clickedsecond == 1) {
            imageView22.setVisibility(View.INVISIBLE);
            pts = pts + 10;
        }else if (clickedsecond == 2) {
            imageView23.setVisibility(View.INVISIBLE);
            pts = pts + 10;
        }else if (clickedsecond == 3) {
            imageView24.setVisibility(View.INVISIBLE);
            pts = pts + 10;
        }

    } else {

        imageView21.setImageResource(R.drawable.ques1);
        imageView22.setImageResource(R.drawable.ques1);
        imageView23.setImageResource(R.drawable.ques1);
        imageView24.setImageResource(R.drawable.ques1);
        pts = pts - 2;


    }

   /* imageView21.setEnabled(true);
    imageView22.setEnabled(true);
    imageView23.setEnabled(true);
    imageView24.setEnabled(true);*/


    checkEnd1();

}

public void checkEnd1()
{
    if (imageView21.getVisibility()==View.INVISIBLE && imageView22.getVisibility()==View.INVISIBLE &&
            imageView23.getVisibility()==View.INVISIBLE && imageView24.getVisibility()==View.INVISIBLE)
    {
        Toast.makeText(nextie.this,"LEVEL 2 over, your score is"+ pts,Toast.LENGTH_LONG).show();
    }

    else {

        Toast.makeText(nextie.this,"player points"+ pts,Toast.LENGTH_LONG).show();

    }
}


}
00андроид,
Похожие вопросы