現在、空き時間にJavaを改善するためにゲームを作成していますが、やりたいことの1つに問題があります。アイテムを特定の位置に配置できるようにゲームを作成しました。この例では、特定の場所にある塔です。このタワーがこの場所に配置され、タワーをクリックすると、メッセージが出力されます。しかし、これを行うために多くの方法を試しましたが、解決策を見つけることができませんでした。私がこれのために持っているコードは次のとおりです。
public static void click(int X, int Y){
System.out.println("X. " + X + " Y. " + Y);
if(Screen.room.block[X][Y].airID == Value.tower){
System.out.println("Tower clicked");
}
}
タワーが場所に配置されている場合、これに使用するコードは次のとおりです。
if(holdsItem){
for(int y=0; y<Screen.room.block.length; y++){
for(int x=0; x<Screen.room.block[0].length; x++){
if(Screen.room.block[y][x].contains(Screen.mse)){
if(Screen.room.block[y][x].groundID != Value.ground && Screen.room.block[y][x].airID == Value.tower){
Screen.room.block[y][x].airID = heldID;
}
}
}
}
}
私が塔を下ろすとき:
System.out.println(Screen.room.block[y][x]);
私は得る
Block[x=243,y=260,width=52,height=52]
これは正常に機能し、タワーが配置されます。次に、タワーが配置されている場所を使用したいと思いました。その場所が押されると、メッセージがコンソールに出力されます。しかし、これは起こりません。誰でもこの問題を解決するのを手伝ってくれますか?
次のマウスリスナーを使用します。
public void mouseClicked(MouseEvent e) {
e.getX();
e.getY();
Block.click(e.getX(), e.getY());
}
場所をクリックすると、次のようになります。
System.out.println("X. " + X + " Y. " + Y);
X. 257 Y. 298
これが役立つ場合。