api:documentation:gng:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
api:documentation:gng:start [2022/06/21 18:08] – [Methoden der Klasse Figur] Martin Pabst | api:documentation:gng:start [2023/06/11 15:09] (aktuell) – Martin Pabst | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Graphics' | ====== Graphics' | ||
- | <WRAP center round info 80%> | + | <WRAP center round info 70%> |
- | Die Autoren der [[https:// | + | Die Autoren der [[https:// |
* Die Vorlagen für die Buchaufgaben finden Sie [[https:// | * Die Vorlagen für die Buchaufgaben finden Sie [[https:// | ||
* Hier die [[http:// | * Hier die [[http:// | ||
- | Im Folgenden eine Beschreibung, | + | Im Folgenden eine Beschreibung, |
* Eine einführende Beschreibung der API ist mir nicht bekannt. Falls Sie eine kennen, schreiben Sie mir bitte, ich verlinke sie gerne! | * Eine einführende Beschreibung der API ist mir nicht bekannt. Falls Sie eine kennen, schreiben Sie mir bitte, ich verlinke sie gerne! | ||
- | * Falls Sie unten Fehler finden oder Verbesserungsbedarf, | + | * Falls Sie unten Fehler finden oder Verbesserungsbedarf, |
</ | </ | ||
Zeile 52: | Zeile 52: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Zeile 70: | Zeile 70: | ||
* Das **Rechteck** ist 100 Pixel breit, 100 Pixel hoch und achsenparallel. Seine Linke obere Ecke befindet sich bei (10/10). Drehpunkt ist sein Diagonalenschnittpunkt. Die Methode '' | * Das **Rechteck** ist 100 Pixel breit, 100 Pixel hoch und achsenparallel. Seine Linke obere Ecke befindet sich bei (10/10). Drehpunkt ist sein Diagonalenschnittpunkt. Die Methode '' | ||
* Der **Kreis** hat einen Radius von 50 Pixel, sein Mittelpunkt (= Drehpunkt) befindet sich bei (60/60). Die Methode '' | * Der **Kreis** hat einen Radius von 50 Pixel, sein Mittelpunkt (= Drehpunkt) befindet sich bei (60/60). Die Methode '' | ||
- | * Die Eckpunkte des **Dreiecks** haben die Koordinaten '' | + | * Die Eckpunkte des **Dreiecks** haben die Koordinaten '' |
* Das Text-Objekt schreibt initial " | * Das Text-Objekt schreibt initial " | ||
Zeile 123: | Zeile 123: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Zeile 184: | Zeile 184: | ||
===== Die Klasse Figur ===== | ===== Die Klasse Figur ===== | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
- | Ein Objekt der Klasse '' | + | Ein Objekt der Klasse '' |
- | Ein Objekt der Klasse Figur kann - in Maßen - auch animiert werden. Dazu ist es jedoch nötig, für jeden Animationsschritt alle Bestandteile der Figur zu löschen und neu zu zeichnen. | + | Ein Objekt der Klasse Figur kann - in Maßen - auch animiert werden. Dazu ist es jedoch nötig, für jeden Animationsschritt alle Bestandteile der Figur zu löschen und neu zu zeichnen. \\ \\ |
+ | Die Idee hinter der Klasse '' | ||
</ | </ | ||
+ | ==== Beispiel: Mit den Cursortasten steuerbares Männchen ==== | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Zeile 291: | Zeile 292: | ||
* **void FigurteilFestlegenEllipse(int x, int y, int breite, int höhe, String farbe)**: Erzeugt eine Ellipse und fügt sie der Figur hinzu. x/y ist die linke obere Ecke der bounding box der Ellipse (d.h. des kleinsten achsenparallelen umgebenden Rechtecks), '' | * **void FigurteilFestlegenEllipse(int x, int y, int breite, int höhe, String farbe)**: Erzeugt eine Ellipse und fügt sie der Figur hinzu. x/y ist die linke obere Ecke der bounding box der Ellipse (d.h. des kleinsten achsenparallelen umgebenden Rechtecks), '' | ||
* **void FigurteilFestlegenRechteck(int x, int y, int breite, int höhe, String farbe)**: Erzeugt ein achsenparalleles Rechteck und fügt es der Figur hinzu. x/y ist die linke obere Ecke des Rechtecks. Die Koordinaten sind relativ zum ' | * **void FigurteilFestlegenRechteck(int x, int y, int breite, int höhe, String farbe)**: Erzeugt ein achsenparalleles Rechteck und fügt es der Figur hinzu. x/y ist die linke obere Ecke des Rechtecks. Die Koordinaten sind relativ zum ' | ||
- | * **void AktionAusführen()**: | + | * **void AktionAusführen()**: |
* **void TasteGedrückt(char taste)**: Diese Methode wird aufgerufen, wenn der Benutzer eine Nicht-Sondertaste drückt. Übergeben wird das Zeichen, das der gedrückten Taste entspricht. Diese Methode kann überschrieben und so mit eigenen Anweisungen gefüllt werden, damit das eigene Programm auf Tastendrucke reagieren kann. | * **void TasteGedrückt(char taste)**: Diese Methode wird aufgerufen, wenn der Benutzer eine Nicht-Sondertaste drückt. Übergeben wird das Zeichen, das der gedrückten Taste entspricht. Diese Methode kann überschrieben und so mit eigenen Anweisungen gefüllt werden, damit das eigene Programm auf Tastendrucke reagieren kann. | ||
* **void SonderTasteGedrückt(int taste)**: Diese Methode wird aufgerufen, wenn der Benutzer eine Sondertaste drückt. Übergeben wird das Zeichen, das der gedrückten Taste entspricht. Diese Methode kann überschrieben und so mit eigenen Anweisungen gefüllt werden, damit das eigene Programm auf Tastendrucke reagieren kann. Zur Kodierung der Sondertasten sie Abschnitt ' | * **void SonderTasteGedrückt(int taste)**: Diese Methode wird aufgerufen, wenn der Benutzer eine Sondertaste drückt. Übergeben wird das Zeichen, das der gedrückten Taste entspricht. Diese Methode kann überschrieben und so mit eigenen Anweisungen gefüllt werden, damit das eigene Programm auf Tastendrucke reagieren kann. Zur Kodierung der Sondertasten sie Abschnitt ' | ||
* **void MausGeklickt(int x, int y, int anzahl)**: Diese Methode wird aufgerufen, wenn die linke Maustaste (irgendwo im Zeichenbereich, | * **void MausGeklickt(int x, int y, int anzahl)**: Diese Methode wird aufgerufen, wenn die linke Maustaste (irgendwo im Zeichenbereich, | ||
</ | </ | ||
+ | |||
+ | ===== Zeichenfenster, | ||
+ | <WRAP center round tip 80%> | ||
+ | Das Zeichenfenster besitzt statische Methoden zur Steuerung des Taktgebers, zum Auslesen der geometrischen Daten der Malfläche und zum Registrieren von Aktionsempfängern, | ||
+ | </ | ||
+ | |||
+ | ==== Methoden der Klasse Zeichenfenster ==== | ||
+ | <WRAP center round info 80%> | ||
+ | * **static int MalflächenBreiteGeben()**: | ||
+ | * **static int MalflächenHöheGeben()**: | ||
+ | * **static void TaktgeberStarten()**: | ||
+ | * **static void TaktgeberStoppen()**: | ||
+ | * **static void TaktdauerSetzen(int dauer)**: Setzt die Taktdauer des Zeitgebers in Millisekunden | ||
+ | * **static void AktionsEmpfängerEintragen(AktionsempfaengerNeu)**: | ||
+ | * **static void AktionsEmpfängerEntfernen(Aktionsempfaenger alt)**: Trägt einen Aktionsempfänger wieder aus (Observer-Pattern) | ||
+ | </ | ||
+ | |||
+ | ==== Beispiel 1: Einfacher Timer durch Implementieren des Interfaces Aktionsempfänger ==== | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | SystemTools.setSpeed(-1); | ||
+ | Zeichenfenster.AktionsEmpfängerEintragen(new Zeitanzeige()); | ||
+ | Zeichenfenster.TaktdauerSetzen(1000); | ||
+ | Zeichenfenster.TaktgeberStarten(); | ||
+ | println(" | ||
+ | while(true); | ||
+ | |||
+ | |||
+ | class Zeitanzeige implements Aktionsempfaenger { | ||
+ | |||
+ | GText textfeld = new GText(); | ||
+ | int zeit = 0; | ||
+ | boolean running = true; | ||
+ | |||
+ | | ||
+ | textfeld.TextGrößeSetzen(100); | ||
+ | textfeld.TextSetzen(" | ||
+ | } | ||
+ | |||
+ | public void Ausführen() { | ||
+ | if(running) { | ||
+ | zeit++; | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public void Taste(char taste) { | ||
+ | if(taste == ' | ||
+ | | ||
+ | } | ||
+ | | ||
+ | | ||
+ | } else { | ||
+ | println(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public void SonderTaste(int taste) { | ||
+ | //TODO: Methode füllen | ||
+ | } | ||
+ | |||
+ | public void Geklickt(int x, int y, int anzahl) { | ||
+ | //TODO: Methode füllen | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Beispiel 2: Einfacher Timer durch Erben von der Klasse Ereignisbehandlung ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | SystemTools.setSpeed(-1); | ||
+ | Zeichenfenster.TaktdauerSetzen(200); | ||
+ | Zeichenfenster.TaktgeberStarten(); | ||
+ | |||
+ | Test t = new Test(); | ||
+ | |||
+ | while (true); | ||
+ | |||
+ | |||
+ | |||
+ | class Test extends Ereignisbehandlung { | ||
+ | |||
+ | int n = 0; | ||
+ | |||
+ | | ||
+ | println(n++); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Die folgenden drei Methoden können bei Bedarf ebenfalls | ||
+ | * überschrieben werden: | ||
+ | */ | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | </ | ||
api/documentation/gng/start.1655827716.txt.gz · Zuletzt geändert: 2022/06/21 18:08 von Martin Pabst