25
André Willms Spielend Visual Basic lernen oder wie die Bugs das Laufen lernen

Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

André Willms

Spielend Visual Basic lernenoder wie die Bugs das Laufen lernen

Page 2: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 3: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 4: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 5: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 6: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 7: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 8: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 9: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 10: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 11: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 12: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 13: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 14: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 15: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 16: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 17: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 18: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 19: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 20: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 21: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 22: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 23: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 24: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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

Page 25: Spielend C++ lernen - Amazon Simple Storage Service · fach visualisieren zu können, habe ich der Scara.dll ein Zeichenbrett hinzugefügt. Auf dieses Zeichenbrett kann mit einfachen

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