阻止盒子移动,如果它碰到另一个盒子



我正在尝试编写一个允许用户移动框的GUI。屏幕上还有另一个盒子,叫做"块",盒子不允许相交。我的盒子移动得很好,但我不知道如何阻止两者相交,并保持盒子的绘图在屏幕上。现在,当它碰到块时,盒子就消失了(我知道它为什么这样做,我只是不知道如何修复它)。

X和Y是鼠标左键和右键检测到的移动。

box = new Rectangle2D.Double(0 + X, 0 + Y, 200, 50);
block = new Rectangle2D.Double(300, 300, 50, 50);
if (box.intersects(block)) {
        hit = true;
    } else {
        hit = false;
    }    
Graphics2D g2 = (Graphics2D) g;
    g2.setPaint(Color.red);
    g2.draw(block);
    if (model.hit()) {
        g2.setPaint(Color.black);
        g2.drawString("WHOA THERE", 20, 50);
    } else {
    g2.setPaint(Color.blue);
    g2.fill(box);

我不太清楚你在问什么。如果你问的是如何画出方块,问题出在If/else语句上。在if的情况下,它跳过绘图块。删除else,即使碰到了,也会画出这个方框。

如果你问如何防止两个盒子相交,那很简单。如果你检测到它们相交,移动移动框,使其刚好在块的外面。因此,如果块位于x = 10,则设置移动框(model ?),使其位于x = 11。HTH

最新更新