【发布时间】:2018-12-12 18:52:15
【问题描述】:
我正在用 C++ 做一个国际象棋项目。我正在尝试检查 2D 数组中的有效骑士移动。
我有玩家的旧位置this->getLocX(),this->getLocY() 变量(玩家所在的位置),我有x,y(这是玩家想要将他的骑士移动到的位置)。
如何以最佳方式检查有效性?这是我的解决方案,但我想知道是否有更好的方法。
if (x == this->getLocX() + 1 && y == this->getLocY() + 2 || x == this->getLocX() - 1 && y == this->getLocY() + 2 || y == this->getLocY() + 1 && x == this->getLocX() + 2 || y == this->getLocY() + 1 && x == this->getLocX() - 2 || x == this->getLocX() - 1 && y == this->getLocY() + 2 || x == this->getLocX() + 1 && y == this->getLocY() - 2 || y == this->getLocY() - 1 && x == this->getLocX() - 2 || y == this->getLocY() - 1 && x == this->getLocX() + 2 || x == this->getLocX() - 1 && y == this->getLocY() - 2)
{
//Move is vaid
}
【问题讨论】:
-
一个有效的马的移动是 x 变化的绝对值和 y 变化的绝对值是 1 和 2 或 2 和 1。并且移动仅限于棋盘.
-
你能纠正我的条件吗?我不确定我是否理解
-
@Z.Zadon 不,我们不能为您编写条件:SO 不是编码服务。此外,合法骑士移动的问题在网上得到了很好的介绍,包括在这个网站上。我们希望您在发帖寻求帮助之前尽职尽责地找到或创建解决方案。
-
欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topic、how to ask 和 ... the perfect question 在此处申请。 StackOverflow 不是设计、编码、研究或教程资源。但是,如果您遵循您在网上找到的任何资源,进行诚实的编码尝试并遇到问题,那么您将有一个很好的示例可以发布。
-
我不明白我做错了什么。我在这里发布了我的解决方案,效果很好,但我只是想检查是否有更好的方法.. 这不像我只是让你给我写代码;(