根据if语句更改GameState?

时间:2013-05-01 21:38:46

标签: c# if-statement nested collision

我会明白这一点。目前正在编码初学者级游戏。我有2个列表来存储"对象"在游戏中。一个是钻石"钻石"可移动的块将移动到"目标"。一旦所有钻石都在目标上,水平应该改变。我目前正在使用" GameStates"加载每个级别。以下是我的代码片段,我遇到了问题。目前发生的事情是游戏将允许我推动钻石"进入"目标",但是一旦我这样做,游戏状态就不会改变。不确定我错过了什么 - 任何帮助表示赞赏。谢谢你的时间!

void Level1Update(KeyboardState cKB, KeyboardState oKB)
        {
            for (int i = 2; i < diamondlist.Count; i++)
            {
                if ((Goallist[i].Position == diamondlist[i].Position))
                {
                    CurrentGameState = GameState.Level2;
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

如果我理解正确,只有当所有的钻石和目标都在同一个瓷砖上时,你才想将当前的游戏状态设置到下一个级别。以下代码确保了。

void Level1Update(KeyboardState cKB, KeyboardState oKB)
{
    int i;
    for (i = 0; i < diamondlist.Count; ++i)
    {
        if (Goallist[i].Position != diamondlist[i].Position)
            break;
    }
    // When breaked off the loop, i is never equal to list count
    if (i == diamondList.Count)
        CurrentGameState = GameState.Level2;
}