-1

我正在用 C# 对机器人进行编程,并使用数字罗盘来指示方向。我遇到的问题是当它进入它的转弯循环时,它不会从它里面回来。DragonBoard 是我的控制器,我也在说。给定设定的航向和时间,它应该如何工作,它向左或向右转,直到航向匹配,然后向前行驶一段设定的时间。我遇到的问题是它会继续前进,但是当它进入转弯循环时,它会停留在那里,并且不会返回到 for 循环。任何帮助,将不胜感激。

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();
    }
4

2 回答 2

1

这是因为你的 break 退出了“While 循环”而不是 for 循环......我猜你的 while 循环只执行一次?为什么你需要 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;
    }
}
于 2013-08-13T01:11:20.740 回答
1

我希望那里不需要while循环;在 if 条件下也不需要中断;如下修改您的代码,这应该可以工作:

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
     }
于 2013-08-13T07:17:56.957 回答