본문 바로가기

프로젝트/버블버블게임 만들기12

[버블버블게임만들기] 12. 버블을 벽에 감지하기 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 버블들을 캐릭터가 쏘았을 때 벽을 감지해서 충돌한다면 멈추고 바로 위로 올라가도록 진행 해보자 backgroundPlayerService를 복사해서 backgroundBubbleService를 생성 불필요한 부분들은 제외하고 아래와 같이 코드를 남겨주면 된다. public class BackgroundBubbleService { private BufferedImage image; private Bubble bubble; public Bac.. 2023. 8. 6.
[버블버블게임만들기] 11. 버블 발사하기(2) 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 지난 포스팅에서 버블의 위치를 잡아주는 작업을 했으니 이번엔 실제로 버블이 나가는 과정을 작성해보자 bubble 클래스에서 initThread 메서드를 추가해준다. 캐릭터의 방향이 왼쪽이라면 왼쪽으로 그외 상황이라면 오른쪽으로 버블이 이동하게 작성해준다. private void initThread(){ new Thread(()->{ if(player.getPlayerDirection() == PlayerDirection.LEFT){ lef.. 2023. 8. 5.
[버블버블게임만들기] 10. 버블 발사하기(1) 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 버블을 생성해주고 이제 그 버블이 발사가 되어야 하는데 캐릭터가 보는 방향에 따라서 방향이 결정되어야 한다. PlayerDirection이라는 이름의 enum 클래스를 생성해준다. 연관된 상수를 관리해주는 클래스로 캐릭터의 방향인 left와, right를 상수이므로 대문자로 작성해준다. player 클래스로 이동해서 playerDirection을 컴포지션해준다. InitSetting메서드로 가서 기본 방향은 캐릭터의 기본 방향인 오른쪽으로.. 2023. 8. 5.
[버블버블게임만들기] 9. 버블 만들어주기 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 캐릭터와 마찬가지로 이 게임에서 매우 중요한 버블을 만들어보자 Bubble 클래스를 생성 player 에 있는 변수들을 가지고와서 아래와 같이 살짝 수정해준다. // 위치 상태 private int x; private int y; // 움직임상태 private boolean left; private boolean right; private boolean up; // 적군을 맞춘 상태 private int state; // 0(물방울), 1.. 2023. 8. 4.
[버블버블게임만들기] 8. 발판이 없는 공간에서의 캐릭터 하강 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 캐릭터가 점프를 했을 때 발판에 올라가게 했지만, 발판이 없는 빈공간에도 그대로 있는 부분을 수정하고자 한다. player 클래스에 down 메서드에 조건문을 추가해서 캐릭터가 down 상태가 아닐때 해당 메서드가 동작하도록한다. 그러면 모든 상황에서 캐릭터가 down 상태가 아니므로 캐릭터가 계속 추락하게 될 것이다. backgroundPlayerService 클래스에서 조건을 추가해서 캐릭터가 up이 아닌상태에서 down 메서드가 동작.. 2023. 8. 4.
[버블버블게임만들기] 7. 점프 후 캐릭터 발판에 착지 시키기 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 캐릭터가 벽을 통과하지 못하게 했으니 이제 비슷한 방법으로 점프를 했을때 발판이 있다면 해당 부분에서 캐릭터의 좌표를 멈춰서 발판에 올라가게 만들어보자. 캐릭터가 위치한 부분을 알아보기 위해서 bottomColor 라는 변수 명으로 캐릭터가 위치한 x.y 좌표를 색상으로 알아보자 int bottomColor = image.getRGB(player.getX()+10, player.getY()+50+5); System.out.println(".. 2023. 8. 2.
[버블버블게임만들기] 6. 스레드로 벽 감지해서 충돌방지하기(2) 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 지난 글에서 캐릭터기준점이 각종 색상에 닿았을때 콘솔에 출력이 되게 작성했었다. 그중에서 붉은 색부분이 벽으로 캐릭터가 더이상 진입을 하면 안되는 구간이였다. 사용자들에게 해당 화면이 보이면 안되기 때문에 BubbleFrame에서는 맵을 기존 맵으로 변경해준다. 캐릭터에 추가적인 상태표현이 필요하다. 해당 캐릭터가 벽에 충돌한 상태인지 아닌지 확인 하기 위해서 player 클래스에서 leftWallCrash. rightWallCrash를 .. 2023. 8. 1.
[버블버블게임만들기] 5. 스레드로 벽 감지해서 충돌방지하기(1) 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 보통 게임을 하다보면 캐릭터가 모든곳을 이동하지 못하고 벽에 가로막혀서 이동할 수 없는 공간이 있다. 해당 프로젝트에서도 마찬가지로 캐릭터가 화면 밖으로 이동하지 못하게 벽을 감지해주는 기능을 작성하고자한다. BackgroundPlayerService 클래스를 생성 후 runnable 을 상속해준다. run메서드를 오버라이드 해준다. (mac : commend + o) BubbleFrame 클래스로 이동해서 initObject 메서드에 맵.. 2023. 8. 1.
[버블버블게임만들기] 4. 캐릭터 점프하기 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 캐릭터를 좌우로 움직이게 해봤으니 이제 점프를 하게 해보자 player 클래스에서 속도와 점프속도를 상수로 만들어준다. left/right에서 x좌표를 x=x-SPEED로 수정해준다. 이제 up을 수정해줄 건데 아래와 같이 수정해준다. boolean 인 up을 false 에서 true 로 값을 변경해주고 while 문이 아닌 for 문으로 점프 했을때 적정값을 찾아서 지정해주어야 하는데 이번 프로젝트에선 130을 기준으로 하고 130을 J.. 2023. 7. 31.
[버블버블게임만들기] 3. 스레드를 사용해서 캐릭터 좌우로 움직이게하기 유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다. IDE : IntelliJ 언어 : Java 8 스프링부트 버전 : 2.7.13 DB : MySQL 빌드관리 도구 : Maven OS : iOS 참고유튜브 : 메타코딩 기존 좌우로 이동하는 방법은 스레드 하나가 시작이 되고 움직인 후 종료되는 방법으로 상당히 비효율적인 방법이다. player에서 두가지 방법중 하나를 사용하면 되는데 runnable 을 사용하지 않고 람다식으로 진행해보자 @Override public void left() { System.out.println("left thread 생성"); new Thread(() ->{ setIcon(playerL); x = x - 10; setLoc.. 2023. 7. 31.