silverlight
发布时间:2022-05-03 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight+WCF 新手实例 象棋 棋子移动-规则[附加上半盘限制](十),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
上上一节,我们对棋子的下半盘棋子
做了所有的规则限制,因为我们下棋的总是用下半盘的棋子来下,总没人用上半盘棋来下那么高境界的吧。 不过这节简单追加点代码,让那些企图高境界的人士可以临时性的自己和自己下。 好了,要为上半盘棋子也做限制,所以我们要知道棋子是归属于上半盘还是下半盘的,这里,我们为棋子类Ches
sman增加一个属性,IsUp,是否上半盘棋,反之就下半盘了。初始为该属性赋值也相当的简单:
上上一节,我们对棋子的下半盘棋子
做了所有的规则限制,因为我们下棋的总是用下半盘的棋子来下,总没人用上半盘棋来下那么高境界的吧。
不过这节简单追加点代码,让那些企图高境界的人士可以临时性的自己和自己下。
好了,要为上半盘棋子也做限制,所以我们要知道棋子是归属于上半盘还是下半盘的,这里,我们为棋子类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
;
最后就是相了:
@H_
404_777@
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
;
只有最后一个if有点变化。
好了,最好运行一下F5。看下效果图:
OK,至此,棋子上下盘都按规则走了,高境界的人群自己可以动手走两边了。。。
打完收工!
作者博客:http://cyq1162.cnblogs.com/
对于规则补充,请看:Silverlight+WCF 新手实例 象棋 棋子移动-规则补充(三十七)
大佬总结
以上是大佬教程为你收集整理的Silverlight+WCF 新手实例 象棋 棋子移动-规则[附加上半盘限制](十)全部内容,希望文章能够帮你解决Silverlight+WCF 新手实例 象棋 棋子移动-规则[附加上半盘限制](十)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。