더보기

쿠키런 프로젝트 시리즈
1.준비
https://ondolroom.tistory.com/297
2.전역공간
https://ondolroom.tistory.com/298
3.JPanel생성자
https://ondolroom.tistory.com/299
4.mapMove메서드
https://ondolroom.tistory.com/300
5.hit메서드
https://ondolroom.tistory.com/301
6.fall메서드
https://ondolroom.tistory.com/302
7.jump메서드
https://ondolroom.tistory.com/303
8.paintComponent 및 결과
https://ondolroom.tistory.com/304

 

준비물

이미지 파일이다.

그림판으로 만든 테스트용 이미지임.

testimg.zip
0.01MB

 

아래는 기본 클래스 파일들이다. 더보기로 볼 수 있다.
생성자 및 게터 세터는 lombok 라이브러리를 이용하였다.(모르시는 분들은 인터넷 검색 )

더보기

배경

package Test4;

import java.awt.Image;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Back {
	private Image image;
	private int x;
	private int y;
	private int width;
	private int height;
}

 

쿠키

package Test4;

import java.awt.Image;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Cookie {
	
	private Image image; // 쿠키 이미지
	
	// 쿠키의 좌표와 넓이 높이
	private int x = 160;
	private int y = 0;
	private int width = 80;
	private int height = 120;
	
	// 쿠키의 투명도 (0이 투명, 255가 완전 불투명)
	private int alpha = 255;
	
	// 쿠키의 체력
	private int health = 1000;
	
	// 쿠키의 상태 (거대화와 가속화 미구현)
	private int big = 0; // 거대화 남은 시간
	private int fast = 0; // 가속화 남은 시간
	private int countJump = 0; // 점프 횟수
	private boolean invincible = false; // 무적 여부
	private boolean fall = false; // 낙하 여부
	private boolean jump = false; // 점프 여부
	
	public Cookie(Image image){ // 이미지만 넣어주자
		this.image = image;
	}
}

 

발판

package Test4;

import java.awt.Image;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Field {
	
	private Image image; // 발판 이미지
	
	// 발판의 좌표와 넓이 높이
	private int x;
	private int y;
	private int width;
	private int height;
}

 

젤리

package Test4;

import java.awt.Image;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Jelly {
	private Image image; // 젤리 이미지
	
	// 젤리들의 좌표와 크기
	private int x;
	private int y;
	private int width;
	private int height;
	
	// 젤리의 점수
	private int score;
}

 

장애물

package Test4;

import java.awt.Image;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Tacle {
	
	private Image image; // 장애물 이미지
	
	// 장애물의 좌표와 넓이 높이
	private int x;
	private int y;
	private int width;
	private int height;
	
	// 장애물 상태
	private int state;
}

 

유틸

package Test4;

import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.sql.Timestamp;
import java.time.LocalDateTime;

import javax.imageio.ImageIO;

public class Util {

	// 이미지의 사이즈 가져오기
	public static int[] getSize(String src) throws Exception {
		File imgf = new File(src);
		BufferedImage img = ImageIO.read(imgf);
		int width = img.getWidth();
		int height = img.getHeight();
		int[] tempSize = {width, height};
		return tempSize;
	}
	
	// 이미지의 픽셀값 가져오기
	public static int[][] getPic(String src) throws Exception{
		File imgf = new File(src);
		BufferedImage img = ImageIO.read(imgf);
		int width = img.getWidth();
		int height = img.getHeight();
		int[] pixels=new int[width*height];
		PixelGrabber grab = new PixelGrabber(img, 0, 0, width, height, pixels, 0,width);
		grab.grabPixels();
		
		int[][] picture=new int[width][height];
		for(int i=0;i<pixels.length;i++)
		      picture[i%width][i/width]=pixels[i] + 16777216;
		return picture;
	}
	
	// 현재시간 가져오기
	public static long getTime() {
		return Timestamp.valueOf(LocalDateTime.now()).getTime();
	}
	
	// substring으로 발판 정보 검색
	// 배열로 장판 및 젤리 배치 할 때 사용 (현재 미사용)
//	public static int getGround(String ground, int index) {
//		return Integer.parseInt(ground.substring(index, index + 1));
//	}
	
}

 

 

+ Recent posts