所以我试图用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的回合并创建和无尽的循环。我知道这可能不是解决此问题的最佳方法,但是解决我这个问题的任何帮助将不胜感激,因为我无法找出问题所在。谢谢。
答案 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;
}
以及其他情况下的类似修复程序。