Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
q1:java-methoden [2017/07/11 09:50] – admin03 | q1:java-methoden [2017/08/14 06:15] (aktuell) – [Aufgabe 1] admin03 |
---|
| ====== Grafik und Methoden ====== |
| |
| |
Ernsthafte Programme sind in der Praxis viel zu groß, um aus einem Hauptprogramm allein zu bestehen. Man zerlegt deshalb Probleme in kleinere Teile, die von einem Teilprogramm realisiert werden. Mit dieser Modularisierung verfolgt man drei Ziele: | Ernsthafte Programme sind in der Praxis viel zu groß, um aus einem Hauptprogramm allein zu bestehen. Man zerlegt deshalb Probleme in kleinere Teile, die von einem Teilprogramm realisiert werden. Mit dieser Modularisierung verfolgt man drei Ziele: |
| |
} | } |
</code> | </code> |
====== | ====== Erläuterungen: ====== |
Erläuterungen: ====== | |
| |
| |
* Der Parameter Graphics g ist aus technischen Gründen nötig, darauf soll zunächst nicht näher eingegangen werden. | * Der Parameter Graphics g ist aus technischen Gründen nötig, darauf soll zunächst nicht näher eingegangen werden. |
| |
====== Aufgaben ====== | ====== Aufgabenblock 1 ====== |
* Teste das Programm und erweitere es dann so, dass die Farbe als Parameter mit übergeben wird: <code JAVA> void zeichneUfo(Graphics g, int xUfo, int yUfo, Color farbe) </code> | Teste das Programm und erweitere es dann so, dass die Farbe als Parameter mit übergeben wird: <code JAVA> void zeichneUfo(Graphics g, int xUfo, int yUfo, Color farbe) </code> |
* Erweitere das Ufo-Programm wie folgt: | ===== Aufgabe 1 ===== |
* Lasse neben dem grünen Ufo von links nach rechts ein blaues Ufo von rechts nach links an einer anderen y-Koordinate fliegen. | Erweitere das Ufo-Programm wie folgt: |
* Lasse das Ufo sich in x- und y-Richtung bewegen. | ==== Aufgabe a ==== |
* Lasse zwei verschiedenfarbige Ufos sich zufällig auf dem Bildschirm bewegen. Richtig interessant wird die Sache natürlich erst, wenn man die Ufos über die Tastatur oder über die Maus steuern kann. Auch das ist natürlich mit JAVA möglich, nur wollen wir das an dieser Stelle zunächst noch zurückstellen. | Lasse neben dem grünen Ufo von links nach rechts ein blaues Ufo von rechts nach links an einer anderen y-Koordinate fliegen. |
* Es soll eine Methode programmiert werden, die einen Stern mit Mittelpunkt P(x/y) zeichnet. Der Methodenkopf soll wie folgt aussehen: <code JAVA> void zeichneStern(int x, int y) </code>Zeichne dann 100 Sterne an zufälligen Positionen auf dem Bildschirm. | ==== Aufgabe b ==== |
* Die Methoden zum Sternzeichnen soll so erweitert werden, dass man die Größe und die Farbe des Sterns übergeben kann. Zeichne erneut 100 Sterne mit zufälliger Größe und Farbe an zufälligen Positionen auf den Schirm. | Lasse das Ufo sich in x- und y-Richtung bewegen. |
| ==== Aufgabe c ==== |
| Lasse zwei verschiedenfarbige Ufos sich zufällig auf dem Bildschirm bewegen. Richtig interessant wird die Sache natürlich erst, wenn man die Ufos über die Tastatur oder über die Maus steuern kann. Auch das ist natürlich mit JAVA möglich, nur wollen wir das an dieser Stelle zunächst noch zurückstellen. |
| ===== Aufgabe 2 ===== |
| Es soll eine Methode programmiert werden, die einen Stern mit Mittelpunkt P(x/y) zeichnet. Der Methodenkopf soll wie folgt aussehen: <code JAVA> void zeichneStern(int x, int y) </code>Zeichne dann 100 Sterne an zufälligen Positionen auf dem Bildschirm. |
| ===== Aufgabe 3 ===== |
| Die Methoden zum Sternzeichnen soll so erweitert werden, dass man die Größe und die Farbe des Sterns übergeben kann. Zeichne erneut 100 Sterne mit zufälliger Größe und Farbe an zufälligen Positionen auf den Schirm. |
| |
Dazu benötigt man im Grunde weder Buttons noch Textfelder, denn die Zeichnung kann einfach auf einem gewöhnlichen JFrame erzeugt werden. Wir betrachten dazu ein berühmtes Beispiel: | Dazu benötigt man im Grunde weder Buttons noch Textfelder, denn die Zeichnung kann einfach auf einem gewöhnlichen JFrame erzeugt werden. Wir betrachten dazu ein berühmtes Beispiel: |
Wir verwenden im folgenden noch die Methode clearRect(x1,y1, breite, höhe), die ein Rechteck mit linkem oberem Punkt (x1/y1) und der angegebenen Breite und Höhe löscht. | Wir verwenden im folgenden noch die Methode clearRect(x1,y1, breite, höhe), die ein Rechteck mit linkem oberem Punkt (x1/y1) und der angegebenen Breite und Höhe löscht. |
| |
Aufgaben | ====== Aufgabenblock 2 ====== |
- Erstelle ein Programm, das 100 Linien mit zufälligen Anfangs- und Endpunkten zeichnet. [[q1:Lösung Linien|Lösung]] {{ :q1:linien.png?direct&400 |}} | |
- Erstelle ein Programm, das einen zufälligen Polygonzug (d.h. der Anfangspunkt der nächsten Linie ist der Endpunkt der vorherigen Linie) mit 100 Linien in ein Frame zeichnet. Der Start soll im Ursprung sein. [[q1:Lösung Poly|Lösung]] | ===== Aufgabe 1 ===== |
- In der folgenden Aufgabe sollen farbige Linien verwendet werden. Dazu gibt es die bereits bekannte Farbklasse Color, die die Standardfarben als Methode beherrscht (z.B. Color.red, s.o.). Daneben kann man Farben aus ihren Rot- Blau und Grünanteilen mischen. Diese Anteile werden durch Zahlen zwischen 0 und 255 angegeben: <code java>Color farbe = new Color(rotanteil,gruenanteil, blauanteil); g.setColor(farbe);</code> Das Programmstück ist wie folgt zu verstehen: In den Int-Variablen rotanteil, blauanteil, gruenanteil stehen die Zahlen für die entsprechenden Anteile. Der gewählte Name für die Instanz der Klasse Color, in der die Farbe gespeichert wird, ist (sinnigerweise) „farbe“. Der Befehl setColor mit einem Parameter vom Typ Color setzt die Zeichenfarbe solange auf die gewählte Farbe, bis ein neuer Zeichenbefehl diese Farbe ändert. Außerdem verwenden wir einen weiteren Befehl zum Zeichnen von Rechtecken: <code java>g.drawRect(x1,y1,breite,hoehe)</code> Dabei ist P(x1,y1) der linke obere Punkt des Rechtecks. [[q1:Lösung Frabkram|Lösung]] | Erstelle ein Programm, das 100 Linien mit zufälligen Anfangs- und Endpunkten zeichnet. [[q1:Lösung Linien|Lösung]] {{ :q1:linien.png?direct&400 |}} |
- Erstelle nun ein Programm, das 100 zufällige Rechtecke in zufälligen Farben in ein Java-Fenster zeichnet. [[q1:Lösung Rechtecke|Lösung]] | ===== Aufgabe 2 ===== |
- Zeichne das dargestellte Muster, so dass es sich an die Höhe und Breite des Fensters anpasst: [[q1:Lösung Muster|Lösung]] | Erstelle ein Programm, das einen zufälligen Polygonzug (d.h. der Anfangspunkt der nächsten Linie ist der Endpunkt der vorherigen Linie) mit 100 Linien in ein Frame zeichnet. Der Start soll im Ursprung sein. [[q1:Lösung Poly|Lösung]] |
- Ändere die letzte Aufgabe so ab, dass nur grüne Linien auf schwarzem Hintergrund gezeichnet werden. Das Abändern des Hintergrunds passiert mit dem Befehl setBackground, der einen Parameter vom Typ Color erwartet, also z.B. setBackground(Color.black). [[q1:Lösung Buntes|Lösung]] | ===== Aufgabe 3 ===== |
- Es soll ein Ufo gezeichnet werden, das die folgenden Abmessungen hat: {{ :q1:ufo.png?direct&400 |}} Die Koordinaten sollen dabei relativ, d.h. in Bezug zur linken oberen Ecke formuliert werden, der obere Punkt des unbekannten Flugobjekts hat also die Koordinaten (x+15/y-10). Nach dem Zeichnen soll das Ufo natürlich noch über den Bildschirm fliegen. Ergänze das Programm zunächst so, dass es sich horizontal über den gesamten Bildschirm bewegt! [[q1:Lösung Ufo|Lösung]] | In der folgenden Aufgabe sollen farbige Linien verwendet werden. Dazu gibt es die bereits bekannte Farbklasse Color, die die Standardfarben als Methode beherrscht (z.B. Color.red, s.o.). Daneben kann man Farben aus ihren Rot- Blau und Grünanteilen mischen. Diese Anteile werden durch Zahlen zwischen 0 und 255 angegeben: <code java>Color farbe = new Color(rotanteil,gruenanteil, blauanteil); g.setColor(farbe);</code> Das Programmstück ist wie folgt zu verstehen: In den Int-Variablen rotanteil, blauanteil, gruenanteil stehen die Zahlen für die entsprechenden Anteile. Der gewählte Name für die Instanz der Klasse Color, in der die Farbe gespeichert wird, ist (sinnigerweise) „farbe“. Der Befehl setColor mit einem Parameter vom Typ Color setzt die Zeichenfarbe solange auf die gewählte Farbe, bis ein neuer Zeichenbefehl diese Farbe ändert. Außerdem verwenden wir einen weiteren Befehl zum Zeichnen von Rechtecken: <code java>g.drawRect(x1,y1,breite,hoehe)</code> Dabei ist P(x1,y1) der linke obere Punkt des Rechtecks. [[q1:Lösung Frabkram|Lösung]] |
| ===== Aufgabe 4 ===== |
| Erstelle nun ein Programm, das 100 zufällige Rechtecke in zufälligen Farben in ein Java-Fenster zeichnet. [[q1:Lösung Rechtecke|Lösung]] |
| ===== Aufgabe 5 ===== |
| Zeichne das dargestellte Muster, so dass es sich an die Höhe und Breite des Fensters anpasst: [[q1:Lösung Muster|Lösung]] |
| ===== Aufgabe 6 ===== |
| Ändere die letzte Aufgabe so ab, dass nur grüne Linien auf schwarzem Hintergrund gezeichnet werden. Das Abändern des Hintergrunds passiert mit dem Befehl setBackground, der einen Parameter vom Typ Color erwartet, also z.B. setBackground(Color.black). [[q1:Lösung Buntes|Lösung]] |
| ===== Aufgabe 7 ===== |
| Es soll ein Ufo gezeichnet werden, das die folgenden Abmessungen hat: {{ :q1:ufo.png?direct&400 |}} Die Koordinaten sollen dabei relativ, d.h. in Bezug zur linken oberen Ecke formuliert werden, der obere Punkt des unbekannten Flugobjekts hat also die Koordinaten (x+15/y-10). Nach dem Zeichnen soll das Ufo natürlich noch über den Bildschirm fliegen. Ergänze das Programm zunächst so, dass es sich horizontal über den gesamten Bildschirm bewegt! [[q1:Lösung Ufo|Lösung]] |
<code JAVA> public void paint(Graphics g) | <code JAVA> public void paint(Graphics g) |
{ | { |