Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
André Willms
Spielend Visual Basic lernenoder 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 Visual Basic installieren ........................................................... 131.1.1 Der erste Start ........................................................... 171.1.2 Visual Basic registrieren ............................................. 19
1.2 Einstellungen .......................................................................... 221.2.1 Einen Ordner vorbereiten .......................................... 221.2.2 Erweiterte Einstellungen aktivieren ............................ 231.2.3 Programmcodedarstellung ändern ............................. 241.2.4 Wir wollen es strikt ................................................... 241.2.5 Projekteinstellungen .................................................. 25
1.3 Ein Projekt erstellen ................................................................ 261.4 Die Datei »Scara.dll« einbinden .............................................. 281.5 Ein Projekt schließen .............................................................. 301.6 Ein bestehendes Projekt öffnen ............................................... 31
1.6.1 Das Projekt über die Startseite öffnen ....................... 311.6.2 Das Projekt über
»Zuletzt geöffnete Projekte« öffnen ........................... 321.6.3 Das Projekt über den Menüpunkt
»Projekt öffnen« aufrufen .......................................... 321.7 Wenn es nicht klappt .............................................................. 34
1.7.1 Der Projektmappen-Explorer ist weg ......................... 341.7.2 Bei der Erstellung eines Projekts fehlt
die Auswahl des Speicherorts .................................... 341.8 Zusammenfassung .................................................................. 35
2 Anweisungen und Algorithmen ................................................ 37
2.1 Der Algorithmus ..................................................................... 372.2 Das erste Programm ............................................................... 41
2.2.1 Module ..................................................................... 422.2.2 Die Hauptprozedur .................................................... 43
2.3 Scara lernt laufen .................................................................... 442.3.1 Das Programm starten ............................................... 462.3.2 Die Übung korrekt beenden ...................................... 492.3.3 Dem Käfer Beine machen .......................................... 502.3.4 Vermeide den Abgrund ............................................. 52
5
Inhalt
2.4 Fehler finden .......................................................................... 522.5 Textausgabe in Visual Basic .................................................... 55
2.5.1 Aufbau der Ausgabe .................................................. 562.5.2 Sprache und Bibliothek ............................................. 582.5.3 Vereinfachungen ....................................................... 582.5.4 Ausgabe in Kombination mit der »Scara.dll« .............. 59
2.6 Zusammenfassung .................................................................. 60
3 Prozeduren und Module ............................................................. 61
3.1 Scara lernt die Drehung .......................................................... 623.2 Anweisungen gruppieren ........................................................ 633.3 Namensregeln ........................................................................ 663.4 Ein weiteres Anwendungsbeispiel ........................................... 673.5 Aufteilen in Module ............................................................... 69
3.5.1 Ein neues Modul hinzufügen ..................................... 693.5.2 Ein vorhandenes Modul hinzufügen .......................... 72
3.6 Übungen ................................................................................ 743.7 Zusammenfassung .................................................................. 75
4 Verzweigungen und Wiederholungen ..................................... 77
4.1 Die Wenn-dann-Verzweigung ................................................ 804.2 Vergleichsoperatoren ............................................................. 824.3 Die Entweder-oder-Verzweigung ............................................ 834.4 Übungen I .............................................................................. 874.5 Wiederholungen ..................................................................... 88
4.5.1 Die einfachste Art der Wiederholung: »while«............ 884.5.2 Auf immer und ewig: Endlosschleifen ........................ 90
4.6 Kommentare .......................................................................... 914.6.1 Kommentieren von Anweisungen .............................. 914.6.2 Ganze Zeilen kommentieren ...................................... 924.6.3 Kommentare zum Ausklammern von Anweisungen .... 93
4.7 Übungen II ............................................................................. 934.8 Zusammenfassung .................................................................. 99
5 Zeichnen ........................................................................................ 101
5.1 Das Zeichenbrett .................................................................... 1015.2 Das Koordinatensystem .......................................................... 102
6
Inhalt
5.3 Die Zeichenfunktionen ........................................................... 1035.3.1 Zeichnen eines Punktes ............................................. 1045.3.2 Zeichnen einer Linie .................................................. 1045.3.3 Zeichnen einer Ellipse ................................................ 1055.3.4 Zeichnen eines Dreiecks ............................................ 1065.3.5 Zeichnen eines Rechtecks .......................................... 1075.3.6 Zeichnen eines Vierecks ............................................ 1085.3.7 Zeichnen von Text ..................................................... 1085.3.8 Das Zeichenbrett löschen .......................................... 1095.3.9 Die Liniendicke angeben ........................................... 109
5.4 Die Zeichenfarbe definieren .................................................... 1105.4.1 Das Farbsystem RGB ................................................. 1105.4.2 Die Prozeduren zum Setzen der Farbe ....................... 1115.4.3 Die Funktionen zum Auslesen der Farbe .................... 112
5.5 Zusammenfassung .................................................................. 112
6 Variablen und Rechnen ............................................................... 113
6.1 Die Grundrechenarten ............................................................ 1146.2 Der Restwertoperator ............................................................. 1156.3 Variablen ................................................................................ 115
6.3.1 Eine Variable definieren ............................................ 1186.3.2 Variablen im Einsatz .................................................. 1206.3.3 Variablen für Zeichenketten ...................................... 121
6.4 Die Eingabe ............................................................................ 1216.4.1 Programmaufbau ....................................................... 1216.4.2 Umwandeln in numerische Werte ............................. 122
6.5 Zahlen mit Nachkommastellen ................................................ 1256.6 Ungültige Eingaben ................................................................ 1266.7 Für Fortgeschrittene ............................................................... 127
6.7.1 Zusammengesetzte Zuweisungsoperatoren ................ 1276.7.2 Formatierte Ausgabe ................................................. 128
6.8 Übungen ................................................................................ 1306.9 Zusammenfassung .................................................................. 132
7 Prozeduren II und Funktionen .................................................. 133
7.1 Lokale Variablen ..................................................................... 1347.2 Anweisungen flexibler gestalten mit Parametern ..................... 1357.3 Prozeduren mit Parametern .................................................... 138
7
Inhalt
7.4 Funktionen ............................................................................. 1407.5 Funktionen mit Parametern .................................................... 1427.6 Übungen ................................................................................ 1437.7 Zusammenfassung .................................................................. 147
8 Verzweigungen II & Schleifen ................................................... 149
8.1 Das Formulieren von »Und« und »Oder« ................................. 1498.1.1 Verschachtelte Verzweigungen .................................. 1498.1.2 Logisches »Und« ........................................................ 1518.1.3 Logisches »Oder« ...................................................... 1528.1.4 Exklusives »Oder« ...................................................... 153
8.2 Die logische Verneinung ......................................................... 1538.3 Fallunterscheidung ................................................................. 1538.4 Der Datentyp »Boolean« ......................................................... 1568.5 Erst machen, dann prüfen: »Do ... While« ............................... 1578.6 Zählen mit Schleifen ............................................................... 1598.7 Von vorn bis hinten: »For« ...................................................... 1618.8 Schleifen verschachteln .......................................................... 1638.9 Ein paar Beispiele ................................................................... 164
8.9.1 Zeichnen einer Röhre ................................................ 1648.9.2 Ein Effekt mit Ellipsen ............................................... 1658.9.3 Farben mischen ......................................................... 167
8.10 Für Fortgeschrittene ............................................................... 1698.10.1 Vereinfachung von Bedingungen ............................... 1698.10.2 Vereinfachung von Verzweigungen ........................... 1708.10.3 Kurzschlüsse bei den logischen Operatoren ............... 1708.10.4 Schleifenabbruch ....................................................... 172
8.11 Übungen ................................................................................ 1738.12 Zusammenfassung .................................................................. 178
9 Spielereien I .................................................................................. 179
9.1 Ein Zahlenratespiel ................................................................. 1799.1.1 Zufallszahlen ............................................................. 1799.1.2 Die Spielschleife ........................................................ 1809.1.3 Spielerhilfen hinzufügen ............................................ 181
9.2 Das Zwölferspiel ..................................................................... 1829.2.1 Die Darstellung des Spielbretts ................................. 1829.2.2 Der menschliche Spieler ............................................ 185
8
Inhalt
9.2.3 Der Computerspieler ................................................. 1859.2.4 Die Spielschleife ........................................................ 1869.2.5 Ein unschlagbarer Computerspieler ............................ 188
9.3 Übungen ................................................................................ 190
10 Arrays ............................................................................................. 193
10.1 Mehrere Werte speichern mit Arrays ...................................... 19310.2 Arbeiten mit Arrays ................................................................ 19610.3 Die Liste ................................................................................. 199
10.3.1 Die Größe einer Liste ................................................. 20110.3.2 Elemente entfernen ................................................... 20110.3.3 Listen als Parameter .................................................. 201
10.4 Listen und Arrays als Rückgabewert ........................................ 20210.5 Übungen ................................................................................ 20310.6 Zusammenfassung .................................................................. 206
11 Zeichen und Zeichenketten ....................................................... 207
11.1 Ein Zeichen speichern ............................................................. 20711.1.1 Zeichen sind Werte, Werte sind Zeichen ................... 20711.1.2 Die Zeichenart feststellen .......................................... 20811.1.3 Groß- und Kleinbuchstaben ....................................... 210
11.2 Speichern von Zeichenketten .................................................. 21011.2.1 Mit Strings arbeiten ................................................... 21011.2.2 Zeichenketten verändern ........................................... 212
11.3 Texte verschlüsseln ................................................................. 21411.3.1 Die Caesar-Verschlüsselung ....................................... 21411.3.2 Ein Zeichen verschlüsseln .......................................... 21511.3.3 Ein Zeichen entschlüsseln .......................................... 21611.3.4 Einen Text verschlüsseln ............................................ 21711.3.5 Einen Text entschlüsseln ............................................ 21811.3.6 Das Hauptprogramm ................................................. 218
11.4 Übungen ................................................................................ 21911.5 Zusammenfassung .................................................................. 221
12 Strukturen ..................................................................................... 223
12.1 Definition einer Struktur ......................................................... 22412.2 Verwendung von Strukturen ................................................... 226
9
Inhalt
12.2.1 Strukturen und Arrays bzw. Listen ............................. 22612.2.2 Strukturen als Prozedur-/Funktionsparameter............. 227
12.3 Ein Beispiel ............................................................................. 22812.4 Übungen ................................................................................ 22912.5 Zusammenfassung .................................................................. 230
13 Klassen ........................................................................................... 231
13.1 Definition einer Klasse ............................................................ 23213.2 Zugriffsrechte ......................................................................... 23413.3 Methoden .............................................................................. 23513.4 Konstruktoren ........................................................................ 23613.5 Zugriffsmethoden ................................................................... 23913.6 Übungen ................................................................................ 24013.7 Zusammenfassung .................................................................. 241
14 Spielereien II ................................................................................. 243
14.1 Galgenmännchen .................................................................... 24314.1.1 Das Grundgerüst der Klasse ....................................... 24314.1.2 Der Konstruktor ........................................................ 24414.1.3 Das Zeichnen des Spielfeldes ..................................... 24514.1.4 Das Prüfen eines Zeichens ......................................... 24814.1.5 Das Prüfen auf Spielende .......................................... 25114.1.6 Die Spielschleife ........................................................ 252
14.2 Mastermind ............................................................................ 25314.2.1 Der Farbcode ............................................................ 25314.2.2 Der Konstruktor mit Codeübergabe ........................... 25314.2.3 Der parameterlose Konstruktor ................................. 25714.2.4 Die Darstellung des Codes ........................................ 25814.2.5 Die Codeauswertung ................................................. 26014.2.6 Lösung gefunden? ..................................................... 26214.2.7 Die Klasse »Mastermind« .......................................... 26314.2.8 Der Konstruktor ........................................................ 26314.2.9 Die Darstellung ......................................................... 26414.2.10 Der Mensch spielt ..................................................... 26614.2.11 Der Computer rät ...................................................... 268
14.3 Übungen ................................................................................ 273
10
Inhalt
15 Windows-Anwendungen ........................................................... 275
15.1 Eine Windows Forms-Anwendung erstellen ............................ 27515.2 Eigenschaften visueller Elemente ändern ................................. 277
15.2.1 Die Eigenschaft (Name) ............................................. 27815.2.2 Die Eigenschaften des Fensters .................................. 279
15.3 Interaktive Buttons erstellen ................................................... 28015.3.1 Die Toolbox .............................................................. 28115.3.2 Ereignisse .................................................................. 28315.3.3 Die Messagebox ........................................................ 285
15.4 Text einfügen mit Labels ......................................................... 28615.5 Textboxen für Eingaben erstellen ............................................ 28715.6 Ein Beispiel für eine Anwendung ............................................ 288
16 Extrem-Krabbeln für Fortgeschrittene .................................... 291
16.1 Die Übungen .......................................................................... 29116.2 Die Lösungen ......................................................................... 299
A Anhang ................................................................................ 323
A.1 Ältere Frameworks unterstützen ............................................. 323A.2 Starten ohne Debugging ......................................................... 325
A.2.1 Starten ohne Debugging in der Symbolleiste ............. 325A.2.2 Starten ohne Debugging in der Menüleiste ................ 328
A.3 Lösungen ................................................................................ 328A.3.1 Lösungen zu Kapitel 3 ............................................... 328A.3.2 Lösungen zu Kapitel 4 ............................................... 332A.3.3 Lösungen zu Kapitel 6 ............................................... 342A.3.4 Lösungen zu Kapitel 7 ............................................... 345A.3.5 Lösungen zu Kapitel 8 ............................................... 353A.3.6 Lösungen zu Kapitel 9 ............................................... 363A.3.7 Lösungen zu Kapitel 10 ............................................. 368A.3.8 Lösungen zu Kapitel 11 ............................................. 376A.3.9 Lösungen zu Kapitel 12 ............................................. 382A.3.10 Lösungen zu Kapitel 13 ............................................. 385A.3.11 Lösungen zu Kapitel 14 ............................................. 388
A.4 Hinweise zu den Daten auf der DVD ...................................... 392
Index ........................................................................................................ 393
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. Umaber auch arithmetische Ergebnisse oder später Datenstrukturen möglichst ein-fach 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 grafischeAusgabe sein.
5.1 Das Zeichenbrett
Um ein Zeichenbrett zu erhalten, rufst du die Prozedur Zeichenbrett.Oeffnenauf. In ihren runden Klammern gibst du die Breite und Höhe des gewünschtenZeichenbretts 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 PixelnHöhe. Wie du sicher weißt, sind Pixel Bildpunkte, aus denen alles zusammenge-setzt ist, was du auf deinem Monitor siehst. Damit besitzt unser erzeugtes Zei-chenbrett (das in Abbildung 5.1 zu sehen ist) 600 mal 400, also 240.000 Bild-punkte oder Pixel.
101
Zeichnen5
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 eshier kurz erklärt. Ein Fenster besitzt zwei Achsen. Die X-Achse beginnt in deroberen linken Ecke und erstreckt sich waagerecht bis zum rechten Rand des Fens-ters.
Die Y-Achse beginnt ebenfalls oben links, erstreckt sich aber senkrecht bis zumunteren Ende des Fensters. Hier unterscheidet sich das Koordinatensystem leichtvon dem, was du wahrscheinlich aus dem Matheunterricht kennst. In der Mathe-matik 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 X-Wert 0 und den Y-Wert 0. Abbildung 5.2 zeigt unser Zeichenbrett mit eingezeich-neten Achsen.Über diese beiden Achsen besitzt jedes Pixel eine eindeutige Posi-tion. Die Position wird dabei immer als Zahlenpaar in der Reihenfolge (x,y) ange-geben.
102
Die Zeichenfunktionen 5.3
Abbildung 5.2 Das Koordinatensystem eines Fensters
Mit den Ausmaßen unseres aktuellen Zeichenbretts (Breite von 600 Pixeln, Höhevon 400 Pixeln) sitzt beispielsweise der Punkt in der Zeichenbrettmitte an Posi-tion (300,200), hat also einen X-Wert von 300 und einen Y-Wert von 200. Abbil-dung 5.3 stellt die Position grafisch dar.
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 zeich-nen können.
Y
X
X=300
Y=200
103
Zeichnen5
5.3.1 Zeichnen eines Punktes
Mit der Prozedur ZeichnePunkt wird ein Punkt an die angegebene Position in deraktuellen Zeichenfarbe gesetzt. Der allgemeine Aufbau ist:
Zeichenbrett.ZeichnePunkt(XPosition, YPosition)
Dabei müssen für XPosition und YPosition natürlich konkrete Werte angegebenwerden. Listing 5.2 zeigt als Beispiel das Zeichnen des Punktes in der Zeichen-brettmitte, 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 deraktuellen Zeichenfarbe.
Zeichenbrett:ZeichneLinie(XStart, YStart, XEnde, YEnde)
Die Werte XStart und YStart entsprechen dabei den Koordinaten des Startpunk-tes 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 SubEnd Module
Listing 5.3 Das Zeichen des Zorro
104
Die Zeichenfunktionen 5.3
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 auf-gebaut:
Zeichenbrett.ZeichneEllipse(X, Y, Breite, Hoehe)
Die Angaben zum Zeichnen einer Ellipse beziehen sich eigentlich auf ein unsicht-bares Rechteck, in das die Ellipse gezeichnet wird.
Abbildung 5.5 zeigt den Sachverhalt. Das eigentlich unsichtbare Rechteck istgestrichelt eingezeichnet. Die Koordinaten X und Y beziehen sich auf die Positionder oberen linken Ecke des Rechtecks. Die Werte Breite und Hoehe definierendie Breite und Höhe des Rechtecks. Die tatsächlich gezeichnete Ellipse wird dannso gezeichnet, dass sie das Rechteck an allen vier Seiten berührt.
Abbildung 5.5 Das Zeichnen einer Ellipse
X,Y Breite
Höhe
105
Zeichnen5
Zum Zeichnen einer ausgefüllten Ellipse gibt es noch die Prozedur ZeichneGe-fuellteEllipse, 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 Positionendieser 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 – angegebenwerden müssen. Die Reihenfolge der Punkte ist egal.
Das Programm in Listing 5.4 zeichnet eine Sanduhr, allerdings ohne Sand, wie inAbbildung 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 5.3
Ausgefüllte Dreiecke können mit der Prozedur ZeichneGefuelltesDreieckgezeichnet 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 überein unsichtbares Rechteck definiert werden, für das die Position der oberen lin-ken Ecke sowie dessen Breite und Höhe angegeben werden. Das Gleiche gilt fürdas Zeichnen eines Rechtecks – nur dass jetzt das Rechteck glücklicherweise nichtmehr 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 SubEnd Module
Listing 5.5 Das Zeichnen von Rechtecken
Abbildung 5.7 Ein Rechteck-Ensemble
107
Zeichnen5
5.3.6 Zeichnen eines Vierecks
Zum Zeichnen eines allgemeinen ausgefüllten Vierecks existiert die ProzedurZeichneGefuelltesViereck. Diese ist ähnlich aufgebaut wie ZeichneGefuell-tesDreieck, 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. Dashat allein optische Gründe, beim Programmieren können alle Werte, durch Kom-mas getrennt, hintereinander geschrieben werden, genau wie bei den anderenProzeduren auch.
5.3.7 Zeichnen von Text
Du kannst auch Text auf das Zeichenbrett schreiben, und zwar mit der ProzedurZeichneText:
Zeichenbrett.ZeichneText(X, Y, Text, Groesse)
Dabei definieren X und Y wieder die Position des Textes, und zwar dessen oberelinke Ecke. Text steht für den auszugebenden Text. Wir haben in Abschnitt 2.5,»Textausgabe in Visual Basic«, gelernt, dass konstante Zeichenketten in doppeltenAnführungsstrichen stehen müssen. Das Gleiche gilt hier. Groesse definiert dieSchriftgröße in Punkt, wie du es vielleicht von Textverarbeitungsprogrammenher kennst.
Abbildung 5.8 Visual Basic in verschiedenen Größen
108
Die Zeichenfunktionen 5.3
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 SubEnd 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 Falldas Zeichenbrett – gibt es die Prozedur PutzeZeichenbrett.
Zeichenbrett.PutzeZeichenbrett()
Damit werden alle Zeichnungen vom Zeichenbrett entfernt, und es wird mit deraktuellen 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 denAbbildungen viel dicker sind als auf deinem Bildschirm. Das liegt daran, dass dieLinien standardmäßig immer die Dicke von einem Pixel haben. Du kannst dieLiniendicke 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 Beispielin Listing 5.7 zeichnet Linien in unterschiedlichen Dicken. Das Ergebnis zeigtAbbildung 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
Zeichnen5
Zeichenbrett.SetzeLiniendicke(7)
Zeichenbrett.ZeichneLinie(400, 200, 500, 200) End SubEnd 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 »Zeichen-stifts« lässt sich verändern.
5.4.1 Das Farbsystem RGB
Bevor wir zu den dafür notwendigen Funktionen kommen, möchte ich noch kurzetwas zu dem Farbsystem sagen, das eigentlich jeder Computer für die grafischeDarstellung verwendet: das RGB-System. RGB ist die Abkürzung für Rot, Grünund Blau, die drei Komponenten, aus denen jede auf dem Bildschirm darstellbareFarbe gemischt wird. (Eigentlich kommt die Abkürzung aus dem Englischen undsteht für Red, Green, Blue, aber glücklicherweise passt sie auch zu den deutschenFarbnamen.)
Das RGB-System ist ein additives Farbsystem. Das bedeutet, die gemischten Far-ben addieren sich, vergleichbar mit dem Licht von Scheinwerfern. Stelle dir ein-mal 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 5.4
aber die Scheinwerfer ausgeschaltet. Es ist stockdunkel, pechschwarz. Genausoist es beim RGB-System, wenn alle drei Komponenten auf null stehen: Dann istdas Ergebnis die Farbe Schwarz.
Wenn du jetzt die Stärke des roten Scheinwerfers ganz langsam hochdrehst, dannweicht die Schwärze langsam einem Rot. Zunächst ist es noch ein sehr dunklesRot, aber wenn der rote Scheinwerfer bis zum Anschlag leuchtet, erhältst du einintensives Rot. Gleiches gilt natürlich auch für den grünen und den blauenScheinwerfer.
Und auch hier verhält sich das RGB-System identisch. Wenn du die Rot-Kompo-nente langsam erhöhst, wird aus Schwarz langsam über Dunkelrot ein intensivesRot. Das funktioniert auch mit der Grün- und Blau-Komponente.
Wenn du alle drei Scheinwerfer voll aufdrehst und ihre Lichtstrahlen alle aufeinen Punkt an der Wand richtest, dann entsteht dort weißes Licht. Im RGB-Sys-tem erhält man die Farbe Weiß auf dieselbe Weise: Alle drei Komponenten wer-den auf Maximum gesetzt.
Darüber hinaus lassen sich die Sekundärfarben Violett, Türkis und Gelb folgen-dermaß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 zumSetzen 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äßigist der Hintergrund grau, daher muss zuerst die aktuelle Farbe auf Weiß gesetztwerden (alle Komponenten auf den Maximalwert 255), und dann muss das Zei-chenbrett geputzt werden. Anschließend wird die Farbe auf Blau gesetzt. Da bereitsalle drei Komponenten den Maximalwert besitzen, auch Blau, müssen wir lediglichdie Rot- und Grün-Komponente auf null setzen und dann das Rechteck zeichnen.
111
Zeichnen5
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 einge-stellte Farbe auslesen zu können. Dazu gibt es folgende Funktionen, die der Voll-stä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 werdenin den Kapiteln 6, » Variablen und Rechnen«, und 7, »Prozeduren II und Funktio-nen«, erklärt.
5.5 Zusammenfassung
In diesem Kapitel haben wir die Zeichenfunktionen des Zeichenbretts aus derScara.dll besprochen. In diesem Zusammenhang wurde das Koordinatensystemund das RGB-Farbsystem erklärt.
112
Index
A
Add 200Addition 114Algorithmus 37And 151AndAlso 171Append 213Array 193AscW 207Attribut 234AusgabeAnhalten 167AusgabeFortsetzen 168AutoScroll 279
B
BackColor 279Beenden 49Boolean 156Breite 131Brute Force 268Button 280
C
Case 155Char 207ChrW 207Class 232Clear 57, 201Codeansicht 284Collection 199Console 56
ReadLine 121Convert 122Count 201
D
Division 114Do ... While 157Double 126
DreheNachLinks 62DreheUm 329Drehverzoegerung 99
E
Eigenschaftenfenster 277Elementoperator 57Else 84End Function 140End If 81End Module 42End Structure 225End While 89Entscheidung 77Entweder-oder-Verzweigung 83Entwurfsansicht 284Ereignis 283ErmittleBlau 112ErmittleGruen 112ErmittlePalettenhoehe 175ErmittleRot 112ErmittleXPosition 206ErmittleYPosition 206Exit 172
F
Fallunterscheidung 153False 80Fehlerliste 53For 161FormBorderStyle 280Friend 233Function 140Funktion 140Funktionsparameter 138
G
Gehen 50Grundrechenarten 114
393
Index
H
Handles 285Hoehe 131
I
If 81Imports 200IndexOf 211Insert 213Integer 118Is 195IsDigit 209IsLetter 209IsLetterOrDigit 209IsLower 209IsPunctuation 209IstVorneAbgrund 80IstVornePalette 175IsUpper 209IsWhiteSpace 210
K
Klasse 232Kommentare 91Konstruktor 237Kurzschlusseigenschaft 170
L
LastIndexOf 212LegePaletteAb 175Length 197, 210List 199Load 288LoescheTextfenster 273Logische Operatoren 149Logisches Oder 152Logisches Und 151
M
Member-Operator 57MerkePosition 204Methode 235
Module 42Modulo 115Multiplikation 114
N
Namensbereich 57Namensregeln 66Negation 153.NET Framework 57New 195Next 161, 180Nicht, logisches 153NimmPalette 175Not 153Nothing 195
O
Objekt 234Oder, logisches 152Oeffnen 101Of 199Opacity 280Or 152OrElse 172
P
Parameterliste 139Private 234Programm 38Prozedurparameter 138Public 233, 234PutzeZeichenbrett 109
R
Random 179ReadLine 121Relationale Operatoren 82Remove 201, 214RemoveAt 201Replace 214Restwert 115Return 141RGB-System 110
394
Index
S
Scanne 291Scara
Beenden 49DreheNachLinks 62Drehverzoegerung 99ErmittlePalettenhoehe 175ErmittleXPosition 206ErmittleYPosition 206Gehen 50IstVorneAbgrund 80IstVornePalette 175LegePaletteAb 175MerkePosition 204NimmPalette 175Scanne 291SindPositionenGespeichert 204Springe 292SpringeZu 206SpringeZurueck 204Starten 45StehtAufAnkh 96TempoLangsam 98TempoNormal 98TempoSchnell 98TempoSehrSchnell 98TempoZeitlupe 98
Select 154SetzeBlau 111SetzeGruen 111SetzeLiniendicke 109SetzeRot 111SindPositionenGespeichert 204Single 126Springe 292SpringeZu 206SpringeZurueck 204Starten 45StehtAufAnkh 96Step 161String 210StringBuilder 213
Append 213Insert 213Remove 214Replace 214
Structure 225Substring 211Subtraktion 114System 57
T
TempoLangsam 98TempoNormal 98TempoSchnell 98TempoSehrSchnell 98TempoZeitlupe 98Text 280Textausgabe 55Then 81ToLower 210Toolbox 281ToUpper 210True 80
U
Überladen 217UML 39Und, logisches 151Unified Modelling Language 39
V
Variablen 115Vergleichsoperatoren 82Verneinung 153Verweistyp 194
W
Wenn-dann-Verzweigung 80While 89Windows Forms-Anwendung 275Write 56WriteLine 56
X
Xor 153
395
Index
Z
ZeichenbrettAusgabeAnhalten 167AusgabeFortsetzen 168Breite 131ErmittleBlau 112ErmittleGruen 112ErmittleRot 112Hoehe 131LoescheTextfenster 273Oeffnen 101PutzeZeichenbrett 109SetzeBlau 111SetzeGruen 111SetzeLiniendicke 109SetzeRot 111ZeichneDreieck 106ZeichneEllipse 105ZeichneGefuellteEllipse 106
Zeichenbrett (Forts.)ZeichneGefuelltesDreieck 107ZeichneGefuelltesRechteck 107ZeichneGefuelltesViereck 108ZeichneLinie 104ZeichnePunkt 104ZeichneText 108
ZeichneDreieck 106ZeichneEllipse 105ZeichneGefuellteEllipse 106ZeichneGefuelltesDreieck 107ZeichneGefuelltesRechteck 107ZeichneGefuelltesViereck 108ZeichneLinie 104ZeichnePunkt 104ZeichneText 108Zeilenumbruch 245Zugriffsmethode 239Zugriffsrecht 233, 234Zusammengesetzter Datentyp 225Zuweisungsoperator 118
396