基于Java的图标移动

时间:2012-07-10 15:13:39

标签: java game-physics

我有以下代码在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等,直到图标完成屏幕的中心。

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

2 个答案:

答案 0 :(得分:1)

以下内容如何:

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

答案 1 :(得分: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);
}

OR

您可以在主对象中添加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次,向下移动19次,向左移动18次,向上移动18次,向右移动18次,向下移动17次等等,并且应该在框的中间完成(最后可能需要额外的移动) ,不确定)。