碰撞if语句似乎不起作用

时间:2012-03-19 20:42:09

标签: java if-statement collision-detection

基本上,我只是尝试一个非常简单的碰撞测试我正在研究的另一个程序,但它看起来确实如此简单(或者我可能只是一个白痴!)无论如何,这里是代码:

    public void run() {
    while(true){

        try {
            if(rect.rect.intersects(rect1.rect)){
                System.out.println("Test1");
                if(rect1.x == ((rect.x + rect.width)-1)){
                    System.out.println("Test2");
                rect1.x = rect.x + rect.width;
                rect1.dx = 0;

                }
            }

            rect.update();
            rect1.update();

            Thread.sleep(50);

该程序无法进入test2!

非常感谢任何有助于解决此问题的帮助!提前谢谢!

绘制组件部分:

public void paintComponent(Graphics g){
    rect1.paint(g);
    rect2.paint(g);
    g.drawString(String.valueOf(rect1.x), 100, 100);
    g.drawString(String.valueOf(rect2.x+rect2.width), 100, 150);
    repaint();
}

图像:

test

2 个答案:

答案 0 :(得分:1)

在Eclipse(或您首选的IDE)中运行程序,并使用其运行时调试工具在第一个if语句处设置断点。然后逐步检查变量的值。希望这能说明为什么你的代码没能达到预期的效果。

答案 1 :(得分:0)

如何构建此方法只是为了方便调试(除非你有一个调试器):

public static printRectProperties(Rectangle rect, String rectangleName){
    System.out.println(rectangleName + ": x = " + rect.x + ", y = "
        + rect.y + ", width = " rect.width + ", height = " + rect.height;
}

然后,您可以在执行if语句之前调用此方法来记录有关矩形的统计信息:

            if(rect.rect.intersects(rect1.rect)){
                System.out.println("Test1");
                    printRectProperties(rect, "rect");
                    printRectProperties(rect1, "rect1");
                if(rect1.x == ((rect.x + rect.width)-1)){
                    System.out.println("Test2");

这应该可以很容易地弄清楚为什么“Test2”永远不会被打印出来。