我必须创建一个交通模拟器,我想在交通信号灯不是红色的情况下移动一辆汽车(图片框),并在红绿灯处停在红绿灯处。红绿灯是3个改变颜色的面板。
我的问题是我的车在遇到红色交通信号灯时没有停下来。我试过“pictureBox.Location.X”和“pictureBox.Left”,但它只是不起作用,pictureBox继续移动。当汽车遇到红绿灯时,我也试过扔一个messageBox,看看“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;
}
}
你用 &。
else if (car1.Location.X == panelGreen.Location.X & panelRed.BackColor == Color.Red)
我heard这可能会导致意想不到的行为。你的意思是使用逻辑“AND”(&&)吗?
else if (car1.Location.X == panelGreen.Location.X && panelRed.BackColor == Color.Red)
我认为在c#中逻辑“AND”ypu可以同时使用&和&&。通过将像素移动从+ = 20更改为+ = 3来解决问题,所以我认为我的图片框不会满足我设置为停止点的点,因为它移动了20个20像素。