【发布时间】:2018-06-04 14:42:41
【问题描述】:
我必须创建一个交通模拟器,我想在红绿灯不是红色时移动汽车(图片框),并在红绿灯处停下来。 红绿灯是 3 个变色的面板。
我的问题是我的车遇到红灯时没有停下来。我已经尝试过“pictureBox.Location.X”和“pictureBox.Left”,但它不起作用,pictureBox 只是继续移动。 当汽车遇到红绿灯时,我还尝试抛出一个消息框,以查看“pictureBox.Location.X”是否正常工作,但仍然没有。好像不认识这个功能。
我尝试使用面板和图片框制作交通灯,但仍然相同。
到目前为止,我将我的代码发送给您:
private void timerCar1_Tick(object sender, EventArgs e)
{
//timerCar2.Enabled = true;
if(panelRed.BackColor == Color.Red)
{
car1.Left -= 5;
}
/* ---> */ else if (car1.Location.X == panelGreen.Location.X & panelRed.BackColor == Color.Red)
{
car1.Left -= 0;
}
else if (panelGreen.BackColor == Color.Green)
{
car1.Left -= 20;
}
else if (panelOrange.BackColor == Color.Orange)
{
car1.Left -= 10;
}
}
【问题讨论】:
-
您发布的代码似乎超出了您的问题的合理范围。请阅读 How to Ask 以及如何制作 minimal reproducible example,提供 MCVE 可以帮助用户回答您的问题以及未来的用户与您的问题相关。
-
是时候学习调试代码了。设置断点,观察变量,一次执行一行代码,检查预期的代码分支到实际。根据需要进行修复。它也是过去阅读How to Ask 并采取tour 的时间。您不需要 3 个计时器来运行一个红绿灯。
-
似乎移动和停止车辆的算法在
timerCar1_Tick方法中。因此,您可以从您的问题中删除所有其他代码并解释:1) 您在该代码中尝试做什么2) 解释panelRed等是什么。然后我们将能够为您提供帮助。现在,我无法弄清楚您在该代码中在做什么。加上其余的代码只是噪音。 -
抱歉,打扰了,这是我第一次使用 Staack Overflow,我希望我现在说得更清楚了。我有三个面板一个接一个地用作交通灯,panelRed 是红色时的交通灯,它们三个都是垂直对齐的。因此,当 panelRed 为红色且汽车在面板下方时,我想(汽车)停下来。
标签: c# picturebox simulator traffic