我正在使用C#编程一个机器人并使用数字罗盘作为方向。我遇到的问题是当它进入它的回转循环时,它不会从它回来。 DragonBoard是我的控制器,我也在说话。这应该如何工作给定设定的标题和时间,它向左或向右转,直到标题匹配然后向前驱动一段时间。我遇到的问题是它会继续前进但是当它进入转弯循环时,它会停留在那里,并且不会返回到循环。任何帮助将不胜感激。
private void drive(int heading, int time)//going to start from kit
{
int i;
for (i = 0; i < time;i++ )
{
DragonBoard.Write("w");//go forward
while (int.Parse(bearingTxt.Text) - 1 > heading)
{
DragonBoard.Write("a");//turn left
break;
}
while (int.Parse(bearingTxt.Text) +1 < heading)
{
DragonBoard.Write("d");//turn right
break;
}
}
DragonBoard.Write(" ");
if (listBox1.SelectedIndex < listBox1.Items.Count - 1)
{
listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
decision();
}
答案 0 :(得分:1)
这是因为你的中断退出“While循环”而不是for循环......我猜你的while循环只执行一次?为什么你需要的呢?试试这个
for (i = 0; i < time;i++ )
{
DragonBoard.Write("w");//go forward
if (int.Parse(bearingTxt.Text) - 1 > heading)
{
DragonBoard.Write("a");//turn left
break;
}
else (int.Parse(bearingTxt.Text) +1 < heading)
{
DragonBoard.Write("d");//turn right
break;
}
}
答案 1 :(得分:1)
我希望在那里不需要循环;如果有条件,也不需要休息;修改您的代码,如下所示:
for (i = 0; i < time;i++ )
{
DragonBoard.Write("w");//go forward
if(int.Parse(bearingTxt.Text) - 1 > heading)
DragonBoard.Write("a");//turn left
else if(int.Parse(bearingTxt.Text) +1 < heading)
DragonBoard.Write("d");//turn right
}