首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回整数以确定要显示哪个开关语句

返回整数以确定要显示哪个开关语句
EN

Stack Overflow用户
提问于 2015-06-18 19:09:56
回答 1查看 48关注 0票数 1

我正在c++中创建一个棋盘游戏(stratego),并想知道是否认为从类方法返回整数以确定切换语句中向用户显示哪种情况是一种糟糕的做法。

在stratego中,你不能攻击属于你自己军队的棋子,所以当用户试图攻击你的军队时,我有一条信息“你不能攻击你自己的军队”。

同样的事情,如果一个动作被执行,会导致球员跳板,移动太多的空间,等等。

这些无效的动作都有它自己的唯一消息,但是为了避免从Class.cpp文件中打印它们,这是验证玩家移动的地方,我让Class.cpp文件在main()中将一个整数返回给调用它的main()语句。处理如何调用消息的最推荐的方法是什么?

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-18 19:13:08

这种技术没什么问题。如果您想要更明确,您可以始终创建一个enum

代码语言:javascript
复制
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;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30923785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档