공통 클래스와 오브젝트 클래스 두개를 만들어서 충돌인지 아닌지를 판별해 주면 됩니다.
자바 파일은 RectGame.java 라는 파일을 만들겠습니다.
먼저 두개의 오브젝트의 랜덤하게 수를 만들어 줍니다.
a 오브젝트는 0 ~ 100, b 오브젝트는 0 ~ 200 으로 만들어 줍니다.
그리고 맵을 만들고 두개의 오브젝트에 좌표값을 주어서 생성을 해줍니다.
이제 만들어준 맵에 오브젝트를 맵안에 생성해 줍니다.
마지막으로 두 오브젝트가 좌표가 같다면 충돌이고 틀리다면 맵을 그려 주면 됩니다.
- 소스코드
abstract class RectAObject {
protected int x, y;
protected int px, py;
protected int sx, sy;
public RectAObject(int startX, int startY) {
this.x = px = startX;
this.y = py = startY;
}
protected abstract char getShape();
}
class RectA extends RectAObject {
public RectA(int x, int y) {
super(x, y);
}
public char getShape() {
return 'A';
}
}
class RectB extends RectAObject {
public RectB(int x, int y) {
super(x, y);
}
public char getShape() {
return 'B';
}
}
class RectMap {
private char map[][];
//맵 생성
public RectMap() {
map = new char[200][200];
for(int i = 0; i < 200; i++) {
for(int j = 0; j < 200; j++) {
map[i][j] = '*';
}
}
}
public void inputObject(RectAObject obj) {
map[obj.x][obj.y] = obj.getShape();
}
//전체 맵 그리기
public void showMap(RectAObject obj) {
for(int i = 0; i < 200; i++) {
for(int j = 0; j < 200; j++) {
System.out.print(map[i][j]);
}
System.out.println();
}
}
}
public class RectGame {
public static void main(String[] args) {
// x,y 난수값 생성
int amin = 0, amax = 100;
int a = (int) (Math.random() * (amax - amin + 1) + amin);
int bmin = 0, bmax = 200;
int b = (int) (Math.random() * (bmax - bmin + 1) + bmin);
RectMap RM = new RectMap();
RectA ra = new RectA(a, a); // recta 오브젝트의 좌표 설정
RectB rb = new RectB(b, b); // rectb 오브젝트의 좌표 설정
RM.inputObject(ra); // 100, 100 의 recta
RM.inputObject(rb); // 200, 200 의 rectb
if(a == b) {
System.out.println("a, b 가 충돌");
} else {
RM.showMap(ra); // map 그리기
}
}
}
'IT, 인터넷 > JAVA, 스프링부트' 카테고리의 다른 글
자바 프린터 출력 용지 구분 코드 작성 (0) | 2021.10.05 |
---|---|
자바 BufferedWriter, FileWriter, File를 이용해서 파일 생성 및 삭제하기 (0) | 2021.10.05 |
자바 피쉬 게임 만들기 (0) | 2021.09.30 |
java.lang.reflect.Array를 이용한 배열 생성 (0) | 2021.09.30 |
자바 과목의 점수로 합계, 평균, 등수 구하기 (0) | 2021.09.29 |