-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

これは、ブレークが for ループではなく「While ループ」を終了するためです...そして、while ループが 1 回だけ実行されると推測していますか? なぜその間に必要なのですか?これを試して

 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 に答える