유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다.
IDE : IntelliJ
언어 : Java 8
스프링부트 버전 : 2.7.13
DB : MySQL
빌드관리 도구 : Maven
OS : iOS
참고유튜브 : 메타코딩
버블들을 캐릭터가 쏘았을 때 벽을 감지해서 충돌한다면 멈추고 바로 위로 올라가도록 진행 해보자
backgroundPlayerService를 복사해서 backgroundBubbleService를 생성
불필요한 부분들은 제외하고 아래와 같이 코드를 남겨주면 된다.
public class BackgroundBubbleService {
private BufferedImage image;
private Bubble bubble;
public BackgroundBubbleService(Bubble bubble) {
this.bubble = bubble;
try {
image = ImageIO.read(new File("image/backgroundMapService.png"));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public boolean leftWall() {
return false;
}
public boolean rightWall() {
return false;
}
public boolean upWall(){
return false;
}
}
해당 클래스를 bubble 클래스에 컴포지션해서 사용할 준비를 해준다.
initObject에 backgroundBubbleService를 new 연산자를 통해서 선언을 해서 메모리에 띄워준다..
다시 backgroundBubbleService로 이동해서 버블의 기준점(x-10, y+25)을 잡아서 해당 기준점이 빨간색과 마주친다면
true를 리턴해주고 그외의 상황에선 false를 리턴해준다.
public boolean leftWall() {
Color leftColor = new Color(image.getRGB(bubble.getX() - 10, bubble.getY() + 25));
if (leftColor.getRed() == 255 && leftColor.getGreen() == 0 && leftColor.getBlue() == 0) {
return true;
}
return false;
}
bubble 클래스로 이동해서 backgroudBubbleService에서 받은 값이 true라면 break로 더이상 진행하지 않고 up메서드로 진행해서 벽에 막힌상태로 위로 올라가게 된다.
@Override
public void left() {
left = true;
for (int i = 0; i < 400; i++) {
x--;
setLocation(x,y);
if (backgroundBubbleService.leftWall()){
break;
}
try {
Thread.sleep(1);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
up();
}
오른쪽도 같은 방법으로 진행해주면 된다.
public boolean rightWall() {
Color rightColor = new Color(image.getRGB(bubble.getX() + 50 + 15, bubble.getY() + 25));
if (rightColor.getRed() == 255 && rightColor.getGreen() == 0 && rightColor.getBlue() == 0) {
return true;
}
return false;
}
그 후 프로그램을 실행해보면 벽 가까이에서 버블을 쏴도 벽에 가로 막힌 뒤 바로 위로 올라가는걸 확인할 수 있다.
버블이 좌우 벽에 막혀서 더이상 벽을 통과하지 않지만 위쪽벽에 닿았을때 멈추게 하기 위해서 같은 방법으로 위쪽 벽도 감지해서 충돌 했을때 멈추게 만들자
backgroundBubbleService에서 upWall메서드를 작성해주고 bubble 클래스에서 up메서드에도 left/right 메서드에서 한 것 과 같은 방법으로 true를 받았을 때 break를 넣어주면 된다.
public boolean upWall(){
Color upColor = new Color(image.getRGB(bubble.getX() + 25, bubble.getY() - 10));
if (upColor.getRed() == 255 && upColor.getGreen() == 0 && upColor.getBlue() == 0) {
return true;
}
return false;
}
프로그램을 실행해보면 이제 버블들이 위쪽 벽을 뚫고 지나가지 않고 벽에 가로 막혀서 쌓이는걸 확인 할 수 있다.
'프로젝트 > 버블버블게임 만들기' 카테고리의 다른 글
[버블버블게임만들기] 11. 버블 발사하기(2) (0) | 2023.08.05 |
---|---|
[버블버블게임만들기] 10. 버블 발사하기(1) (0) | 2023.08.05 |
[버블버블게임만들기] 9. 버블 만들어주기 (0) | 2023.08.04 |
[버블버블게임만들기] 8. 발판이 없는 공간에서의 캐릭터 하강 (0) | 2023.08.04 |
[버블버블게임만들기] 7. 점프 후 캐릭터 발판에 착지 시키기 (0) | 2023.08.02 |
댓글