Enum's can be used more efficiently and economically to describe constant values.
I tend to forget this syntax so here it is:
Example from Chess class. Elegantly describing chess piece using Flags in enum.
[Flags]
public enum PieceE : byte {
/// <summary>No piece</summary>
None = 0,
/// <summary>Pawn</summary>
Pawn = 1,
/// <summary>Knight</summary>
Knight = 2,
/// <summary>Bishop</summary>
Bishop = 3,
/// <summary>Rook</summary>
Rook = 4,
/// <summary>Queen</summary>
Queen = 5,
/// <summary>King</summary>
King = 6,
/// <summary>Mask to find the piece</summary>
PieceMask = 7,
/// <summary>Piece is black</summary>
Black = 8,
/// <summary>White piece</summary>
White = 0,
}
Explicit setting of type and value for Enum
public enum MoveTypeE : byte {
/// <summary>Normal move</summary>
Normal = 0,
/// <summary>Pawn which is promoted to a queen</summary>
PawnPromotionToQueen = 1,
/// <summary>Castling</summary>
Castle = 2,
/// <summary>Prise en passant</summary>
EnPassant = 3,
/// <summary>Pawn which is promoted to a rook</summary>
PawnPromotionToRook = 4,
/// <summary>Pawn which is promoted to a bishop</summary>
PawnPromotionToBishop = 5,
/// <summary>Pawn which is promoted to a knight</summary>
PawnPromotionToKnight = 6,
/// <summary>Pawn which is promoted to a pawn</summary>
PawnPromotionToPawn = 7,
/// <summary>Piece type mask</summary>
MoveTypeMask = 15,
/// <summary>The move eat a piece</summary>
PieceEaten = 16,
/// <summary>Move coming from book opening</summary>
MoveFromBook = 32
}
No comments:
Post a Comment