아하
생활

생활꿀팁

붉은안경곰9
붉은안경곰9

지금 자바로 해야 하는 과제가 하나 있는데

지금 자바로 해야 하는 과제가 하나 있는데

제가 해결하지 못하는 것이 뭐냐면

배열판 10*10을 가지고 Panel을 이용해서 노란공과 파란공을 무작위로 움직이는데

파란공이 노란공 동,서,남,북 중 하나에 붙으면 노란공이 움직이는 방향으로

따라 움직이게 하는 걸 해보려 하거든요.

근데 그걸 어떻게 코드상으로 해야 할 지 모르겠습니다.

파란공이 노란공에 붙는 순간 노란공이 움직이는 방향대로 파란공도 똑같이 움직이게 해야하는데

기존에 파란공이랑 노란공은 위치가 서로 달라서 배열 인덱스값이 아예 다른데

붙었을 때 어떻게 노란공이 변화하는 거에 따라 파란공도 똑같이 변화하는지 그게 궁금합니다.

예를 들어

노란공이 배열판[5][5]에 위치해 있고 파란공에 [5][6]에 있다 할 때, 옆에 붙은 상황이니까 노란공이 [5][5]에서 [4][5]가 되면 파란공은 [4][6] 이런식으로 움직이게 하려는데 이걸 어떻게 코딩을 짜야 할지 도무지 모르겠습니다.

55글자 더 채워주세요.
2개의 답변이 있어요!
  • 고귀한관수리45
    고귀한관수리45

    안녕하세요

    질문 하시는 것으로 보아 노란공의 배열값만 가져오면 끝나는 문제 같습니다.

    코딩을 어떻게 하셨는지 소스를 좀 보면 도움이 될거 같은데 단순 이렇게 글로만 보고 답변을 드리려고 하니

    좀 어렵네요;;

    파란색은 노란색을 붙어서 따라 가야한다.

    Q : 기존에 파란공이랑 노란공은 위치가 서로 달라서 배열 인덱스값이 아예 다른데

    붙었을 때 어떻게 노란공이 변화하는 거에 따라 파란공도 똑같이 변화하는지 그게 궁금합니다.

    A : X배열을 하나 더 만들어서 노란공이 이동 할 때 노란공 위치의 값을 X배열에 넣고 그 값을 파란공에 넣어주면 되겠네요

    ex) X[0][0] <-- 이동 한 노란공[5][5] 하면 X[5][5]이 될 것이고

    이동 해야 할 파란공[0][0] <--X[5][5+1] 하면 되겠습니다.

  • 예를 들어

    노란공이 배열판[5][5]에 위치해 있고 파란공에 [5][6]에 있다 할 때, 옆에 붙은 상황이니까 노란공이 [5][5]에서 [4][5]가 되면 파란공은 [4][6] 이런식으로 움직이게 하려는데 이걸 어떻게 코딩을 짜야 할지 도무지 모르겠습니다.

    ==> 이런류의 상황을 프로그래밍 하실때는 우선순위가 무엇인지 정의를 하셔야 합니다

    즉, 노란공이 먼저 움직이는지 , 파란공이 먼저 움직이는지 순서가 중요하죠

    그래서 위 질문이 노란공이 먼저 움직이는거라고 전제를 한다면?

    프로그램 개발시 아래 로직을 전제로 개발하시면 됩니다

    x,y 는 다중 for 문으로 처리하시면 됩니다

    for y {

    for x {

    ... 상황에 따른 노란공 판단처리

    }

    }

    for y {

    for x {

    ... 상황에 따른 파란공 판단처리

    }

    }

    1. 해당 x,y에 노란공이 있는지 확인을 한다

    2. 노란공이 있다면? 동서남북 어디로 움직일지 난수를 발생한다

    3. 주변에 파란공이 있는지 확인을 한다

    4. 파란공이 있다면? 방금 발생시킨 난수방향으로 파란공을 움직인다

    5. 노란공도 같은방향으로 움직인다

    ... 모든 위치의 노란공 처리가 완료되기전까지 (1)~(5) 반복

    6. 해당 x,y에 파란공이 있는지 확인을 한다

    7. 파란공이 있다면? 동서남북 어디로 움직일지 난수를 발생한다

    8. 주변에 노란공이 있는지 확인을 한다

    9. 노란공이 있다면? (7)부터 다시 시작한다

    10. 파란공을 방금 발생시킨 난수방향으로움직인다

    ... 모든 위치의 파란공 처리가 완료되기전까지 (6)~(10) 반복

    이런 알고리즘으로 개발하시면 됩니다