在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示
在Silenus-G提出规则还有点bug:
红车竟然可以走到红马的地盘:这是由于鼠标点在棋子之外的地方时,我们产生的是棋子移动[不是吃子],而在移动之时,我们又没有判断要移动到的位置上是不是有其它棋子从而引发了经济纠纷。因此,解决这个问题,我们只需在点击事件里增加一下判断棋子存不存在就可以了。
而在移动的规则里,这节我们同时进行补充,小调整一下其它两个规则:
1:车和炮的判断语句少了几个“括号”;
2:增加将军面对面可以吃子
下面开始:
对于红车抢马地盘这个问题,我们增加一行if代码就可以解决了,我们回到Chess象棋类里,找到鼠标点击事件:
void control_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.OriginalSource is Canvas || e.OriginalSource is Line)
{
Chessman chessman =ReadyMoveChessman;
if (chessman != null)
{
Point fixPoint = FixPoint(e.GetPosition(null));
if (FindChessman(fixPoint) == null)//这里是新增加的一行判断语句
{
Action.MoveTo(chessman, fixPoint);
}
}
}
}
{
if (e.OriginalSource is Canvas || e.OriginalSource is Line)
{
Chessman chessman =ReadyMoveChessman;
if (chessman != null)
{
Point fixPoint = FixPoint(e.GetPosition(null));
if (FindChessman(fixPoint) == null)//这里是新增加的一行判断语句
{
Action.MoveTo(chessman, fixPoint);
}
}
}
}