겔러그 형태의 슈팅게임 소스 중에 일부입니다~
충돌 판정 class 구요~
적기를 맞추면 화면에서 아이템이 떨어지고, 떨어지는 1~8번의 아이템을 아군 비행기가 먹으면 아래의 case 1~8 을 보이게 됩니다.
8번 이외의 아이템을 먹으면 아군기가 폭발하게 defult로 나머지 처리를 했습니다~
제가 궁금한 것은
1~8번까지의 아이템을 먹지 않고 그냥 지나쳐 버려 화면에서 아이템이 사라지면 아군 비행기가 폭발 하게 하고 싶은데요~
아무리 해봐도 에러가 나네요...ㅜㅠ
어떻게 해야 할까요??ㅜㅠ 도와주십쇼~~
private void Check_4() {
int x, y, x1, y1, w, h, bonus = 0;
x = MyGameView.mShip.x; // 아군기 좌표
y = MyGameView.mShip.y;
w = MyGameView.mShip.w;
h = MyGameView.mShip.h;
for (int i = MyGameView.mBonus.size() - 1; i >= 0; i--) {
x1 = MyGameView.mBonus.get(i).x; // 보너스 좌표
y1 = MyGameView.mBonus.get(i).y;
if (Math.abs(x - x1) > w * 2 || Math.abs(y - y1) > h * 2) // 충돌 없음
continue;
bonus = MyGameView.mBonus.get(i).kind; // 보너스 종류
MyGameView.mBonus.remove(i); // 보너스 제거
switch (bonus) {
case 1:
MyGameView.isDouble = true; // Double Fire 모드
break;
case 2:
if (MyGameView.gunDelay > 6)
MyGameView.gunDelay -= 2; // 미사일 발사 속도
break;
case 3:
MyGameView.mShip.undeadCnt = 300; // 무적 모드로 변신
MyGameView.mShip.undead = true;
break;
case 4:
MyGameView.score += (6 - i) * 300; // 300점 획득
break;
case 5:
MyGameView.score += (6 - i) * 300; // 300점 획득
break;
case 6:
MyGameView.score += (6 - i) * 100; // 100점 획득
break;
case 7:
MyGameView.score += (6 - i) * 400; // 400점 획득
break;
case 8:
MyGameView.score += (6 - i) * 400; // 400점 획득
break;
default:
MyGameView.mShip.isDead = true; // 아군기를 잃음
MyGameView.mExp.add(new Explosion(x, y, Explosion.MYSHIP));
MyGameView.shipCnt--;
break;
}
} // for
}
무슨 에러가 나는지 알아야