2014-02-06 13 views
-2

我開始自學Pascal,我想創建一個程序,在這裏我會計算一個馬的可能移動次數,以便在2次移動中做出,如果我知道它開始正在進行。所以我知道如何做到這一點,首先我可以在所有8邊移動(2上1左,2上1右,2左,1上...),如果有可能,那麼我做它再次爲第二步,但我會有相同的代碼,我用來計算可能的舉動第一次重複8次。對不起,如果這是一個愚蠢的問題,如果你可以給我一些關於這個問題的教程,我剛開始學習,我甚至不知道是否有可能做到這一點。如何在Pascal中縮短代碼,如果我有一個部分在多個函數中重複?

+1

明確您的問題,添加一些代碼快照或您的想法...在這裏你不會下載源代碼... – danielad

回答

1

您可以爲您的計算創建一個函數。它可以返回來自給定位置的可能移動的數量。

事情是這樣的:如果

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

對不起語法是關閉的,它是因爲我在做帕斯卡爾東西已經有一段時間。 但是,這個想法是,你現在可以重新使用計算。 什麼可能更好呢是有一個函數,不僅計算允許移動的數量,而且還計算位置。您將需要返回某種數組或集合。這樣,您可以使用起始位置作爲參數調用函數一次,然後在該移動之後遍歷所有可能的位置,並將第一次移動的結束位置作爲第二次移動的開始位置。這就是我會做的,但我真的不記得Pascal中的收藏是如何工作的。