开发记忆游戏

时间:2018-06-23 15:10:21

标签: android

im试图在android studio中开发一款记忆游戏。该代码适用于两张卡,但是当我使用四张卡启动新级别时,我的应用程序停止。请帮忙。相同的代码适用于其中有两个图像视图和隐藏图片的两张卡。

该游戏是在不使用Android动画的情况下开发的。如果图像相同,则获取简单变量并检查图像是否相同,然后玩家点数增加,反之亦然。

公共类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();

    }
}


}

0 个答案:

没有答案