2
for(y=0;y<length;y++){
    for(x=0;x<width;x++){

            grid[x][y]=new JButton(" ");
            grid[x][y].addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                ((JButton)e.getSource()).setBorder(border);;
                System.out.println("Where do you want to move this piece");
            }
        }); 
            grid[x][y].addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent r){
                    grid[x][y]=grid[x][y-1];
                    ((JButton)r.getSource()).setBorder(border);;
                    System.out.println("Derp");
                }
            });
            frame.add(grid[x][y]);
    }
}

駒をクリックしたいのですが、別のマスをクリックすると、駒が 1 つ上に移動します。私はこれが間違っていることを知っており、合法的な動きを示しますが、今のところは部分を動かす必要があります. 助けてください!!これを理解できるようになるまで、私は完全に立ち往生しています。

4

1 に答える 1

2

まず、この行にセミコロンが 2 つ表示されているので、すべての構文が正しいことを確認してください。

((JButton)e.getSource()).setBorder(border);;

また、クリック時ではなくアクションの設定時にボタンの境界線を設定するため、この行は ActioneListener の外側に配置する必要があります。

これを行っている現在の方法をあまり変更したくない場合は、これを試してください: JButtonを拡張し、ボタンの境界線を好きなサイズに設定するGameObjectクラスを作成する必要があります。次に、ゲーム オブジェクトのグリッド[x][y]を作成します。次に、PieceクラスとSpaceクラスを作成します。どちらもGameObjectを拡張する必要があります。piece クラスはJButtonのpaint(Graphics g)メソッドを上書きする必要があります作品のイメージをレンダリングします。次に、ピースをクリックするとフラグが立てられ、このピースの参照がメイン クラスに保持されます。スペースをクリックすると、プログラムは 2 つのゲーム オブジェクト間でスワップします。(注: グリッドに Space クラスのインスタンスを設定する必要があります。)

JButton を「ピース」として直接処理するのは難しい場合があり、チェス ゲームを実装するにはあまり適した方法ではありません。

本当にチェス ゲームを作成したい場合は、次のチュートリアルをご覧になることを強くお勧めします。

http://proghammer.wordpress.com/2010/08/08/chess00-introduction/

初心者向けで、ステップバイステップです。私はこれでチェスゲームを作成しました:D お楽しみください。

于 2013-09-15T23:57:25.997 に答える