2012-07-10 7 views
0

Java 응용 프로그램 화면에서 상자 경계선 주위로 아이콘을 이동시키는 다음 코드는 화면을 19 번 움직여서 시작한 다음 원래 시작 위치 이전 단계로 돌아올 때까지 오른쪽으로 돌아서 시작합니다.Java 기반 아이콘 이동

public class MyClass { 
public static void moveNTimes(MyObject main, int numberOfMoves) { 
for(int i = 0; i < numberOfMoves; i++) { 
    main.move(); 

    } 
} 
public static void main(String[] args) { 

    MyObject main = new MyObject(); 


    for (int i = 19; i >=0; i--){ 
     moveNTimes(main, i); 
    main.turnRight(); 

    i = i + 1; 


     } 
    } 
} 

내 문제는 그것이 때까지, 다음 둘레 열일곱 등으로 이동하는 18 곳이 것 나는 그것이 다음 라인으로 전환하는 데 필요한 상자의 둘레의 끝 부분에 도착했을 때 인 아이콘이 화면 가운데에서 끝났습니다.

원래 숫자 세트 중 하나를 추출 할시기를 알 수 있도록 코드에 카운트를 적용 할 수있는 방법이 있습니까? 매번 수동으로 정수를 설정하여 코드를 반복함으로써이 작업을 수행했습니다. 지금과 마찬가지로 아이콘은 첫 번째 경계가 완료되면 중지됩니다.

답변

1

당신은 인수로 움직임의 수를 취하는 방법을 만들 수 있습니다

public void moveNTimes(YourObject main, int numberOfMoves) { 
    for(int i = 0; i < numberOfMoves; i++) { 
     main.move(); 
    } 
} 

을 그리고 복제하지 않고 그 방법을 필요한만큼 여러 번 전화 코드 :

for (int i = 19; i >=0; i--) { 
    moveNTimes(main, i); 
} 

또는

주 개체에 moveNTimes(int numberOfMoves) 메서드를 추가 할 수 있습니다.

참고

: i++

편집

귀하의 설명은, 분명 당신은

  • i = i + 1를 기록 할 수
  • for 루프 내부 변수를 선언 할 수

    • 아니라 이것은 당신이 요구하는 것일 수 있습니다 :

      for (int i = 19; i >= 2; i--){ 
          for (int j = 0; j < 3; j++) { 
           moveNTimes(main, i); 
           main.turnRight(); 
          } 
      } 
      

      이것은 19 번 오른쪽 위로, 19 번 아래로, 18 번 왼쪽으로, 18 번 위로, 18 번 오른쪽으로, 17 번 아래로 이동하며 상자 중간에서 완료해야합니다 (추가 이동이 필요할 수 있음). 결국, 확실하지 않음).

    +1

    그러나 좋은 답변처럼 보이지만 몇 시간 동안 구현할 수 없을 것입니다. 제대로 작동하는 경우 올바른 것으로 표시해야합니다. – Ebikeneser

    +0

    나는 초기 문제에 너무 애매한 듯하다. 그러나 문제를 명확하게하기 위해 내 질문을 수정했지만 코드가 주변 문제에 대해 잘 작동했지만 너무 애매했다. – Ebikeneser

    +0

    @Jambo 나는 나의 대답을 편집했다. 솔직히 말하면, 새로운 질문은 원래 질문과 상당히 다르며 원래 답변은 더 이상 적용되지 않습니다. 시스템이 작동하는 방식이 아닙니다. – assylias

    1

    방법에 대한 다음과 같은 :

    for(int run=0 ; run<19 ; run++) { 
        for(int lc1=0 ; lc1<19-run ; lc1++) 
         main.move(); 
        main.turnRight(); 
    }