一个很有意思公司的题目

中国象棋是一款非常受欢迎的棋类游戏,棋盘由9*10的网格组成,棋子包括:将(帅)、士(仕)、象(相)、马、车、炮、卒(兵)共7种,每种棋子的走法都各不相同。

用坐标(x,y)表示棋盘上的位置,横坐标x为1-9,纵坐标y为1-10。如图,红色即为本方棋子。move(x1,y1)-->(x2,y2)表示将(x1,y1)位置的棋子移动到(x2,y2),棋子的移动规则如下:

通用规则:

1, 禁止移动到棋盘外;

2, 起始位置必须是本方棋子;

3, 目标位置不能存在本方棋子。

棋子规则:

1, 将(帅):每次只能横向或纵向移动一格,无法离开本方“帅府”(棋盘中交叉线所在的位置,共9个点)。

2, 士(仕):每次只能斜着移动(沿图中的斜线),无法离开本方“帅府”。

3, 象(相):按“田”字行移动,即从“田”字格的一个角移动到另一个角,比如:move(3,1)-->(1,3)或move(3,1)-->(5,3)。不能越过“楚河汉界”。当“象眼”(“田”字格中央)位置存在棋子时,不允许移动。

4, 马:按“日”字行移动,即从“日”字格的一个角移动到另一个角,比如:move(2,1)-->(1,3)或move(2,1)-->(3,3)。当“马腿”(“日”字中间2个点中靠近起始位置的点)位置存在棋子时,不允许移动。

5, 车:直线移动,每次可以移动任意长度,但起始位置和目标位置之间不能存在任何棋子。

6, 炮:直线移动,每次可以移动任意长度,但如果目标位置存在对方棋子,则起始位置和目标位置之间必须存在且只能存在1个额外的棋子(可以是己方的,也可以是对方的),否则移动方式与车相同。

7, 卒(兵):每次只能横向或纵向移动一格,但不能“后退”(向本方移动)。

请提供一个API,判断move(x1,y1)-->(x2,y2)操作是否符合规则。

转载于:https://my.oschina.net/UBW/blog/760221

相关文章:

  • 2021-06-07
  • 2021-06-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-13
  • 2022-12-23
  • 2021-05-16
猜你喜欢
  • 2021-08-15
  • 2022-03-07
  • 2022-03-01
  • 2022-02-23
  • 2022-12-23
  • 2021-10-12
相关资源
相似解决方案