如何在执行方法之前获取整数的最后一个值

时间:2013-04-26 11:08:41

标签: java integer int rectangles

我有两个在屏幕上移动的正方形,两个正方形都来自同一个类(它是两次绘制的同一个正方形)。我已经弄清楚如何在它们之间进行碰撞检测,这不是问题。问题是方块可以相互通过,所以我认为我可以做到这一点,当方块相互碰撞时,它们会传送到它们碰撞之前所处的最新x和y位置。我尝试了一些东西,但没有它们起作用。在我的帖子中,我现在有了这个代码。

for(int i = 0; i < rectangles.size(); i++){
    Rectangle rect = (Rectangle) rectangles.get(i);
    x = rect.getXPos();
    y = rect.getYPos();
    checkRectCollisionAndMovement();
    for(int j = i + 1; j < rectangles.size(); j++){
        Rectangle rect2 = (Rectangle) rectangles.get(j);
        Rectangle r1 = rect.getBounds();
        Rectangle r2 = rect2.getBounds();
        if(r1.intersects(r2)){
            rect.setXPos(x);
            rect.setYPos(y);
        }
    }
}

我如何制作它以便在它们合并之前获得x和y位置而不是它们碰撞时的位置?

这是checkCollisionAndMovement方法

public void checkRectCollisionAndMovement(){
    for(int i = 0; i < rectangles.size(); i++){ 
        Rectangle rect = (Rectangle) rectangles.get(i);
        if(rect.getYPos() > 500){
            rect.setYPos(rect.getYPos() - .1);
        }
        if(rect.getYPos() < 500){
            rect.setYPos(rect.getYPos() + .1);
        }
        if(rect.getXPos() > 500){
            rect.setXPos(rect.getXPos() - .1);
        }
        if(rect.getXPos() < 500){
            rect.setXPos(rect.getXPos() + .1);
        }                   
        if(rect.isVisibe()){
            rect.move();
        }else{ 
            rect.remove(i);
        } 
    }   
}

1 个答案:

答案 0 :(得分:0)

您可以将所有先前的x,y位置存储在列表中,并在发生碰撞时追溯一步或仅在临时变量中存储最后一个坐标。 但正如Duncan所说,我觉得你的新路径应该沿着与影响正交的轴反射