들어가기 전에...

아래 페이지를 먼저 보시는 것이 빠른 이해에 도움이 됩니다.

https://ondolroom.tistory.com/288

 

자바 스윙 더블점프 구현하기 (프로젝트 대비)

들어가기 전에... 아래 페이지를 먼저 읽는 것이 빠른 이해에 도움이 됩니다. https://ondolroom.tistory.com/287 자바 스윙 이미지 점프 + 낙하 하게 만들기 (프로젝트 대비) 스윙에 이미지를 하나 올리자 낙하가..

ondolroom.tistory.com

 

발판 클래스 생성

발판 정보를 담는 Foot클래스를 생성하였다.

이미지, x, y, 넓이, 높이 등을 저장한다.

(@data 등은 lombok을 이용하여 게터 세터 생성자를 만드는 것이다. 모른다면 인터넷 검색.)

 

변수와 메서드 추가

발판 위치를 담는 fieldStr

발판객체를 저장하는 fieldList

캐릭터 아래에 발판이 있는지 확인하는 count

캐릭터 높이에 따른 발판 위치 조정 변수 nowField

 

패널 생성자에 발판 추가

fieldStr의 길이만큼 반복하여

미리 만들어둔 getGround 메서드를 이용해 1일 경우에만 발판을 추가한다.

 

int tempX = i * landimg.getWidth(null); 를 if문안에 넣지 않은 것은 빈칸을 만들기 위해서이다.

 

 

발판 그리기

paintComponent에서 리스트에 추가한 발판들을 모두 그린다.

(temp들은 보기쉽도록 만들어 둔것이고 g.drawImage에 바로 적어도 된다.)

 

 

새로 추가한 쓰레드들

현재 모두 제작한 것이 아니라 한쓰레드에 다 넣으면 정리가 안될 것 같아서 쓰레드를 쪼개서 만들어 놓았다.

(추후 정리예정)

전용 쓰레드들은 패널 클래스 안에 넣는다.

repaint만 전담하는 쓰레드이다.

 

발판을 왼쪽으로 이동시키는 쓰레드이다.

발판이동 반복문 , 캐릭터 아래에 발판이 있는지 확인하는 반복문으로 구성되어 있다.

 

count가 0이면 발판이 없는 상태로

발판이 있지만 캐릭터가 발판 아래에 있다면 발판이 없는 상태로

발판이 있고 캐릭터가 발판 위에 있다면 발판을 지정해준다.

 

낙하 스레드이다.

field로 되어 있던 것들을 nowField로 모두 변경하였다.

 

그리고 낙하량 보정방법도 변경하였다.

 

결과

 

 

ps 점프와 낙하에 이미지 변경 코드를 넣으면 아래와 같이 가능

(주의 : 이미지를 변경하면 이미지의높이가 달라질 수 있기 때문에 사이즈가 같은 이미지를 쓰거나 높이고정이 필요함)

+ Recent posts