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();
}
}
}
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андроид,