0

現在、空き時間に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

これが役立つ場合。

4

2 に答える 2