0

我有以下代码,它在java应用程序屏幕中围绕框的周边移动一个图标,首先向上移动屏幕19次然后向右转,直到它回到其原始起始位置之前的一步 -

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 个位置围绕下一个周边移动,然后是 17 个等,直到图标在中心完成屏幕。

有没有办法对代码应用计数,以便知道何时提取原始数字集之一?我已经成功地做到了这一点,只需重复代码,每次手动设置的整数减一。现在,一旦完成第一个边界,图标就会停止。

4

2 回答 2

1

以下情况如何:

for(int run=0 ; run<19 ; run++) {
    for(int lc1=0 ; lc1<19-run ; lc1++)
        main.move();
    main.turnRight();
}
于 2012-07-10T15:17:22.467 回答
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)您可以向您的主要对象添加一个方法。

笔记:

  • 您可以在 for 循环中声明一个变量
  • i = i + 1可以写i++

编辑

您的描述不是很清楚,但这可能是您要求的:

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

这将向上移动 19 次,然后向右移动 19 次,向下移动 18 次,向左移动 18 次,向上移动 18 次,向右移动 18 次,向下移动 17 次等,并且应该在框的中间完成(最后你可能需要额外移动,不确定)。

于 2012-07-10T15:18:05.447 回答