flag.cpp
来自「BugBots是一个游戏」· C++ 代码 · 共 102 行
CPP
102 行
const int NUM_WORDS = 3;const int MAX_FLAG = 32 * NUM_WORDS;class Flag{private: long int flag[NUM_WORDS]; long int FlagNumToBit(int FlagNum);public: int SetFlag(int FlagNum); int RemoveFlag(int FlagNum); bool IsSet(int FlagNum); bool operator[](int FlagNum); int operator+=(int FlagNum); int operator-=(int FlagNum);};#if 0int Flag::SetFlag(int FlagNum){ int FlagVar, ReturnCode; long int FlagBit; if(FlagNum > MAX_FLAG) ReturnCode = -1; else { FlagVar = FlagNum / 32; FlagBit = FlagNumToBit(FlagNum % 32); ReturnCode = 0; flag[FlagVar] |= FlagBit; } return ReturnCode;}int Flag::RemoveFlag(int FlagNum){ int FlagVar, ReturnCode; long int FlagBit; if(FlagNum > MAX_FLAG) ReturnCode = -1; else { FlagVar = FlagNum / 32; FlagBit = ~FlagNumToBit(FlagNum % 32); ReturnCode = 0; flag[FlagVar] &= FlagBit; } return ReturnCode;}bool Flag::IsSet(int FlagNum){ int FlagVar; long int FlagBit; bool ReturnCode; if(FlagNum > MAX_FLAG) ReturnCode = false; else { FlagVar = FlagNum / 32; FlagBit = FlagNumToBit(FlagNum % 32); if(flag[FlagVar] & FlagBit) ReturnCode = true; else ReturnCode = false; } return ReturnCode;}long int Flag::FlagNumToBit(int FlagNum){ return 1 << FlagNum;}bool Flag::operator[](int FlagNum){ return IsSet(FlagNum);}int Flag::operator+=(int FlagNum){ return SetFlag(FlagNum);}int Flag::operator-=(int FlagNum){ return RemoveFlag(FlagNum);}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?