开发简单的象棋程序,需要设计哪些类?棋子类,棋盘类等
这样设计如何?
class 棋子 

   public bool player;     //红子true,黑子false
   public string typeName; // 帅、士... 
   public Point  pos;      //位置
   public void Draw();     // 绘制自己到棋盘上 
   public voide Move();    // 移动棋子
   private  Bitmap blockImage; //棋子图案
   ... 
} class 棋盘 

   public 棋子[] 棋子集=new 棋子[32];  //所有棋子
   public void Draw();                 //绘制棋盘
   public void NewGame();              //棋子初始布局
   public bool CanMove();              //判断被选中棋子是否可以移动
   ... 

这样设计如何?

解决方案 »

  1.   

    1. 我觉得CanMove不是棋盘的行为,而应该是棋子的行为,是一个protected方法,在Move的内部调用,不同的“棋子”的子类实现不同的CanMove和Move方法,这样,一个模板方法的雏形就搭建好了。
    2. ”棋子”类职责太多,既负责绘图,又负责走棋,应该分离。
    3. 同样,“棋盘”类也不能既负责画图,又负责开始新的一局。
      

  2.   

    是的...棋子仅仅是个道具,棋盘仅仅是个容器,不能赋予它们太多的功能...楼主的设计缺少了最重要的两个对象,一个是Player,一个是Game...没有Player和Game你的棋子和棋盘都没有存在的意义...