Galileo Computing Spielend Visual Basic lernen Für Programmieranfänger von 12 bis 99 Jahren Bearbeitet von André Willms 1. Auflage 2011. Taschenbuch. 396 S. Paperback ISBN 978 3 8362 1828 3 Format (B x L): 17 x 17,2 cm Weitere Fachgebiete > EDV, Informatik > Programmiersprachen: Methoden > Microsoft Programmierung schnell und portofrei erhältlich bei Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft. Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergänzt wird das Programm durch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr als 8 Millionen Produkte. André Willms Spielend Visual Basic lernen oder wie die Bugs das Laufen lernen Auf einen Blick 1 Erste Vorbereitungen .......................................................... 13 2 Anweisungen und Algorithmen .......................................... 37 3 Prozeduren und Module ..................................................... 61 4 Verzweigungen und Wiederholungen ................................ 77 5 Zeichnen ............................................................................. 101 6 Variablen und Rechnen ....................................................... 113 7 Prozeduren II und Funktionen ............................................ 133 8 Verzweigungen II & Schleifen ............................................. 149 9 Spielereien I ........................................................................ 179 10 Arrays .................................................................................. 193 11 Zeichen und Zeichenketten ................................................ 207 12 Strukturen ........................................................................... 223 13 Klassen ............................................................................... 231 14 Spielereien II ....................................................................... 243 15 Windows-Anwendungen .................................................... 275 16 Extrem-Krabbeln für Fortgeschrittene ............................... 291 Inhalt 1 Erste Vorbereitungen .................................................................. 13 1.1 13 17 19 22 22 23 24 24 25 26 28 30 31 31 1.2 1.3 1.4 1.5 1.6 1.7 1.8 2 Visual Basic installieren ........................................................... 1.1.1 Der erste Start ........................................................... 1.1.2 Visual Basic registrieren ............................................. Einstellungen .......................................................................... 1.2.1 Einen Ordner vorbereiten .......................................... 1.2.2 Erweiterte Einstellungen aktivieren ............................ 1.2.3 Programmcodedarstellung ändern ............................. 1.2.4 Wir wollen es strikt ................................................... 1.2.5 Projekteinstellungen .................................................. Ein Projekt erstellen ................................................................ Die Datei »Scara.dll« einbinden .............................................. Ein Projekt schließen .............................................................. Ein bestehendes Projekt öffnen ............................................... 1.6.1 Das Projekt über die Startseite öffnen ....................... 1.6.2 Das Projekt über »Zuletzt geöffnete Projekte« öffnen ........................... 1.6.3 Das Projekt über den Menüpunkt »Projekt öffnen« aufrufen .......................................... Wenn es nicht klappt .............................................................. 1.7.1 Der Projektmappen-Explorer ist weg ......................... 1.7.2 Bei der Erstellung eines Projekts fehlt die Auswahl des Speicherorts .................................... Zusammenfassung .................................................................. 32 32 34 34 34 35 Anweisungen und Algorithmen ................................................ 37 2.1 2.2 37 41 42 43 44 46 49 50 52 2.3 Der Algorithmus ..................................................................... Das erste Programm ............................................................... 2.2.1 Module ..................................................................... 2.2.2 Die Hauptprozedur .................................................... Scara lernt laufen .................................................................... 2.3.1 Das Programm starten ............................................... 2.3.2 Die Übung korrekt beenden ...................................... 2.3.3 Dem Käfer Beine machen .......................................... 2.3.4 Vermeide den Abgrund ............................................. 5 Inhalt 2.4 2.5 Fehler finden .......................................................................... Textausgabe in Visual Basic .................................................... 2.5.1 Aufbau der Ausgabe .................................................. 2.5.2 Sprache und Bibliothek ............................................. 2.5.3 Vereinfachungen ....................................................... 2.5.4 Ausgabe in Kombination mit der »Scara.dll« .............. Zusammenfassung .................................................................. 52 55 56 58 58 59 60 Prozeduren und Module ............................................................. 61 3.1 3.2 3.3 3.4 3.5 Scara lernt die Drehung .......................................................... Anweisungen gruppieren ........................................................ Namensregeln ........................................................................ Ein weiteres Anwendungsbeispiel ........................................... Aufteilen in Module ............................................................... 3.5.1 Ein neues Modul hinzufügen ..................................... 3.5.2 Ein vorhandenes Modul hinzufügen .......................... Übungen ................................................................................ Zusammenfassung .................................................................. 62 63 66 67 69 69 72 74 75 Verzweigungen und Wiederholungen ..................................... 77 4.1 4.2 4.3 4.4 4.5 Die Wenn-dann-Verzweigung ................................................ Vergleichsoperatoren ............................................................. Die Entweder-oder-Verzweigung ............................................ Übungen I .............................................................................. Wiederholungen ..................................................................... 4.5.1 Die einfachste Art der Wiederholung: »while«............ 4.5.2 Auf immer und ewig: Endlosschleifen ........................ Kommentare .......................................................................... 4.6.1 Kommentieren von Anweisungen .............................. 4.6.2 Ganze Zeilen kommentieren ...................................... 4.6.3 Kommentare zum Ausklammern von Anweisungen .... Übungen II ............................................................................. Zusammenfassung .................................................................. 80 82 83 87 88 88 90 91 91 92 93 93 99 Zeichnen ........................................................................................ 101 5.1 5.2 101 102 2.6 3 3.6 3.7 4 4.6 4.7 4.8 5 6 Das Zeichenbrett .................................................................... Das Koordinatensystem .......................................................... Inhalt 5.3 Die Zeichenfunktionen ........................................................... 5.3.1 Zeichnen eines Punktes ............................................. 5.3.2 Zeichnen einer Linie .................................................. 5.3.3 Zeichnen einer Ellipse ................................................ 5.3.4 Zeichnen eines Dreiecks ............................................ 5.3.5 Zeichnen eines Rechtecks .......................................... 5.3.6 Zeichnen eines Vierecks ............................................ 5.3.7 Zeichnen von Text ..................................................... 5.3.8 Das Zeichenbrett löschen .......................................... 5.3.9 Die Liniendicke angeben ........................................... Die Zeichenfarbe definieren .................................................... 5.4.1 Das Farbsystem RGB ................................................. 5.4.2 Die Prozeduren zum Setzen der Farbe ....................... 5.4.3 Die Funktionen zum Auslesen der Farbe .................... Zusammenfassung .................................................................. 103 104 104 105 106 107 108 108 109 109 110 110 111 112 112 Variablen und Rechnen ............................................................... 113 6.1 6.2 6.3 Die Grundrechenarten ............................................................ Der Restwertoperator ............................................................. Variablen ................................................................................ 6.3.1 Eine Variable definieren ............................................ 6.3.2 Variablen im Einsatz .................................................. 6.3.3 Variablen für Zeichenketten ...................................... Die Eingabe ............................................................................ 6.4.1 Programmaufbau ....................................................... 6.4.2 Umwandeln in numerische Werte ............................. Zahlen mit Nachkommastellen ................................................ Ungültige Eingaben ................................................................ Für Fortgeschrittene ............................................................... 6.7.1 Zusammengesetzte Zuweisungsoperatoren ................ 6.7.2 Formatierte Ausgabe ................................................. Übungen ................................................................................ Zusammenfassung .................................................................. 114 115 115 118 120 121 121 121 122 125 126 127 127 128 130 132 Prozeduren II und Funktionen .................................................. 133 7.1 7.2 7.3 134 135 138 5.4 5.5 6 6.4 6.5 6.6 6.7 6.8 6.9 7 Lokale Variablen ..................................................................... Anweisungen flexibler gestalten mit Parametern ..................... Prozeduren mit Parametern .................................................... 7 Inhalt 7.4 7.5 7.6 7.7 8 Funktionen ............................................................................. Funktionen mit Parametern .................................................... Übungen ................................................................................ Zusammenfassung .................................................................. 140 142 143 147 Verzweigungen II & Schleifen ................................................... 149 8.1 Das Formulieren von »Und« und »Oder« ................................. 8.1.1 Verschachtelte Verzweigungen .................................. 8.1.2 Logisches »Und« ........................................................ 8.1.3 Logisches »Oder« ...................................................... 8.1.4 Exklusives »Oder« ...................................................... Die logische Verneinung ......................................................... Fallunterscheidung ................................................................. Der Datentyp »Boolean« ......................................................... Erst machen, dann prüfen: »Do ... While« ............................... Zählen mit Schleifen ............................................................... Von vorn bis hinten: »For« ...................................................... Schleifen verschachteln .......................................................... Ein paar Beispiele ................................................................... 8.9.1 Zeichnen einer Röhre ................................................ 8.9.2 Ein Effekt mit Ellipsen ............................................... 8.9.3 Farben mischen ......................................................... Für Fortgeschrittene ............................................................... 8.10.1 Vereinfachung von Bedingungen ............................... 8.10.2 Vereinfachung von Verzweigungen ........................... 8.10.3 Kurzschlüsse bei den logischen Operatoren ............... 8.10.4 Schleifenabbruch ....................................................... Übungen ................................................................................ Zusammenfassung .................................................................. 149 149 151 152 153 153 153 156 157 159 161 163 164 164 165 167 169 169 170 170 172 173 178 Spielereien I .................................................................................. 179 9.1 179 179 180 181 182 182 185 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 9 9.2 8 Ein Zahlenratespiel ................................................................. 9.1.1 Zufallszahlen ............................................................. 9.1.2 Die Spielschleife ........................................................ 9.1.3 Spielerhilfen hinzufügen ............................................ Das Zwölferspiel ..................................................................... 9.2.1 Die Darstellung des Spielbretts ................................. 9.2.2 Der menschliche Spieler ............................................ Inhalt 9.2.3 Der Computerspieler ................................................. 9.2.4 Die Spielschleife ........................................................ 9.2.5 Ein unschlagbarer Computerspieler ............................ Übungen ................................................................................ 185 186 188 190 10 Arrays ............................................................................................. 193 9.3 10.1 10.2 10.3 Mehrere Werte speichern mit Arrays ...................................... Arbeiten mit Arrays ................................................................ Die Liste ................................................................................. 10.3.1 Die Größe einer Liste ................................................. 10.3.2 Elemente entfernen ................................................... 10.3.3 Listen als Parameter .................................................. Listen und Arrays als Rückgabewert ........................................ Übungen ................................................................................ Zusammenfassung .................................................................. 193 196 199 201 201 201 202 203 206 11 Zeichen und Zeichenketten ....................................................... 207 10.4 10.5 10.6 11.1 Ein Zeichen speichern ............................................................. 11.1.1 Zeichen sind Werte, Werte sind Zeichen ................... 11.1.2 Die Zeichenart feststellen .......................................... 11.1.3 Groß- und Kleinbuchstaben ....................................... Speichern von Zeichenketten .................................................. 11.2.1 Mit Strings arbeiten ................................................... 11.2.2 Zeichenketten verändern ........................................... Texte verschlüsseln ................................................................. 11.3.1 Die Caesar-Verschlüsselung ....................................... 11.3.2 Ein Zeichen verschlüsseln .......................................... 11.3.3 Ein Zeichen entschlüsseln .......................................... 11.3.4 Einen Text verschlüsseln ............................................ 11.3.5 Einen Text entschlüsseln ............................................ 11.3.6 Das Hauptprogramm ................................................. Übungen ................................................................................ Zusammenfassung .................................................................. 207 207 208 210 210 210 212 214 214 215 216 217 218 218 219 221 12 Strukturen ..................................................................................... 223 11.2 11.3 11.4 11.5 12.1 12.2 Definition einer Struktur ......................................................... Verwendung von Strukturen ................................................... 224 226 9 Inhalt 12.2.1 Strukturen und Arrays bzw. Listen ............................. 12.2.2 Strukturen als Prozedur-/Funktionsparameter............. Ein Beispiel ............................................................................. Übungen ................................................................................ Zusammenfassung .................................................................. 226 227 228 229 230 13 Klassen ........................................................................................... 231 12.3 12.4 12.5 13.1 13.2 13.3 13.4 13.5 13.6 13.7 Definition einer Klasse ............................................................ Zugriffsrechte ......................................................................... Methoden .............................................................................. Konstruktoren ........................................................................ Zugriffsmethoden ................................................................... Übungen ................................................................................ Zusammenfassung .................................................................. 232 234 235 236 239 240 241 14 Spielereien II ................................................................................. 243 14.1 14.2 14.3 10 Galgenmännchen .................................................................... 14.1.1 Das Grundgerüst der Klasse ....................................... 14.1.2 Der Konstruktor ........................................................ 14.1.3 Das Zeichnen des Spielfeldes ..................................... 14.1.4 Das Prüfen eines Zeichens ......................................... 14.1.5 Das Prüfen auf Spielende .......................................... 14.1.6 Die Spielschleife ........................................................ Mastermind ............................................................................ 14.2.1 Der Farbcode ............................................................ 14.2.2 Der Konstruktor mit Codeübergabe ........................... 14.2.3 Der parameterlose Konstruktor ................................. 14.2.4 Die Darstellung des Codes ........................................ 14.2.5 Die Codeauswertung ................................................. 14.2.6 Lösung gefunden? ..................................................... 14.2.7 Die Klasse »Mastermind« .......................................... 14.2.8 Der Konstruktor ........................................................ 14.2.9 Die Darstellung ......................................................... 14.2.10 Der Mensch spielt ..................................................... 14.2.11 Der Computer rät ...................................................... Übungen ................................................................................ 243 243 244 245 248 251 252 253 253 253 257 258 260 262 263 263 264 266 268 273 Inhalt 15 Windows-Anwendungen ........................................................... 15.1 15.2 275 Eine Windows Forms-Anwendung erstellen ............................ Eigenschaften visueller Elemente ändern ................................. 15.2.1 Die Eigenschaft (Name) ............................................. 15.2.2 Die Eigenschaften des Fensters .................................. Interaktive Buttons erstellen ................................................... 15.3.1 Die Toolbox .............................................................. 15.3.2 Ereignisse .................................................................. 15.3.3 Die Messagebox ........................................................ Text einfügen mit Labels ......................................................... Textboxen für Eingaben erstellen ............................................ Ein Beispiel für eine Anwendung ............................................ 275 277 278 279 280 281 283 285 286 287 288 16 Extrem-Krabbeln für Fortgeschrittene .................................... 291 15.3 15.4 15.5 15.6 16.1 16.2 A Die Übungen .......................................................................... Die Lösungen ......................................................................... 291 299 Anhang ................................................................................ 323 A.1 A.2 Ältere Frameworks unterstützen ............................................. Starten ohne Debugging ......................................................... A.2.1 Starten ohne Debugging in der Symbolleiste ............. A.2.2 Starten ohne Debugging in der Menüleiste ................ Lösungen ................................................................................ A.3.1 Lösungen zu Kapitel 3 ............................................... A.3.2 Lösungen zu Kapitel 4 ............................................... A.3.3 Lösungen zu Kapitel 6 ............................................... A.3.4 Lösungen zu Kapitel 7 ............................................... A.3.5 Lösungen zu Kapitel 8 ............................................... A.3.6 Lösungen zu Kapitel 9 ............................................... A.3.7 Lösungen zu Kapitel 10 ............................................. A.3.8 Lösungen zu Kapitel 11 ............................................. A.3.9 Lösungen zu Kapitel 12 ............................................. A.3.10 Lösungen zu Kapitel 13 ............................................. A.3.11 Lösungen zu Kapitel 14 ............................................. Hinweise zu den Daten auf der DVD ...................................... 323 325 325 328 328 328 332 342 345 353 363 368 376 382 385 388 392 Index ........................................................................................................ 393 A.3 A.4 11 Dieses Kapitel behandelt das Zeichenbrett der Datei »Scara.dll«, damit im weiteren Verlauf des Buches interessantere Ausgaben programmiert werden können. 5 Zeichnen Mit dem Käfer lassen sich sehr schön algorithmische Probleme nachbilden. Um aber auch arithmetische Ergebnisse oder später Datenstrukturen möglichst einfach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen Anweisungen gezeichnet werden. Es wird im weiteren Verlauf des Buches öfter die Grundlage für unsere grafische Ausgabe sein. 5.1 Das Zeichenbrett Um ein Zeichenbrett zu erhalten, rufst du die Prozedur Zeichenbrett.Oeffnen auf. In ihren runden Klammern gibst du die Breite und Höhe des gewünschten Zeichenbretts in Pixeln an. Listing 5.1 zeigt die Anwendung. Module Hauptmodul Sub Main() Zeichenbrett.Oeffnen(600, 400) End Sub End Module Listing 5.1 Das Erzeugen eines Zeichenbretts Das obige Beispiel erzeugt ein Zeichenbrett von 600 Pixeln Breite und 400 Pixeln Höhe. Wie du sicher weißt, sind Pixel Bildpunkte, aus denen alles zusammengesetzt ist, was du auf deinem Monitor siehst. Damit besitzt unser erzeugtes Zeichenbrett (das in Abbildung 5.1 zu sehen ist) 600 mal 400, also 240.000 Bildpunkte oder Pixel. 101 5 Zeichnen Abbildung 5.1 Das erzeugte Zeichenbrett Geschlossen wird das Zeichenbrett durch Schließen des Fensters oder durch Drücken von (Esc), wenn das Zeichenbrett aktiv ist. 5.2 Das Koordinatensystem Vermutlich weißt du bereits, was ein Koordinatensystem ist. Wenn nicht, wird es hier kurz erklärt. Ein Fenster besitzt zwei Achsen. Die X-Achse beginnt in der oberen linken Ecke und erstreckt sich waagerecht bis zum rechten Rand des Fensters. Die Y-Achse beginnt ebenfalls oben links, erstreckt sich aber senkrecht bis zum unteren Ende des Fensters. Hier unterscheidet sich das Koordinatensystem leicht von dem, was du wahrscheinlich aus dem Matheunterricht kennst. In der Mathematik wächst die Y-Achse nämlich nach oben, hier aber wächst sie nach unten. Damit hat die obere linke Ecke (dort, wo sich die beiden Achsen treffen) den XWert 0 und den Y-Wert 0. Abbildung 5.2 zeigt unser Zeichenbrett mit eingezeichneten Achsen.Über diese beiden Achsen besitzt jedes Pixel eine eindeutige Position. Die Position wird dabei immer als Zahlenpaar in der Reihenfolge (x,y) angegeben. 102 Die Zeichenfunktionen X Y Abbildung 5.2 Das Koordinatensystem eines Fensters Mit den Ausmaßen unseres aktuellen Zeichenbretts (Breite von 600 Pixeln, Höhe von 400 Pixeln) sitzt beispielsweise der Punkt in der Zeichenbrettmitte an Position (300,200), hat also einen X-Wert von 300 und einen Y-Wert von 200. Abbildung 5.3 stellt die Position grafisch dar. X=300 Y=200 Abbildung 5.3 Die Position des Pixels in der Mitte 5.3 Die Zeichenfunktionen Jetzt fehlen nur noch die Prozeduren, mit denen wir auf dem Zeichenbrett zeichnen können. 103 5.3 5 Zeichnen 5.3.1 Zeichnen eines Punktes Mit der Prozedur ZeichnePunkt wird ein Punkt an die angegebene Position in der aktuellen Zeichenfarbe gesetzt. Der allgemeine Aufbau ist: Zeichenbrett.ZeichnePunkt(XPosition, YPosition) Dabei müssen für XPosition und YPosition natürlich konkrete Werte angegeben werden. Listing 5.2 zeigt als Beispiel das Zeichnen des Punktes in der Zeichenbrettmitte, wie oben besprochen. Module Hauptmodul Sub Main() Zeichenbrett.Oeffnen(600, 400) Zeichenbrett.ZeichnePunkt(300, 200) End Sub End Module Listing 5.2 Das Zeichnen des Punktes in der Zeichenbrettmitte 5.3.2 Zeichnen einer Linie Die Prozedur ZeichneLinie zeichnet eine Linie zwischen zwei Punkten in der aktuellen Zeichenfarbe. Zeichenbrett:ZeichneLinie(XStart, YStart, XEnde, YEnde) Die Werte XStart und YStart entsprechen dabei den Koordinaten des Startpunktes und XEnde und YEnde den Koordinaten des Endpunktes. Listing 5.3 bestellt schöne Grüße von Zorro (siehe Abbildung 5.4). Module Hauptmodul Sub Main() Zeichenbrett.Oeffnen(600, 400) Zeichenbrett.ZeichneLinie(50, 50, 350, 50) Zeichenbrett.ZeichneLinie(350, 50, 50, 350) Zeichenbrett.ZeichneLinie(50, 350, 350, 350) End Sub End Module Listing 5.3 Das Zeichen des Zorro 104 Die Zeichenfunktionen Abbildung 5.4 Das Zeichen des Zorro 5.3.3 Zeichnen einer Ellipse Mit der Prozedur ZeichneEllipse lässt sich eine Ellipse zeichnen. Sie ist so aufgebaut: Zeichenbrett.ZeichneEllipse(X, Y, Breite, Hoehe) Die Angaben zum Zeichnen einer Ellipse beziehen sich eigentlich auf ein unsichtbares Rechteck, in das die Ellipse gezeichnet wird. Abbildung 5.5 zeigt den Sachverhalt. Das eigentlich unsichtbare Rechteck ist gestrichelt eingezeichnet. Die Koordinaten X und Y beziehen sich auf die Position der oberen linken Ecke des Rechtecks. Die Werte Breite und Hoehe definieren die Breite und Höhe des Rechtecks. Die tatsächlich gezeichnete Ellipse wird dann so gezeichnet, dass sie das Rechteck an allen vier Seiten berührt. X,Y Breite Höhe Abbildung 5.5 Das Zeichnen einer Ellipse 105 5.3 5 Zeichnen Zum Zeichnen einer ausgefüllten Ellipse gibt es noch die Prozedur ZeichneGefuellteEllipse, die dieselben Parameter besitzt wie ZeichneEllipse. 5.3.4 Zeichnen eines Dreiecks Ein Dreieck kann mit der Prozedur ZeichneDreieck gezeichnet werden. Zeichenbrett.ZeichneDreieck(X1, Y1, X2, Y2, X3, Y3) Es sollte nicht überraschen, dass ein Dreieck drei Ecken besitzt. Die Positionen dieser drei Ecken werden über die Punkte (X1,Y1), (X2,Y2) und (X3,Y3) definiert, die in den runden Klammern der Prozedur – wie oben aufgeführt – angegeben werden müssen. Die Reihenfolge der Punkte ist egal. Das Programm in Listing 5.4 zeichnet eine Sanduhr, allerdings ohne Sand, wie in Abbildung 5.6 zu sehen ist. Module Hauptmodul Sub Main() Zeichenbrett.Oeffnen(600, 400) Zeichenbrett.ZeichneDreieck(200, 100, 400, 100, 300, 200) Zeichenbrett.ZeichneDreieck(300, 200, 200, 300, 400, 300) End Sub End Module Listing 5.4 Das Zeichnen einer Sanduhr Abbildung 5.6 Eine gezeichnete Sanduhr 106 Die Zeichenfunktionen Ausgefüllte Dreiecke können mit der Prozedur ZeichneGefuelltesDreieck gezeichnet werden. Ihre Parameter sind identisch mit ZeichneDreieck. 5.3.5 Zeichnen eines Rechtecks Weil ein Rechteck problemlos selbst mit vier Linien gezeichnet werden kann, existiert nur die Möglichkeit, ein ausgefülltes Rechteck zu zeichnen: Zeichenbrett.ZeichneGefuelltesRechteck(X,Y,Breite,Hoehe) Ich hatte in 5.3.3 über das Zeichnen einer Ellipse gesagt, dass ihre Ausmaße über ein unsichtbares Rechteck definiert werden, für das die Position der oberen linken Ecke sowie dessen Breite und Höhe angegeben werden. Das Gleiche gilt für das Zeichnen eines Rechtecks – nur dass jetzt das Rechteck glücklicherweise nicht mehr unsichtbar ist. Listing 5.5 erstellt eine Anordnung von drei Rechtecken, Abbildung 5.7 zeigt sie. Module Hauptmodul Sub Main() Zeichenbrett.Oeffnen(600, 400) Zeichenbrett.ZeichneGefuelltesRechteck(25, 25, 50, 50) Zeichenbrett.ZeichneGefuelltesRechteck(75, 75, 100, 100) Zeichenbrett.ZeichneGefuelltesRechteck(175, 175, 200, 200) End Sub End Module Listing 5.5 Das Zeichnen von Rechtecken Abbildung 5.7 Ein Rechteck-Ensemble 107 5.3 5 Zeichnen 5.3.6 Zeichnen eines Vierecks Zum Zeichnen eines allgemeinen ausgefüllten Vierecks existiert die Prozedur ZeichneGefuelltesViereck. Diese ist ähnlich aufgebaut wie ZeichneGefuelltesDreieck, nur dass sie vier Koordinatenpaare übergeben bekommt: Zeichenbrett.ZeichneGefuelltesViereck(X1, Y1, X2, Y2, X3, Y3, X4, Y4) Aus Platzgründen habe ich die Prozedur in der Parameterliste umbrochen. Das hat allein optische Gründe, beim Programmieren können alle Werte, durch Kommas getrennt, hintereinander geschrieben werden, genau wie bei den anderen Prozeduren auch. 5.3.7 Zeichnen von Text Du kannst auch Text auf das Zeichenbrett schreiben, und zwar mit der Prozedur ZeichneText: Zeichenbrett.ZeichneText(X, Y, Text, Groesse) Dabei definieren X und Y wieder die Position des Textes, und zwar dessen obere linke Ecke. Text steht für den auszugebenden Text. Wir haben in Abschnitt 2.5, »Textausgabe in Visual Basic«, gelernt, dass konstante Zeichenketten in doppelten Anführungsstrichen stehen müssen. Das Gleiche gilt hier. Groesse definiert die Schriftgröße in Punkt, wie du es vielleicht von Textverarbeitungsprogrammen her kennst. Abbildung 5.8 Visual Basic in verschiedenen Größen 108 Die Zeichenfunktionen Module Hauptmodul Sub Main() Zeichenbrett.Oeffnen(600, 400) Zeichenbrett.ZeichneText(20, 20, "Visual Basic", 10) Zeichenbrett.ZeichneText(30, 40, "Visual Basic", 14) Zeichenbrett.ZeichneText(45, 60, "Visual Basic", 20) Zeichenbrett.ZeichneText(70, 80, "Visual Basic", 55) End Sub End Module Listing 5.6 Die Ausgabe von Text 5.3.8 Das Zeichenbrett löschen Falls du während des Programmlaufs mal die Tafel putzen musst – in unserem Fall das Zeichenbrett – gibt es die Prozedur PutzeZeichenbrett. Zeichenbrett.PutzeZeichenbrett() Damit werden alle Zeichnungen vom Zeichenbrett entfernt, und es wird mit der aktuellen Zeichenfarbe gefüllt. 5.3.9 Die Liniendicke angeben Falls du die Zeichenbeispiele in den vorigen Abschnitten mal ausprobiert hast, dann ist dir vielleicht aufgefallen, dass die Linien, Kreise und Dreiecke in den Abbildungen viel dicker sind als auf deinem Bildschirm. Das liegt daran, dass die Linien standardmäßig immer die Dicke von einem Pixel haben. Du kannst die Liniendicke aber mit der Prozedur SetzeLiniendicke selbst bestimmen Zeichenbrett.SetzeLiniendicke(Dicke) Für Dicke gibst du dann an, wie viele Pixel die Linie dick sein soll. Das Beispiel in Listing 5.7 zeichnet Linien in unterschiedlichen Dicken. Das Ergebnis zeigt Abbildung 5.9. Module Hauptmodul Sub Main() Zeichenbrett.Oeffnen(600, 400) Zeichenbrett.ZeichneLinie(100, 200, 200, 200) Zeichenbrett.SetzeLiniendicke(3) Zeichenbrett.ZeichneLinie(200, 200, 300, 200) Zeichenbrett.SetzeLiniendicke(5) Zeichenbrett.ZeichneLinie(300, 200, 400, 200) 109 5.3 5 Zeichnen Zeichenbrett.SetzeLiniendicke(7) Zeichenbrett.ZeichneLinie(400, 200, 500, 200) End Sub End Module Listing 5.7 Das Zeichnen von Linien unterschiedlicher Dicke Abbildung 5.9 Linien unterschiedlicher Dicke 5.4 Die Zeichenfarbe definieren Natürlich können wir nicht nur in Schwarz zeichnen. Die Farbe des »Zeichenstifts« lässt sich verändern. 5.4.1 Das Farbsystem RGB Bevor wir zu den dafür notwendigen Funktionen kommen, möchte ich noch kurz etwas zu dem Farbsystem sagen, das eigentlich jeder Computer für die grafische Darstellung verwendet: das RGB-System. RGB ist die Abkürzung für Rot, Grün und Blau, die drei Komponenten, aus denen jede auf dem Bildschirm darstellbare Farbe gemischt wird. (Eigentlich kommt die Abkürzung aus dem Englischen und steht für Red, Green, Blue, aber glücklicherweise passt sie auch zu den deutschen Farbnamen.) Das RGB-System ist ein additives Farbsystem. Das bedeutet, die gemischten Farben addieren sich, vergleichbar mit dem Licht von Scheinwerfern. Stelle dir einmal vor, du gehst in einen Raum ohne Fenster, in dem drei Scheinwerfer stehen: ein roter, ein grüner und ein blauer. Dann machst du die Tür hinter dir zu, lässt 110 Die Zeichenfarbe definieren aber die Scheinwerfer ausgeschaltet. Es ist stockdunkel, pechschwarz. Genauso ist es beim RGB-System, wenn alle drei Komponenten auf null stehen: Dann ist das Ergebnis die Farbe Schwarz. Wenn du jetzt die Stärke des roten Scheinwerfers ganz langsam hochdrehst, dann weicht die Schwärze langsam einem Rot. Zunächst ist es noch ein sehr dunkles Rot, aber wenn der rote Scheinwerfer bis zum Anschlag leuchtet, erhältst du ein intensives Rot. Gleiches gilt natürlich auch für den grünen und den blauen Scheinwerfer. Und auch hier verhält sich das RGB-System identisch. Wenn du die Rot-Komponente langsam erhöhst, wird aus Schwarz langsam über Dunkelrot ein intensives Rot. Das funktioniert auch mit der Grün- und Blau-Komponente. Wenn du alle drei Scheinwerfer voll aufdrehst und ihre Lichtstrahlen alle auf einen Punkt an der Wand richtest, dann entsteht dort weißes Licht. Im RGB-System erhält man die Farbe Weiß auf dieselbe Weise: Alle drei Komponenten werden auf Maximum gesetzt. Darüber hinaus lassen sich die Sekundärfarben Violett, Türkis und Gelb folgendermaßen erzeugen: 왘 Violett entsteht durch Mischen von Rot und Blau zu gleichen Teilen. 왘 Türkis entsteht durch Mischen von Grün und Blau zu gleichen Teilen. 왘 Gelb entsteht durch Mischen von Rot und Grün zu gleichen Teilen. 5.4.2 Die Prozeduren zum Setzen der Farbe Für jede der drei Komponenten (Rot, Grün und Blau) gibt es eine Funktion zum Setzen der Intensität: Zeichenbrett.SetzeRot(Intensitaet) Zeichenbrett.SetzeGruen(Intensitaet) Zeichenbrett.SetzeBlau(Intensitaet) Für Intensitaet kann ein Wert von 0 (ausgeschaltet) bis 255 (volle Intensität) gewählt werden. Listing 5.8 zeichnet ein blaues Rechteck auf weißem Hintergrund. Standardmäßig ist der Hintergrund grau, daher muss zuerst die aktuelle Farbe auf Weiß gesetzt werden (alle Komponenten auf den Maximalwert 255), und dann muss das Zeichenbrett geputzt werden. Anschließend wird die Farbe auf Blau gesetzt. Da bereits alle drei Komponenten den Maximalwert besitzen, auch Blau, müssen wir lediglich die Rot- und Grün-Komponente auf null setzen und dann das Rechteck zeichnen. 111 5.4 5 Zeichnen Module Hauptmodul Sub Main() Zeichenbrett.Oeffnen(600, 400) Zeichenbrett.SetzeRot(255) Zeichenbrett.SetzeGruen(255) Zeichenbrett.SetzeBlau(255) Zeichenbrett.PutzeZeichenbrett() Zeichenbrett.SetzeRot(0) Zeichenbrett.SetzeGruen(0) Zeichenbrett.ZeichneGefuelltesRechteck(100, 100, 400, 200) End Sub End Module Listing 5.8 Ein blaues Rechteck auf weißem Hintergrund zeichnen 5.4.3 Die Funktionen zum Auslesen der Farbe Es wird Situationen geben, in denen es notwendig sein wird, die aktuell eingestellte Farbe auslesen zu können. Dazu gibt es folgende Funktionen, die der Vollständigkeit halber hier aufgeführt sind: Zeichenbrett.ErmittleRot() Zeichenbrett.ErmittleGruen() Zeichenbrett.ErmittleBlau() Wie wir mit Werten umgehen, die von Funktionen zurückgeliefert werden, haben wir noch nicht besprochen. Die notwendigen Informationen dazu werden in den Kapiteln 6, » Variablen und Rechnen«, und 7, »Prozeduren II und Funktionen«, erklärt. 5.5 Zusammenfassung In diesem Kapitel haben wir die Zeichenfunktionen des Zeichenbretts aus der Scara.dll besprochen. In diesem Zusammenhang wurde das Koordinatensystem und das RGB-Farbsystem erklärt. 112 Index A Add 200 Addition 114 Algorithmus 37 And 151 AndAlso 171 Append 213 Array 193 AscW 207 Attribut 234 AusgabeAnhalten 167 AusgabeFortsetzen 168 AutoScroll 279 B BackColor 279 Beenden 49 Boolean 156 Breite 131 Brute Force 268 Button 280 C DreheNachLinks 62 DreheUm 329 Drehverzoegerung 99 E Eigenschaftenfenster 277 Elementoperator 57 Else 84 End Function 140 End If 81 End Module 42 End Structure 225 End While 89 Entscheidung 77 Entweder-oder-Verzweigung 83 Entwurfsansicht 284 Ereignis 283 ErmittleBlau 112 ErmittleGruen 112 ErmittlePalettenhoehe 175 ErmittleRot 112 ErmittleXPosition 206 ErmittleYPosition 206 Exit 172 Case 155 Char 207 ChrW 207 Class 232 Clear 57, 201 Codeansicht 284 Collection 199 Console 56 ReadLine 121 Convert 122 Count 201 F D G Division 114 Do ... While 157 Double 126 Gehen 50 Grundrechenarten 114 Fallunterscheidung 153 False 80 Fehlerliste 53 For 161 FormBorderStyle 280 Friend 233 Function 140 Funktion 140 Funktionsparameter 138 393 Index H Handles 285 Hoehe 131 I If 81 Imports 200 IndexOf 211 Insert 213 Integer 118 Is 195 IsDigit 209 IsLetter 209 IsLetterOrDigit 209 IsLower 209 IsPunctuation 209 IstVorneAbgrund 80 IstVornePalette 175 IsUpper 209 IsWhiteSpace 210 K Klasse 232 Kommentare 91 Konstruktor 237 Kurzschlusseigenschaft 170 L LastIndexOf 212 LegePaletteAb 175 Length 197, 210 List 199 Load 288 LoescheTextfenster 273 Logische Operatoren 149 Logisches Oder 152 Logisches Und 151 M Member-Operator 57 MerkePosition 204 Methode 235 394 Module 42 Modulo 115 Multiplikation 114 N Namensbereich 57 Namensregeln 66 Negation 153 .NET Framework 57 New 195 Next 161, 180 Nicht, logisches 153 NimmPalette 175 Not 153 Nothing 195 O Objekt 234 Oder, logisches 152 Oeffnen 101 Of 199 Opacity 280 Or 152 OrElse 172 P Parameterliste 139 Private 234 Programm 38 Prozedurparameter 138 Public 233, 234 PutzeZeichenbrett 109 R Random 179 ReadLine 121 Relationale Operatoren 82 Remove 201, 214 RemoveAt 201 Replace 214 Restwert 115 Return 141 RGB-System 110 Index S Scanne 291 Scara Beenden 49 DreheNachLinks 62 Drehverzoegerung 99 ErmittlePalettenhoehe 175 ErmittleXPosition 206 ErmittleYPosition 206 Gehen 50 IstVorneAbgrund 80 IstVornePalette 175 LegePaletteAb 175 MerkePosition 204 NimmPalette 175 Scanne 291 SindPositionenGespeichert 204 Springe 292 SpringeZu 206 SpringeZurueck 204 Starten 45 StehtAufAnkh 96 TempoLangsam 98 TempoNormal 98 TempoSchnell 98 TempoSehrSchnell 98 TempoZeitlupe 98 Select 154 SetzeBlau 111 SetzeGruen 111 SetzeLiniendicke 109 SetzeRot 111 SindPositionenGespeichert 204 Single 126 Springe 292 SpringeZu 206 SpringeZurueck 204 Starten 45 StehtAufAnkh 96 Step 161 String 210 StringBuilder 213 Append 213 Insert 213 Remove 214 Replace 214 Structure 225 Substring 211 Subtraktion 114 System 57 T TempoLangsam 98 TempoNormal 98 TempoSchnell 98 TempoSehrSchnell 98 TempoZeitlupe 98 Text 280 Textausgabe 55 Then 81 ToLower 210 Toolbox 281 ToUpper 210 True 80 U Überladen 217 UML 39 Und, logisches 151 Unified Modelling Language 39 V Variablen 115 Vergleichsoperatoren 82 Verneinung 153 Verweistyp 194 W Wenn-dann-Verzweigung 80 While 89 Windows Forms-Anwendung 275 Write 56 WriteLine 56 X Xor 153 395 Index Z Zeichenbrett AusgabeAnhalten 167 AusgabeFortsetzen 168 Breite 131 ErmittleBlau 112 ErmittleGruen 112 ErmittleRot 112 Hoehe 131 LoescheTextfenster 273 Oeffnen 101 PutzeZeichenbrett 109 SetzeBlau 111 SetzeGruen 111 SetzeLiniendicke 109 SetzeRot 111 ZeichneDreieck 106 ZeichneEllipse 105 ZeichneGefuellteEllipse 106 396 Zeichenbrett (Forts.) ZeichneGefuelltesDreieck 107 ZeichneGefuelltesRechteck 107 ZeichneGefuelltesViereck 108 ZeichneLinie 104 ZeichnePunkt 104 ZeichneText 108 ZeichneDreieck 106 ZeichneEllipse 105 ZeichneGefuellteEllipse 106 ZeichneGefuelltesDreieck 107 ZeichneGefuelltesRechteck 107 ZeichneGefuelltesViereck 108 ZeichneLinie 104 ZeichnePunkt 104 ZeichneText 108 Zeilenumbruch 245 Zugriffsmethode 239 Zugriffsrecht 233, 234 Zusammengesetzter Datentyp 225 Zuweisungsoperator 118