基于Java的图标移动

标签 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 个位置,等等,直到图标完成屏幕中心。

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

最佳答案

您可以创建一个将移动次数作为参数的方法:

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

关于基于Java的图标移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11416446/

相关文章:

java - 在 Java Swing 中构建 Jpeg 幻灯片

java - 在java中为数组赋值时遇到问题

java - 如何使用 Android Volley 发布 JSON 数组并获取 JSON 对象作为响应?

java - AspectJ 和 NoClassDefFoundError

ios - 改变节点方向

javascript - 马里奥游戏的 Typescript 相机

swift - 如何根据触摸屏的时间使 Sprite 跳得更高/更小?

java - 为数组索引赋值和为java中的变量赋值之间的性能差异

java - 为什么我的归一化 vector 的方向如此不准确?

ios - Spritekit物理: One ball hit another ball