If statement 如果一个部分在多个if函数中重复,如何缩短Pascal中的代码?

If statement 如果一个部分在多个if函数中重复,如何缩短Pascal中的代码?,if-statement,pascal,chess,If Statement,Pascal,Chess,我自己开始学习帕斯卡,我想创建一个程序,在这个程序中,如果我知道一匹马的开始位置,我将计算它在两个动作中可能移动的次数。所以我知道怎么做,首先我计算是否有可能在所有8个边上移动(2个向上和1个向左,2个向上和1个向右,2个向左和1个向上…),如果有可能的话,我会在第二个移动中再次移动,但是我会用我第一次计算可能移动的代码重复8次。很抱歉,如果这是一个愚蠢的问题,如果你能给我一些关于这个问题的指导,我刚刚开始学习,我甚至不知道是否有可能做到这一点。你可以为你的计算创建一个函数。它可以返回从给定位置

我自己开始学习帕斯卡,我想创建一个程序,在这个程序中,如果我知道一匹马的开始位置,我将计算它在两个动作中可能移动的次数。所以我知道怎么做,首先我计算是否有可能在所有8个边上移动(2个向上和1个向左,2个向上和1个向右,2个向左和1个向上…),如果有可能的话,我会在第二个移动中再次移动,但是我会用我第一次计算可能移动的代码重复8次。很抱歉,如果这是一个愚蠢的问题,如果你能给我一些关于这个问题的指导,我刚刚开始学习,我甚至不知道是否有可能做到这一点。

你可以为你的计算创建一个函数。它可以返回从给定位置可能移动的次数

大概是这样的:

Function calcMoves(pos : Position) : integer
Begin
    ...logic...
    calcMoves := theNumberOfMovesThatAreLegalFromPos
End
抱歉,如果语法是关闭的,我已经有一段时间没有用Pascal做过任何事情了。 但是,现在您可以重用计算。
更好的方法是使用一个函数,该函数不仅可以计算允许的移动次数,还可以计算位置。您需要返回某种数组或集合。通过这种方式,您可以使用起始位置作为参数调用函数一次,然后在移动之后遍历所有可能的位置,使用第一个移动的结束位置作为第二个移动的起始位置。这就是我要做的,但我真的不记得集合在Pascal中是如何工作的。

请澄清您的问题,添加一些代码快照或您的想法……这里您不打算下载源代码。。。