Loops 遍历矩阵元素并在Smalltalk中返回true时停止

Loops 遍历矩阵元素并在Smalltalk中返回true时停止,loops,matrix,smalltalk,Loops,Matrix,Smalltalk,我的任务是用Smalltalk创建一个简单的游戏,这是一种我基本上不熟悉的语言。该游戏是大理石纸牌游戏,它包括一个7x7矩阵,每个角落的碎片以2x2的正方形移除 我有一个方法可以检查每个元素是否有有效的移动,我想对矩阵中的每个元素调用该方法。一旦找到有效的移动,该方法将返回true,迭代过程可以停止,玩家可以继续玩 创建矩阵的代码如下所示 pegs := Matrix new: n tabulate: [:i :j | self newCellAt

我的任务是用Smalltalk创建一个简单的游戏,这是一种我基本上不熟悉的语言。该游戏是大理石纸牌游戏,它包括一个7x7矩阵,每个角落的碎片以2x2的正方形移除

我有一个方法可以检查每个元素是否有有效的移动,我想对矩阵中的每个元素调用该方法。一旦找到有效的移动,该方法将返回true,迭代过程可以停止,玩家可以继续玩

创建矩阵的代码如下所示

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

从架构的角度来看,我建议为元素创建一个类,比如说
BoardPiece
并为其定义#hasValidMove方法。然后你可以做:

elements anySatisfy: #hasValidMove
否则,您可以对矩阵执行相同的操作:

pegs anySatisfy: [ :peg | self validMoveAvailableFor: peg ]
假设#validMoveAvailableFor接受来自矩阵的值,如果移动有效,则返回true

请注意
元素满足:#hasValidMove
元素anysuccess:[:el | el hasValidMove]