Konrad-Adenauer-Gymnasium Langenfeld

Informatik Grundkurs Einführungsphase

Mittelstreifen zeichnen

In dieser Methode soll nun in die Strasse auf halber Höhe ein Mittelstreifen aus kleinen Rechtecken eingezeichnet.

Auch hier bietet sich eine Schleife an. Allerdings wissen wir nicht, wie viele Striche für den Mittelstreifen benötigt werden. Daher ist ein Zählschleife eher ungeeignet. Das Zeichnen der Mittelstreifen soll dann aufhören, wenn die Strasse zu Ende ist (sprich: wenn der Rand des Canvas erreicht ist).

Die Rechtecke werden natürlich mit drawRect gezeichnet, wobei die y-Position der oberen, linken Ecke sich aus dem Parameter yPos, der Mitte der Strasse und der Höhe der Streifen berechnet. Nur die x-Position der oberen, linken Ecke muss angepasst werden.

Dazu definieren wir eine Variable iStart, die zunächst auf xPos+5 gesetzt wird, damit der erste Streifen nicht direkt am linken Rand der Strasse beginnt.

Für unsere Problem verwenden wir dann eine WHILE-Schleife:

while (iStart < iBreite)
{
  grGrafik.drawRect(iStart,yPos+iyAbstand-iStrichbreite,iStrichlänge,iStrichbreite);
  iStart=iStart+ixAbstand+iStrichlänge;
}

Allgemeine Form der WHILE-Schleife:

while (<Bedingung>)
  <Anweisung>

Dabei wird die WHILE-Schleife dann ausgeführt, wenn die Bedingung erfüllt ist.

Das heißt in unserem Falle: solange die x-Position der Mittelstreifen (iStart) noch nicht die Breite des Canvas (iBreite) erreicht hat, wird der Schleifenkörper ausgeführt. Innerhalb des Schleifenkörpers wird zunächst das Rechteck gezeichnet und dann die neue x-Position des nächsten Streifens berechnet.

iStart=iStart+ixAbstand+iStrichlänge;

Der neue Streifen soll ausgehend von der alten Position (iStart) an derjenigen Position beginnen, die einerseits eine Strichlänge und dann noch einen festgelegten Abstand entfernt ist.

Insgesamt sieht die Methode MittelstreifenZeichnen dann folgendermaßen aus:

private void MittelstreifenZeichnen(int xPos, int yPos)
{
  int ixAbstand = 5
  int iStrichlänge = 12;
  int iStrichbreite = 2;
  int iyAbstand = 30;
  int iStart = xPos + 5;

  while (iStart < iBreite)
  {
    grGrafik.drawRect(iStart,yPos+iyAbstand-iStrichbreite,iStrichlänge,iStrichbreite);
    iStart=iStart+ixAbstand+iStrichlänge;
  }
}

Die WHILE-Schleife wird auch Schleife mit Anfangsbedingung genannt, da die Bedingung am vor Durchlaufen des Schleifenkörpers überprüft wird. Ist die Bedingung von vorne herein falsch, dann wir der Schleifenkörper gar nicht durchlaufen!


© Ralph-Erich Hildebrandt, 24. September 2006