對不起,如果標題沒有多大意義。我正在Java Eclipse中製作一個Chip's Challenge風格的遊戲,其中像玩家,硬幣和可推塊等特殊的東西是一類。可推塊和玩家之間的交互需要大量的碰撞檢測邏輯,並且代碼越來越殘暴,因爲我必須對每個類的實例進行相同的邏輯檢查。例如:Java遊戲編程:對象的多個實例,以同樣的方式處理?
public void pb1TouchingBaddy() {
if (pb1.getTileX() == b1.getTileX() & pb1.getTileY() == b1.getTileY()) {
if (b1.getbUp() == 1 & pb1.getTileY() - 1 != pb2.getTileY()) {
pb1.move(0, -1);
} else if (b1.getbDown() == 1
& pb1.getTileY() + 1 != pb2.getTileY()) {
pb1.move(0, 1);
} else if (b1.getbRight() == 1
& pb1.getTileX() + 1 != pb2.getTileX()) {
pb1.move(1, 0);
} else if (b1.getbLeft() == 1
& pb1.getTileX() - 1 != pb2.getTileX()) {
pb1.move(-1, 0);
}
}
if (pb1.getTileX() == b2.getTileX() & pb1.getTileY() == b2.getTileY()) {
if (b2.getbUp() == 1 & pb1.getTileY() - 1 != pb2.getTileY()) {
pb1.move(0, -1);
} else if (b2.getbDown() == 1
& pb1.getTileY() + 1 != pb2.getTileY()) {
pb1.move(0, 1);
} else if (b2.getbRight() == 1
& pb1.getTileX() + 1 != pb2.getTileX()) {
pb1.move(1, 0);
} else if (b2.getbLeft() == 1
& pb1.getTileX() - 1 != pb2.getTileX()) {
pb1.move(-1, 0);
}
}
if (pb1.getTileX() == b3.getTileX() & pb1.getTileY() == b3.getTileY()) {
if (b3.getbUp() == 1 & pb1.getTileY() - 1 != pb2.getTileY()) {
pb1.move(0, -1);
} else if (b3.getbDown() == 1
& pb1.getTileY() + 1 != pb2.getTileY()) {
pb1.move(0, 1);
} else if (b3.getbRight() == 1
& pb1.getTileX() + 1 != pb2.getTileX()) {
pb1.move(1, 0);
} else if (b3.getbLeft() == 1
& pb1.getTileX() - 1 != pb2.getTileX()) {
pb1.move(-1, 0);
}
}
if (pb1.getTileX() == b4.getTileX() & pb1.getTileY() == b4.getTileY()) {
if (b4.getbUp() == 1 & pb1.getTileY() - 1 != pb2.getTileY()) {
pb1.move(0, -1);
} else if (b4.getbDown() == 1
& pb1.getTileY() + 1 != pb2.getTileY()) {
pb1.move(0, 1);
} else if (b4.getbRight() == 1
& pb1.getTileX() + 1 != pb2.getTileX()) {
pb1.move(1, 0);
} else if (b4.getbLeft() == 1
& pb1.getTileX() - 1 != pb2.getTileX()) {
pb1.move(-1, 0);
}
}
所以你可以看到,如果語句都是完全相同的邏輯,只適用於同一對象的不同實例的這三個區塊。有沒有辦法寫這個,而不必重複自己這麼多?我能夠將四個方向運動邏輯變成一種方法,並認爲我是一個天才,但我無法弄清楚如何做一個類似的事情,但同一個對象的多個實例。現在,我被困在兩個可推動塊之前,我太困惑了,不能爲另一個邏輯做。希望有任何建議,謝謝!
編寫一個方法,它接受任何對象'b1','b2','b3'和'b4'的實例,並以這種方式執行檢查。 – Whymarrh
那麼有一種方法可以將一個對象的實例傳遞給一個方法? – user1048723