Silverlight+WCF 新手实例 象棋 棋子移动-规则[附加上半盘限制](十)
2023-09-11 14:20:03 时间
上上一节,我们对棋子的下半盘棋子做了所有的规则限制,因为我们下棋的总是用下半盘的棋子来下,总没人用上半盘棋来下那么高境界的吧。
不过这节简单追加点代码,让那些企图高境界的人士可以临时性的自己和自己下。
好了,要为上半盘棋子也做限制,所以我们要知道棋子是归属于上半盘还是下半盘的,这里,我们为棋子类Chessman增加一个属性,IsUp,是否上半盘棋,反之就下半盘了。初始为该属性赋值也相当的简单:
/// summary/// 棋子默认在上半盘/反之在下半盘
/// /summary
public bool IsUp
{
get;
set;
}
public Chessman(double x, double y, double radius, Color color, string name,Chess parent)
{
IsUp = y 5;//新增加的一行代码
Parent = parent;
InitPoint = new Point(x, y);
MovePoint = InitPoint;
Radius = radius;
Color = color;
Name = name;
}
看,相当相当的简单,在构造函数里一行代码就搞定了。
OK,现在知道棋子是归属于上半盘还是下半盘了,我们来为棋子的规则增加上半盘的限制。
有一些规则是通用的,像爱日的马,硬车和大炮。因为它们可以全局范围活动。
剩下的我们要为兵、将、士、相四种,附加上在半盘的情况的规则限制。
兵先来:
我们之前的兵规则是针对下盘的棋子,所以我们只要加个if else分支一下就完成了
case ChessType.Bing:
if (Math.Abs(y2 - y1) + Math.Abs(x2 - x1) != 1)//只能走一步
{
break;
}
if (chessman.IsUp)//新增加的
{
if ((x1 == x2 y2 y1) || (y1 == y2 y1 5))
{//只能直走 //或者 过了河左右走
return true;
}
}
else//原来就有的规则。
{
if ((x1 == x2 y1 y2) || (y1 == y2 y1 5))
{//只能直走 或者 过了河左右走
return true;
}
}
break;
看到没有,代码和原来就有规则相比,只是第二个号的" "大于和" "小于的区别
兵这样加几行代码就完了。
接下来就是将了:
还是if else 说白了全是 if else。。-_-...上半盘和下半盘本来就是这个样的。
case ChessType.Jiang:if (Math.Abs(y2 - y1) + Math.Abs(x2 - x1) != 1)//只能走一步
{
break;
}
if (chessman.IsUp)
{
if (2 x2 x2 6 y2 3)
{
//上半盘九宫
return true;
}
}
else
{
if (2 x2 x2 6 y2 6)
{
//下半盘九宫
return true;
}
}
break;
case ChessType.Shi:
if ((Math.Abs(y2 - y1) == 1 Math.Abs(x2 - x1) == 1))//先判断叉型
{
if (chessman.IsUp)
{
if (2 x2 x2 6 y2 3)
{//上九宫内
return true;
}
}
else
{
if (2 x2 x2 6 y2 6)
{//下九宫内
return true;
}
}
break;
}
break;
case ChessType.Xiang:
if ((Math.Abs(y2 - y1) == 2 Math.Abs(x2 - x1) == 2))//先判断走田型
{
//有没有田脚点,并且不能过河
if (!IsExits(new Point((x1 + x2) / 2, (y1 + y2) / 2)))
{
if ((chessman.IsUp) y2 6 || (!chessman.IsUp y2 4))
{
return true;
}
}
}
break;
相关文章
- WCF学习之旅——第一个WCF示例(三)
- 动态的调用服务端的WCF中的方法
- 如何测试WCF Rest
- Three ways to do WCF instance management
- Duplex Service in WCF(CodeProject上的)
- Learning WCF Chapter1 Summary
- Learning WCF Chapter1 Generating a Service and Client Proxy
- Learning WCF Chapter1 Creating a New Service from Scratch
- WCF与WPF
- Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放(三十九)
- Silverlight+WCF 新手实例 象棋 棋手颜色(二十九)
- Silverlight+WCF 新手实例 象棋 登陆与转向(十一)
- WCF系列教程之WCF实例化