返回一个整数以确定要显示的 switch 语句
Returning an integer to determine which switch statement to show
我正在用 c++ 创建一个棋盘游戏(stratego),想知道它是否认为从类方法返回整数以确定在 switch 语句中向用户显示哪种情况是一种糟糕的做法。
例:在 stratego 中,你不能攻击属于你自己军队的棋盘,所以当用户尝试这样做时,我有一条消息"你不能攻击自己的军队"。
如果执行的移动会导致玩家跳下棋盘、移动太多空间等,则也是如此。
这些无效动作中的每一个都有其自己唯一的消息,但为了避免从 Class.cpp 文件中打印它们,这是验证玩家移动的地方,我有 Class.cpp 文件向 main() 中的 switch 语句返回一个整数。处理消息调用方式的最推荐方法是什么?
class Test
{
public:
Test()
{
}
int Validate_Move(int valid)
{
if (valid > 0 && valid < 5)
{
return 1;
}
else if (valid > 5)
{
return 2;
}
}
};
int main()
{
int entry;
std::cout << "Enter move: ";
std::cin >> entry;
Test obj;
switch (obj.Validate_Move(entry))
{
case 1:
std::cout << "Move is valid" << std::endl;
case 2:
std::cout << "Move is invalid" << std::endl;
default:
std::cout << "Error occured" << std::endl;
}
return 0;
}
这种技术没有错。如果你想更明确,你总是可以做一个enum
class Test
{
public:
Test() = default;
enum EValidity {eError, eValid, eInvalid};
EValidity Validate_Move(int valid)
{
if (valid > 0 && valid < 5)
{
return eValid;
}
else if (valid > 5)
{
return eInvalid;
}
else
{
return eError;
}
}
};
int main()
{
int entry;
std::cout << "Enter move: ";
std::cin >> entry;
Test obj;
switch (obj.Validate_Move(entry))
{
case Test::eValid:
std::cout << "Move is valid" << std::endl;
break;
case Test::eInvalid:
std::cout << "Move is invalid" << std::endl;
break;
case Test::eError:
std::cout << "Error occured" << std::endl;
break;
default:
assert(false);
}
return 0;
}
相关文章:
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 如何使C++调试语句显示在 gdb 控制台中
- if/else 语句输出由于加号或减号而未显示正确的消息
- 表单显示对话框函数错误,并且不执行下面的语句
- c++ IF 语句执行,但添加 ELSE 会显示错误
- 如果 return 语句在带括号的循环中,错误可能会到达非 void 函数的末尾,但不会显示在没有括号的循环的情况下
- 使用开关大小写语句抽取随机扑克牌等级和花色以显示用户
- 仅禁止显示实际的 make 命令和最终打印语句
- 如果/else语句未显示/可变分配问题的输出;初学者程序员
- 如果语句内部循环不读取完全正确的代表显示错误
- 如何使用我的 if-else 语句根据用户权重的输入执行特定操作,然后将其显示到控制台?
- 显示使用函数、switch 语句和多维数组的程序的多个不合逻辑的错误
- Switch语句不显示除默认语句之外的任何类型的输出
- 当我做出语句 root->right->right = newnode(7);注释,编译器显示运行时错误。谁能解释为什么?
- C++显示错误的 constexpr 错误语句
- 为什么我的输出没有显示"while"语句。while 语句用于显示所有信息
- 哪个工具可以在C++中显示方法或函数的最大语句
- C++-(If语句)总是显示Else
- Visual Studio在添加if语句后显示C++模糊性错误
- 从命令行启动时,在for循环期间不显示C++cout语句