2014-10-02 62 views
2

我有一個任務是在Smalltalk中創建一個簡單的遊戲,這是我很不熟悉的一種語言。遊戲是大理石紙牌,它包含一個7x7的矩陣,每個角落的棋子都被移除了一個2x2的方塊。通過矩陣元素進行迭代並在Smalltalk中返回true時停止

我有一個方法,將檢查每個元素是否有一個有效的移動,我想調用矩陣中的每個元素的方法。一旦找到有效的移動,該方法將返回true,並且迭代過程可以停止並且玩家可以繼續玩。

Matrix創建的代碼看起來像這樣。

pegs := Matrix 
      new: n 
      tabulate: [:i :j | self newCellAt: i at: j] 

回答

2

但從我建議創建的元素類架構的角度,讓我們說BoardPiece和確定它#hasValidMove方法。然後,你可以這樣做:

elements anySatisfy: #hasValidMove 

否則,你可以做同樣的矩陣:

pegs anySatisfy: [ :peg | self validMoveAvailableFor: peg ] 

假設#validMoveAvailableFor從基質接受價值,如果它有一個有效的舉措返回true。

請注意elements anySatisfy: #hasValidMove 是完全一樣的elements anySatisfy: [ :el | el hasValidMove ]

相關問題