有没有办法设置某种标志,最多可以有四个变量(用于确定它是否是国际象棋游戏中的特殊动作)

问题描述 投票:0回答:1

我正在写一个国际象棋游戏。 我有一个移动类,当它被调用时运行代码,它适用于一般移动,但是我正在考虑使用一个称为特殊移动的可选参数来进行移动,如易位,en passant 或 pawn 提升,因为它需要运行不同的代码。我正在考虑将其设置为 null 或空字符串(如果它是正常移动)或将其设置为“castling”或“Enpassant”或“Pawnpromotion”。 移动类目前看起来像这样:

def __init__ (self, initalSquare, endSquare, positions):
我想我需要把它改成
def __init__ (self, initalSquare, endSquare, positions, specialmove = null):
specialmove = ""

将它设置为字符串的主要问题是,如果我稍后在没有空格的地方放置一个空格,或者如果我不小心更改了大写字母或类似的东西,可能很难调试。如果这是一个特殊的动作,我还需要在撤消/进行动作时运行不同的代码。我正在考虑的另一种方法是为每种类型的特殊动作设置三个标志,例如

def __init__ (self, initalSquare, endSquare, positions, ispawnpromotion, iscastling, isenpassant):
,但随后我必须始终将它们作为 false 传递,这似乎是多余的,或者如果它们是可选参数,我将不得不传递在我想设置为 True 的标志之前。

有没有更好的方法来实现这个?

在此先感谢您的帮助。

python chess
1个回答
2
投票

一个选择是使用

enum
。这是一种使变量保持在一组值内的方法。 这里是它的文档,但它可能看起来像这样:

Class Special_Move(Enum):
    None = 1
    EnPassant = 2
    ...

然后您可以将每种类型称为

Special_Move.EnPassant

© www.soinside.com 2019 - 2024. All rights reserved.