切换转到不遵循正确的情况

时间:2019-01-22 01:24:02

标签: c# winforms

所以我试图用C#创建一个垄断游戏。这款游戏大部分都可以正常运行,但是我试图应对的是一旦他们破产而退出游戏,并且无法达到预期效果的玩家。我正在尝试使用goto命令,以便在当前玩家破产的情况下继续下一位玩家,尽管似乎并没有解决正确的情况。

    private void changeActivePlayer()
    {

        switch (activePlayerID)
        {
            case 1:
                if (player1Bankrupt == true)
                {
                    goto case 2;
                }
                else
                {
                    activePlayerID = 2;
                    break;
                }
            case 2:
                if (player2Bankrupt == true)
                {
                    goto case 3;
                }
                else
                {
                    activePlayerID = 3;
                    break;
                }
            case 3:
                if (player3Bankrupt == true)
                {
                    goto case 4;
                }
                else
                {
                    activePlayerID = 4;
                    break;
                }
            case 4:
                if (player4Bankrupt == true)
                {
                    goto case 1;
                }
                else
                {
                    activePlayerID = 1;
                    break;
                }
        }
    }

我尝试通过使两名玩家在开始游戏时破产而测试我的代码。玩家1和2可以正常轮流。但是,一旦轮到玩家3的回合,而不是依次执行case 4和case 1的switch语句,而是让玩家3继续回合,一旦结束,便恢复为玩家2的回合并创建和无尽的循环。我知道这可能不是解决此问题的最佳方法,但是解决我这个问题的任何帮助将不胜感激,因为我无法找出问题所在。谢谢。

1 个答案:

答案 0 :(得分:1)

case 2:
    if (player2Bankrupt == true)
    {
        goto case 3;
    }
    else
    {
        activePlayerID = 3;
        break;
    }

您以玩家2的身份进入此开关,并检查玩家2是否破产,然后根据此决定谁跟随。

但是您想要检查的是玩家3是否破产,然后基于此做出决定。

case 2:
    if (player3Bankrupt == true)
    {
        goto case 3;
    }
    else
    {
        activePlayerID = 3;
        break;
    }

以及其他情况下的类似修复程序。