Zur Themenübersicht        

Autos und Ampeln Aufg.4

Aufgabe 4: eine Ampel am richtigen Ort

Das Auto soll bei rot langsamer fahren, wenn es sich in einem Bereich bis zu 100 Pixeln vor der Ampel befindet. Direkt vor einer roten Ampel soll es natürlich stehen bleiben.

 

Lösung als Struktogramm und im Quellcode





repeat
   if Ampel1.AmpelFarbe = gruen then
       Auto1.fahre(1);
   else
      begin
          if (Auto1.xPosVorne > Ampel1.xPos - 1) and
             (Auto1.xPosVorne <= Ampel1.xPos)   then
             begin
               // tue nix
             end
          else
             begin
                if (Auto1.xPosVorne > Ampel1.xPos - 100) and
                   (Auto1.xPosVorne < Ampel1.xPos - 1) then
                   Auto1.fahre(0.2)
                else
                   Auto1.fahre(1);
             end
       end;
   if Auto1.xPosHinten > derBildschirm.breite then
      Auto1.setzePosition(-100, Auto1.yPosVorne);




   if dieTastatur.wurdegedrueckt then


     begin
       dieTastatur.weiter;
       Ampel1.schalte;
     end;


   dieUhr.warte(1);

Until dieMaus.istGedrueckt;


Erläuterungen

Genaue Erklärung zu: Wie realisiere ich einen Bereich von 100 Pixeln vor der Ampel ???
Die Spitze des Autos ist weiter rechts als 100 Pixel vor der Ampel 
und gleichzeitig (das heißt and)
weiter links als 1 Pixel vor der Ampel.
begin
   if (Auto1.xPosVorne > Ampel1.xPos - 100) and

      (Auto1.xPosVorne < Ampel1.xPos - 1) then
      Auto1.fahre(0.2)
   else
      Auto1.fahre(1);
end
Wir ersetzen also:
          if  Auto1.xPosVorne = Ampel1.xPos    then
analog durch:
          if (Auto1.xPosVorne > Ampel1.xPos - 1) and
             (Auto1.xPosVorne <= Ampel1.xPos)   then