需要for循环在继续之前检查2个条件

本文关键字:检查 2个 条件 继续 for 循环 需要 | 更新日期: 2023-09-27 18:11:38

我目前正在开发一款非常基础的"Sokoban"游戏。我试图使这个循环,但似乎不能完成它。我的目的是执行下面的移动代码的一个例子,我觉得我的语法是错误的,关于添加另一个条件,它说"(diamondlist.Count) &(Playerlist.Count)。我得到的错误是"操作符'&'不能应用于'bool'和'int'类型的操作数。我试过添加双"&&",这也不能解决它,任何帮助都很感激-谢谢:D

    protected override void Update(GameTime gameTime)
    {
        for (int i = 0; i < (diamondlist.Count) & (Playerlist.Count); i++)
        {
            if ((Playerlist[i].Position == diamondlist[i].Position) && kb_old.IsKeyDown(Keys.W))
            {
                if (currentMap.isWalkable(new Point(diamondlist[i].m_position.X, diamondlist[i].m_position.Y - 1)))
                    diamondlist[i].m_position.Y--;
            }

需要for循环在继续之前检查2个条件

有几个问题。

  1. 表达式i < (diamondlist.Count) & (Playerlist.Count)求值为:

    (i < diamondlist.Count) & Playerlist.Count
    

    表达式的第一部分(i < diamondlist.Count)是bool,而第二部分(Playerlist.Count)是int。它在抱怨,因为&不接受两种不同的类型。

  2. 然后尝试应用&(对于整数)是位与运算符。如果这两种类型是相同的,这将工作,但它可能导致花费不必要的CPU周期,通常不用于布尔表达式。您可能想使用&&——逻辑或条件和操作符。

试试这个:

for (int i = 0; i < diamondlist.Count && i < Playerlist.Count; i++)
{
    ...
}

如何简化您的测试条件?

int maxValue = System.Math.Min(diamondlist.Count,Playerlist.Count);
for (int i = 0; i < maxValue; i++)

每个检查都是相互独立的。你必须明确你要检查什么。当你说"小于钻石列表。"Count和playerList。Count"你真正的意思是"i less than diamondlist。".

for (int i = 0; (i < diamondlist.Count) && (i < Playerlist.Count); i++)
....
for (int i = 0; i < (diamondlist.Count) && i < (Playerlist.Count); i++)

我不知道你到底想要什么,但我认为这就是你想要的:

for (int I = 0;我& lt;(diamondlist。数,,我& lt;Playerlist.Count;我+ +)

你可以试试:for (int i = 0; i < (diamondlist.Count) & i < (Playerlist.COunt); i++) .

似乎你得到的错误是表明i < (diamondlist.Count) & (Playerlist.Count)正在执行做比较i < (diamondlist.Count)和做&(Playlist.Count),这是一个int。

如果您想检查这两个条件,那么它看起来像这样:

for (int i = 0; i < diamondlist.Count && i < Playerlist.Count; i++) ...

,,是逻辑与运算符。,

为位与操作符。

把它想象成一台电脑。它需要一个值为真或假的东西。在英语中,你有:

IF (i is less than this) AND (this)

它不能计算第二个表达式,因为没有进行比较(尽管对人类来说似乎有)。所以你必须把它写得更宽一些,然后写:

IF (i is less than this) AND (i is less than this)