Hallo Vangola,

Machen wir das man lesbar:
Code:
  scanvorne();
  if (cm >= 10)
    {
      GoForward();
      delay(400);
    }
  else
    {
      Stop(); 
    }

  scanlinks();
  if (cm >= 10)
    {
      GoLeft();
      delay(300);
    }
  else
    {
      Stop();
    }

  scanrechts();
  if (cm3 >= 10)
    {
      GoRight();
      delay(300);
    }
  else
    {
      Stop();
    }

  scanvorne();
  if (cm <= 10)
    {
      GoBackward();
      delay(350);
    }
  else
    {
      Stop();
    }
Du machst eine Abfrage ob vorne frei ist, wenn frei fährst du 400ms geradeaus, wenn nicht wird gestoppt.
Dann fragst du links ab, fährst wenn frei.
Dann das selbe noch für rechts.
und nochmals geradeaus .....

1. Das zweite geradeaus kannst du streichen, das ganze wird in einer Schleife sein und dann fragst du 2x nach geradeaus ab.
2. Wenn vorne frei ist, brauchst du nicht nach links und rechts sehen. Dort wo jetzt Stop(); ist musst du direkt die anderen Abfragen einfügen.

Code:
  scanvorne();
  if (cm >= 10)
    {
      GoForward();
      delay(400);
    }
  else
    {
      Stop(); 

      scanlinks();
      if (cm >= 10)
        {
          GoLeft();
          delay(300);
        }
      else
        {
          Stop();

          scanrechts();
          if (cm3 >= 10)
            {
               GoRight();
               delay(300);
             }
          else
            {
               Stop();
            }
        }
    }

Allerdings hat dein Tierchen jetzt einen Linksdrall.
Da müsste man noch, z.B. mit einer Zufallsauswahl zwischen links und recht auswählen, wenn beides frei ist oder man fährt in die Richtung, in welcher mehr frei ist, jetzt wählst du nur die 10cm.

MfG Peter(TOO)