C# 根据if语句更改游戏状态?

C# 根据if语句更改游戏状态?,c#,if-statement,nested,collision,C#,If Statement,Nested,Collision,我会说到点子上的。有一个问题与初级游戏即时通讯编码的时刻。我有两个列表来存储游戏中的“对象”。一种是“钻石”可推块,可移动到“目标”上。一旦所有钻石都在目标上,水平应该会改变。我目前正在使用“游戏状态”加载每个关卡。下面是我遇到问题的代码片段。目前的情况是,游戏将允许我将“钻石”推到“目标”上,但一旦我这样做,游戏状态将不会改变。不知道我错过了什么-任何帮助都是感激的。谢谢你抽出时间 void Level1Update(KeyboardState cKB, KeyboardState oKB)

我会说到点子上的。有一个问题与初级游戏即时通讯编码的时刻。我有两个列表来存储游戏中的“对象”。一种是“钻石”可推块,可移动到“目标”上。一旦所有钻石都在目标上,水平应该会改变。我目前正在使用“游戏状态”加载每个关卡。下面是我遇到问题的代码片段。目前的情况是,游戏将允许我将“钻石”推到“目标”上,但一旦我这样做,游戏状态将不会改变。不知道我错过了什么-任何帮助都是感激的。谢谢你抽出时间

void Level1Update(KeyboardState cKB, KeyboardState oKB)
        {
            for (int i = 2; i < diamondlist.Count; i++)
            {
                if ((Goallist[i].Position == diamondlist[i].Position))
                {
                    CurrentGameState = GameState.Level2;
                }
            }
        }
void level1更新(键盘状态cKB、键盘状态oKB)
{
for(int i=2;i
如果我理解正确,只有当所有方块和目标都在同一个牌上时,您才希望将当前游戏状态设置为下一个级别。下面的代码确保了这一点

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;
}
void level1更新(键盘状态cKB、键盘状态oKB)
{
int i;
对于(i=0;i
我看到的一个潜在问题是在您的if条件下,您确定菱形位置将完全等于目标位置吗?多描述一下游戏会有所帮助。地图基本上是一个16x16的平铺布局。游戏可以移动N、SE或W一个平铺。当玩家与钻石碰撞时,钻石将在相应方向上移动一个瓷砖空间。目前,“目标”也在一块瓦片中。我的目标是,一旦钻石与目标在同一块牌上,下一个游戏状态应该加载-如果这有意义的话?为什么循环从i=2开始?你知道目标[i]会被钻石[i]覆盖吗,或者任何钻石会进入任何目标吗?嗯,每个“地图”都会加载到不同的游戏状态。如果你愿意的话,每个“状态”上只会产生一定数量的钻石。我想如果我没有只在第一个关卡进行循环,并且只控制在该关卡上生成的2颗钻石,那么它就不会工作了?从技术上讲,任何钻石都应该能够进入任何目标,那么一旦所有目标都被覆盖,游戏状态就应该改变——这有意义吗?:/-抱歉,就像我说的,这还是比较新的。更新:changed I=0-菜鸟错误哈哈。现在,一旦其中一颗钻石就位,游戏状态就会改变。但我需要游戏等到州里所有的钻石都到位:S