基本上,我只是尝试一个非常简单的碰撞测试我正在研究的另一个程序,但它看起来确实如此简单(或者我可能只是一个白痴!)无论如何,这里是代码:
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();
}
图像:
答案 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”永远不会被打印出来。