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

时间:2014-02-06 12:21:52

标签: if-statement pascal chess

我开始自己学习Pascal,我想创建一个程序,我将计算一个马在2个动作中可能移动的次数,如果我知道它的开始可能性。所以我知道该怎么做,首先我计算一下是否可以在所有8个侧面上移动(2个向上和向左1个,2个向上和向右1个,向左2个向上移动一个...)如果有可能那么我做它再次进行第二次移动,但后来我将使用相同的代码来计算第一次重复8次的可能移动。对不起,如果这是一个愚蠢的问题,如果你可以给我一些关于这个问题的教程,我刚开始学习,我甚至不知道是否可以这样做。

1 个答案:

答案 0 :(得分:1)

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

这样的事情:

Function calcMoves(pos : Position) : integer
Begin
    ...logic...
    calcMoves := theNumberOfMovesThatAreLegalFromPos
End

很抱歉,如果语法关闭,那我已经有一段时间了,因为我在Pascal中做了一些事情。 但是,我们的想法是您现在可以重复使用计算。 可能更好的是拥有一个不仅可以计算允许移动次数而且还可以计算位置的功能。您需要返回某种数组或集合。这样,您可以以起始位置作为参数调用该函数一次,然后在该移动之后迭代所有可能的位置,使用第一个移动的结束位置作为第二个移动的起始位置。这就是我要做的,但我真的不记得集合在Pascal中是如何工作的。