在国际象棋java中移动棋子

时间:2013-09-15 23:34:02

标签: java swing jbutton actionlistener chess

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 个答案:

答案 0 :(得分:2)

首先,请确保所有语法都正确,因为我在此行上看​​到双半冒号:

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

此行也应该是ActioneListener的一部分,因为您要设置按钮的边框,而不是在您单击时设置动作。

如果您不想以当前的方式进行更改,请尝试以下操作:您应该创建一个 GameObject 类,让它扩展 JButton 还可以将按钮的边框设置为您想要的大小。现在创建一个游戏对象的 grid [x] [y] 。然后创建一个 Piece 类和一个 Space 类,两者都应该扩展 GameObject 。 piece类应该覆盖 JButton paint(Graphics g)方法并渲染该片段的图像。然后当你点击一个片段时,举起一个标志并在主类中保留这个片段的引用,然后当你点击一个空格时,程序将在两个游戏对象之间交换。 (注意:您必须使用Space类实例填充网格。)

直接处理JButton作为“Pieces”可能很棘手,并不是实现国际象棋游戏的好方法。

我强烈建议您是否真的要创建国际象棋游戏,看看本教程:

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

这是初学者,一步一步。我用这个创造了一个国际象棋游戏:D Enjoy。