본문 바로가기

IT, 인터넷/JAVA, 스프링부트

자바 좌표값을 랜덤으로 뽑아서 오브젝트 충돌이 되는지 확인

반응형

공통 클래스와 오브젝트 클래스 두개를 만들어서 충돌인지 아닌지를 판별해 주면 됩니다.

자바 파일은 RectGame.java 라는 파일을 만들겠습니다.

 

먼저 두개의 오브젝트의 랜덤하게 수를 만들어 줍니다.

a 오브젝트는 0 ~ 100, b 오브젝트는 0 ~ 200 으로 만들어 줍니다.

 

그리고 맵을 만들고 두개의 오브젝트에 좌표값을 주어서 생성을 해줍니다.

 

이제 만들어준 맵에 오브젝트를 맵안에 생성해 줍니다.

 

마지막으로 두 오브젝트가 좌표가 같다면 충돌이고 틀리다면 맵을 그려 주면 됩니다.

 

  • 소스코드

 

abstract class RectAObject {

    

    protected int xy;

    protected int pxpy;

    protected int sxsy

    

    public RectAObject(int startXint startY) { 

        this.x = px = startX; 

        this.y = py = startY;

    }

 

    protected abstract char getShape(); 

}

 

class RectA extends RectAObject {

    

    public RectA(int xint y) { 

        super(x, y); 

    } 

    

    public char getShape() { 

        return 'A'

    } 

}

 

class RectB extends RectAObject {

    

    public RectB(int xint 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 그리기

        }

    }

}

반응형