Cra*_*son 4 c# loops for-loop conditional-statements
我目前正在开发一个非常基础的"推箱子"游戏.我正在尝试为循环做这个,但似乎无法完成它.我的目的是执行下面的移动代码的一个例子,我觉得我的语法是错误的添加另一个条件,它说"(diamondlist.Count)&(Playerlist.Count).我得到的错误是"运算符'&'不能应用于'bool'和'int'类型的操作数.我试图添加双"&&",这并没有解决它eitheir,任何帮助表示赞赏 - 谢谢: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--;
}
Run Code Online (Sandbox Code Playgroud)
p.s*_*w.g 11
有一些问题.
表达式i < (diamondlist.Count) & (Playerlist.Count)评估为:
(i < diamondlist.Count) & Playerlist.Count
Run Code Online (Sandbox Code Playgroud)
表达式(i < diamondlist.Count)的第一部分是a bool,但第二部分(Playerlist.Count)是a int.这是抱怨,因为&它不接受两种不同的类型.
然后,您尝试应用&哪个(对于整数)是一个按位AND运算符.如果两种类型相同,这将起作用,但它可能导致花费不必要的CPU周期,并且通常不在布尔表达式中使用.您可能想要使用&&- 逻辑或条件和运算符.
试试这个:
for (int i = 0; i < diamondlist.Count && i < Playerlist.Count; i++)
{
...
}
Run Code Online (Sandbox Code Playgroud)
简化测试条件又如何呢?
int maxValue = System.Math.Min(diamondlist.Count,Playerlist.Count);
for (int i = 0; i < maxValue; i++)
Run Code Online (Sandbox Code Playgroud)