【发布时间】:2010-01-16 06:10:49
【问题描述】:
我已经尝试向其他人解释我想要做什么,但失败了。因此,如果您不介意的话,我将向您展示代码并尝试解释一下。
if (MovePetMoving)
{
if (MovePetSlope[0] > 0)
{
if (MovePetSlope[1] > 0 && Convert.ToDouble(pictureBoxPet.Location.X) + MovePetSlope[0] <= MovePetTarget[0] && Convert.ToDouble(pictureBoxPet.Location.Y) + MovePetSlope[1] <= MovePetTarget[1])
{
MovePetWorker(pictureBoxPet, pictureBoxPet.Location.X + MovePetSlope[0], pictureBoxPet.Location.Y + MovePetSlope[1]);
//MsgBox("MovePetSlope[0] > 0 and MovePetSlope[1] > 0", "");
}
else if (MovePetSlope[1] < 0 && Convert.ToDouble(pictureBoxPet.Location.X) + MovePetSlope[0] <= MovePetTarget[0] && Convert.ToDouble(pictureBoxPet.Location.Y) + MovePetSlope[1] >= MovePetTarget[1])
{
MovePetWorker(pictureBoxPet, pictureBoxPet.Location.X + MovePetSlope[0], pictureBoxPet.Location.Y + MovePetSlope[1]);
//MsgBox("MovePetSlope[0] > 0 and MovePetSlope[1] < 0", "");
}
else
{
MovePetMoving = false;
//MsgBox("Error", "");
}
}
else if (MovePetSlope[0] < 0)
{
if (MovePetSlope[1] > 0 && Convert.ToDouble(pictureBoxPet.Location.X) + MovePetSlope[0] >= MovePetTarget[0] && Convert.ToDouble(pictureBoxPet.Location.Y) + MovePetSlope[1] <= MovePetTarget[1])
{
MovePetWorker(pictureBoxPet, pictureBoxPet.Location.X + MovePetSlope[0], pictureBoxPet.Location.Y + MovePetSlope[1]);
//MsgBox("MovePetSlope[0] < 0 and MovePetSlope[1] > 0", "");
}
else if (MovePetSlope[1] < 0 && Convert.ToDouble(pictureBoxPet.Location.X) + MovePetSlope[0] >= MovePetTarget[0] && Convert.ToDouble(pictureBoxPet.Location.Y) + MovePetSlope[1] >= MovePetTarget[1])
{
MovePetWorker(pictureBoxPet, pictureBoxPet.Location.X + MovePetSlope[0], pictureBoxPet.Location.Y + MovePetSlope[1]);
//MsgBox("MovePetSlope[0] < 0 and MovePetSlope[1] < 0" + Convert.ToString(pictureBoxPet.Location.X) + MovePetSlope[0] + MovePetTarget[0], "");
}
else
{
MovePetMoving = false;
//MsgBox("Error", "");
}
}
}
}
就是这样。如果你想知道所有提到“宠物”的意思,我正在为我的小妹妹制作一个类似电子宠物(或者你拼写它)的游戏。
我遇到的问题是 MovePetSlope[1] 或 [0] 的值可以是正数或负数。我提出了一些适用于正值的比较,但没有一个适用于负值的比较。我相信在它目前的状态下,它根本不起作用。
任何帮助将不胜感激。
提前致谢!
【问题讨论】:
-
您到底想完成什么?不管是什么,我怀疑更多的 if 和 else 是答案。
-
我试图让图像在到达目标目的地后停止移动。对初始职位的修改;当前的代码确实有效,我正在考虑另一个我尝试过的代码。
-
一个字:重构。您拥有的代码很难使用、查看,因此容易出错。作为第一步,我将在初始 if 块之前分配并转换您正在比较的值。你会看到它更容易阅读,我毫不怀疑你会发现一个愚蠢的错误。
-
例如将 Convert.ToDouble(pictureBoxPet.Location.X) 更改为双倍 petLocX = Convert.ToDouble(pictureBoxPet.Location.X);如果 (...
标签: c# comparison move target