Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
q1:java-methoden [2017/07/11 06:47] – admin03 | q1:java-methoden [2017/08/14 06:15] (aktuell) – [Aufgabe 1] admin03 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== 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: | ||
Zeile 42: | Zeile 45: | ||
} | } | ||
</ | </ | ||
- | ====== | + | ====== Erläuterungen: |
- | Erläuterungen: | + | |
Zeile 52: | Zeile 54: | ||
* 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. | ||
- | ====== | + | ====== |
- | * 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) </ | + | 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) </ |
- | | + | ===== Aufgabe 1 ===== |
- | | + | Erweitere das Ufo-Programm wie folgt: |
- | | + | ==== Aufgabe a ==== |
- | | + | Lasse neben dem grünen Ufo von links nach rechts ein blaues Ufo von rechts nach links an einer anderen y-Koordinate fliegen. |
- | | + | ==== Aufgabe b ==== |
- | | + | 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) </ | ||
+ | ===== 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: | ||
+ | |||
+ | <code java> | ||
+ | import java.awt.*; | ||
+ | import javax.swing.*; | ||
+ | |||
+ | public class Graf_HaWe extends JFrame | ||
+ | { | ||
+ | public Graf_HaWe(String title) | ||
+ | { | ||
+ | super(title); | ||
+ | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); | ||
+ | int frameWidth = 400; | ||
+ | int frameHeight = 400; | ||
+ | setSize(frameWidth, | ||
+ | Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); | ||
+ | int x = (d.width - getSize().width) / 2; | ||
+ | int y = (d.height - getSize().height) / 2; | ||
+ | setLocation(x, | ||
+ | setResizable(false); | ||
+ | Container cp = getContentPane(); | ||
+ | cp.setLayout(null); | ||
+ | cp.setBackground(Color.WHITE); | ||
+ | setVisible(true); | ||
+ | } // end of public Graf_HaWe | ||
+ | |||
+ | @Override | ||
+ | public void paint(Graphics g) // die zentrale Methode, die | ||
+ | // eine Zeichenfläche vom Typ Graphics als Parameter übergibt | ||
+ | // (mit dem etwas kurz geratenen Namen g) | ||
+ | { | ||
+ | g.drawString(" | ||
+ | // vorher angegebene Grafikfläche g an die Pixelposition 100 waagrecht und | ||
+ | // 100 senkrecht gerechnet von links oben. | ||
+ | g.setColor(Color.red); | ||
+ | g.drawLine(100, | ||
+ | // die Koordinaten des Anfangs- und des Endpunktes der Linie | ||
+ | } | ||
+ | |||
+ | public static void main(String[] args) | ||
+ | { | ||
+ | new Graf_HaWe(" | ||
+ | } // end of main | ||
+ | } // end of class Graf_HaWe | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Die Ausgabe von Grafik basiert übrigens auf einem zweidimensionalen Koordinatensystem, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <WRAP notice> Wichtig: Die y-Achse beginnt bei der linken oberen Ecke des Fensters, d.h. für kleine y-Werte werden die Zeichnungen durch die Menüleiste des Fensters überdeckt!! </ | ||
+ | |||
+ | |||
+ | Wir verwenden im folgenden noch die Methode clearRect(x1, | ||
+ | |||
+ | ====== Aufgabenblock 2 ====== | ||
+ | |||
+ | ===== Aufgabe 1 ===== | ||
+ | | ||
+ | ===== Aufgabe 2 ===== | ||
+ | | ||
+ | ===== Aufgabe 3 ===== | ||
+ | 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> | ||
+ | ===== Aufgabe 4 ===== | ||
+ | | ||
+ | ===== Aufgabe 5 ===== | ||
+ | | ||
+ | ===== Aufgabe 6 ===== | ||
+ | | ||
+ | ===== Aufgabe 7 ===== | ||
+ | Es soll ein Ufo gezeichnet werden, das die folgenden Abmessungen hat: {{ : | ||
+ | <code JAVA> public void paint(Graphics g) | ||
+ | { | ||
+ | int y=100; | ||
+ | int x=10; | ||
+ | |||
+ | // | ||
+ | | ||
+ | | ||
+ | ... | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||