0

我对 java 完全陌生,我有一个要解决的问题。我出于我的目的使用 ACM 库。我的目标如下:

  1. 移动标签 1
  2. 移动标签 2
  3. 比较标签 1 和标签 2 的位置(当文本相互碰撞时)“使用 'if' 语句”
  4. 一旦到达顶部,使用break语句停止它。
  5. 重新开始循环。

如果有人可以通过解释如何实施来帮助我。那将是真棒。我在尝试学习。谢谢!

import acm.graphics.GLabel;
import acm.program.CommandLineProgram;
import acm.program.GraphicsProgram;

public class Main extends GraphicsProgram {

    public void run( )

    {
            int label1_xy = 50;
            int label2_xy = 200;

            GLabel label1 = new GLabel("Hello World.");
            add(label1, label1_xy,label1_xy);

            GLabel label2 = new GLabel("Goodbye World.");
            add(label2, label2_xy,label2_xy);

            while (true)
            {
            label1.move(10,10);
                pause(500);
            label2.move(-10,-10);
            break;
            }
    }
}
4

1 回答 1

1
  1. 移动标签 1
  2. 移动标签 2

你已经做了这两个。

  1. 比较标签 1 和标签 2 的位置(当文本相互碰撞时)“使用 'if' 语句”
  2. 一旦到达顶部,使用 break 语句停止它。

您可以通过尝试检索对象的“绑定”来比较这两个标签的位置。例子 :

label1.move(10,10);
pause(500);
if (label1.getBounds().getX() == label2.getBounds().getX() 
     && label1.getBounds().getY() == label2.getBounds().getY()) {
    break;
} else {
    label2.move(-10,-10);
}
  1. 重新开始循环

您可以通过为run()代码放置另一个 while 块来重新启动它,或者只是调用run()(注意StackOverflowError这里)。

于 2015-10-05T07:02:35.537 回答