所以我写了一个 hexappawn 游戏,我正在尝试制作一个函数,如果棋盘处于获胜状态,则返回 True,此时它看起来像这样:
checkWin :: BoardState -> Bool
checkWin b1@(blackPieces,whitePieces,turn,size,win)
|(length blackPieces) == 0 = True
|(length whitePieces) == 0 = True
|length (generateMoves b1) == 0 = True
|otherwise = False
因此,如果没有留下黑色或白色棋子,或者没有人可以移动,但如果对方棋子到达棋盘末端(另一种在六棋子中获胜的方式),则此方法无效。变量blackPieces和whitePieces是坐标列表,即 [(1,1),(2,1),(3,1)] 这些棋子在大小为n 的棋盘上的位置(如果白棋转,则转为真)
我很想将这些条件添加到方法中,但编译器不喜欢它。
|(_,1) `elem` whitePieces = True
|(_,size) `elem` blackPieces = True
有没有其他方式可以说“ whitePieces中是否有第二个元素是 1 的元组(即到达棋盘的另一边)。”
提前感谢您的有用评论。