下面是两个类,即棋盘与棋子,如何将它们组合在一起以实现下棋的操作?这在面向对象设计中,有个专门的关系,就叫组合吧。还有,如何分别对棋盘和棋子设置颜色,以及如何实现“悔棋”的效果,即点击鼠标生成的圈,如何擦除??
我问题的关键是如何用java实现这些效果,也就是程序算法我知道,不需要啰嗦了。
请回答问题的各位大虾注意一下,这里有三个问题和一个强调,不要做无用功!!
//DrawChessman类
class DrawChessman  extends JPanel {
private static final long serialVersionUID = 4785452373598819719L;
private int x, y; //位置
final int ChessSize = 30;//棋子大小

public void paintComponent(Graphics g) {//画棋子
g.drawOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize); 
}

public DrawChessman() { 
this.addMouseListener(new MouseAdapter() { 
public void mouseClicked(MouseEvent e) { 
x = e.getX(); 
y = e.getY(); 
repaint(); 

}); 

} //ChessBoard类
class ChessBoard extends JPanel{
private static final long serialVersionUID = 4785452373598819719L;
private int x, y; //位置
final int ChessSize = 30;//棋子大小
private int width=600, height=600;//
private int d = width / 20; public ChessBoard (){
setBackground(new Color(235, 157, 80));
}

public void paint(Graphics g) {//画棋盘 
for(int i = 0; i<=width; i+= d){
if(i==0 || i==width){
g.drawLine(i, 0, i, height);
g.drawLine(0, i, width, i);
}else{
g.drawLine(i, d, i, height-d);
g.drawLine(d, i, width-d, i);
}
}
}
}

解决方案 »

  1.   

    http://www.verycd.com/topics/275480/
    Java五子棋
      

  2.   

    是代码,但不是所有的代码,就是我说的那些效果的代码,算法部分我自己会。因为刚学java,所以,好多效果不知道怎么做。
      

  3.   

    不是作业,我们没作业,再说了,这种程序关键在算法,大家是知道的。
    我是做AI程序,人机对弈模式,算法我早设计好。但刚学java,界面和事件不会做,所以来请教撒。
      

  4.   


        public void paintComponent(Graphics g) {//画棋子
            g.setColor(new Color(30,20,50));
            g.fillOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize); 
        }把下过棋子的地方 存入 链表吧,悔棋就扔掉最后一个
      

  5.   

    算法网上就有 所以可以搜!这个设计gui还是要自己先看写基础的东西!
      

  6.   


    如果你是想学JAVA,那么就不应该让人提供源码,而是自己去学语法,自己做
    如果你不想学JAVA,你要用JAVA做什么?还不如用C++写,快的多.
      

  7.   

    界面,使用javax.swing包,事件,使用java.awt包,去查API就知道了
      

  8.   

    A:它们组合在一起以实现下棋的操作?
    B:如何分别对棋盘和棋子设置颜色
    C:如何实现“悔棋”的效果首先你要有一个数据结构,存储双方下了几步棋、下在哪里了(相对于棋盘的位置)。
    你的A其实是数据结构转换到棋盘上的问题,通过
    public void paintComponent(Graphics g) {//画棋子
            g.setColor(new Color(30,20,50));
            g.fillOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize); 
        }
    类似这样的方法应该不难实现。设置棋盘棋子的颜色可以通过图片实现。
    悔棋正如楼上某人所说,在你的数据结构中删除最后一步,然后界面显示做相应操作即可。