1 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
機(jī)器人不是檢測(cè)方塊的可靠方法。雙緩沖可能意味著您的像素實(shí)際上并未顯示。
由于您自己的代碼正在繪制正方形,因此請(qǐng)將這些正方形的坐標(biāo)保存在私有字段中,并使用它們來(lái)檢查碰撞而不是檢查像素顏色:
private final Collection<Rectangle> squares = new ArrayList<>();
// ...
if (squares.stream().anyMatch(sq -> sq.contains(x, y))) {
moveDown.cancel();
moving = false;
} else {
ball.positionY += 5;
if (ball.positionY > 670) {
ball.positionY = 0;
}
}
另請(qǐng)注意,Swing 對(duì)于多線程的使用是不安全的。您應(yīng)該使用javax.swing.Timer而不是 java.util.Timer,因?yàn)樗?AWT 事件分派線程中正確執(zhí)行其任務(wù)。
添加回答
舉報(bào)