GraphicsApp API
Eine überarbeitete und angepasste Variante der originalen GraphicsApp-Umgebung
GraphicsApp.java
gehe zur Dokumentation dieser Datei
1package de.ur.mi.oop.app;
2
3import de.ur.mi.oop.colors.Color;
4import de.ur.mi.oop.events.*;
5import de.ur.mi.oop.graphics.Background;
6
7import java.awt.event.MouseEvent;
8
9/*! \mainpage GraphicsApp API
10 *
11 * <p>Die <i>GraphicsApp</i>-Bibliothek erlaubt die Umsetzung einfacher 2D-Anwendungen mit der Programmiersprache Java und richtet
12 * sich explizit an Programmieranfänger*innen. Die Bibliothek wird von Mitarbeiter*innen des
13 * <a href= "https://www.uni-regensburg.de/sprache-literatur-kultur/medieninformatik/aktuelles/index.html">Lehrstuhls für Medieninformatik</a>
14 * der Universität Regensburg <a href="https://github.com/OOP-Regensburg/GraphicsApp-Reborn-Library">entwickelt</a>. Der Quellcode kann
15 * auf <a href="https://github.com/OOP-Regensburg/GraphicsApp-Reborn-Library">GitHub</a> eingesehen werden und unter der MIT-Lizenz verwendet werden.
16 * Vorbereitete JAR-Dateien für die Integration in eigene Projekte finden sich ebenfalls <a href="https://github.com/OOP-Regensburg/GraphicsApp-Reborn-Library/releases">
17 * auf GitHub</a>.Hauptverantwortlicher Ansprechpartner für die Weiterentwicklung ist <a href="go.ur.de/alexanderbazo">Alexander Bazo</a>.</p>
18 * <p>Mit der <i>GraphicsApp</i>-Umgebung können Programmieranfänger*innen erste, interaktive Java-Programme entwickeln. Grundlegende Konzepte sind dabei
19 * eine <b>Zeichenfläche</b>, ein <i>Draw Loop</i> und ein Reihe von <b>Klassen</b> zur Repräsentation von graphischen Primitiven, Texten und Bildern auf dieser
20 * Zeichenfläche. Ergänzen stehen einfache Möglichkeiten zur Ausgabe von Audio-Dateien und eine Event-basierte Möglichkeit zur Nutzung von Maus- und
21 * Tastatureingaben zur Verfügung.</p>
22 * <p>Alle <i>GraphicsApp</i>-Anwendungen basieren auf der Klasse <code>GraphicsApp</code>. Deren <code>draw</code>-Methode bildet die Grundlage für
23 * den <i>Draw Loop</i> und wird zur Laufzeit ca. 60 mal pro Sekunde aufgerufen. Innerhalb des <i>Loops</i> können graphische Elemente erstellt,
24 * bewegt und gezeichnet werden. Auf dieser Basis lassen sich statische Collagen, einfache Animationen und erste, interaktive Anwendungen bzw. Spiele umsetzen.</p>
25 */
26
27/**
28 * Dies ist die abstrakte Basisklasse für alle GraphicsApp-Anwendungen. Jedes Programm erbt von dieser Klasse
29 * und verfügt über die hier implementierten Funktionen. Die Programmier*innen überschreibt die `draw()`- und
30 * `initialize()`-Methoden, um die spezifischen Funktionen des eigenen GraphicsApp-Programms umzusetzten. Ein
31 * solches Programm kann dann über eine `main`-Methode und die Verwendung desGraphicsAppLauncher gestartet werden.
32 */
34
35 private Background background;
36
37 public GraphicsApp() {
38 super();
39 }
40
41 /**
42 * Wird einmalig zu Programmbeginn aufgerufen. Hier sollte Code stehen,
43 * der alles vorbereitet, was notwendig für die Programmausführung ist.
44 * Zeichenbefehle haben hier keinen Platz.
45 */
46 public abstract void initialize();
47
48 /**
49 * Wird in einer Schleife aufgerufen, solange die GraphicsApp-Anwendung läuft. Hier sollten
50 * alle GraphicsObjects aktualisiert und gezeichnet werden.
51 */
52 public abstract void draw();
53
54
55 @Override
56 public void onMouseMoved(MouseMovedEvent event) {
57
58 }
59
60 @Override
61 public void onMousePressed(MousePressedEvent event) {
62
63 }
64
65 @Override
67
68 }
69
70 @Override
71 public void onMouseDragged(MouseDraggedEvent event) {
72
73 }
74
75 /**
76 * Wenn Tastendrücke abgefangen werden sollen, muss diese Methode von Kindklassen überschrieben werden
77 *
78 * @param event Der Tasten-Event, der die Taste enthält, die gedrückt wurde
79 */
80 @Override
81 public void onKeyPressed(KeyPressedEvent event) {
82
83 }
84
85 @Override
86 public void onKeyReleased(KeyReleasedEvent event) {
87
88 }
89
90 /**
91 * Zeichnet den Hintergrund der GraphicsApp-Anwendung
92 *
93 * @param color die Hintergrundfarbe
94 */
95 protected void drawBackground(Color color) {
96 if (background == null) {
97 background = new Background(getWidth(), getHeight());
98 }
99 background.setColor(color);
100 background.draw();
101 }
102
103 /**
104 * Setzt die Bildwiederholrate der GraphicsApp-Anwendung
105 *
106 * @param frameRate Bilder pro Sekunde
107 */
108 protected void setFrameRate(int frameRate) {
109 getConfig().setFrameRate(frameRate);
110 }
111
112 /**
113 * Zeigt die aktuelle Bildwiederholrate in der Titelleiste der Anwendung an
114 */
115 protected void showFrameRate() {
117 }
118
119 /**
120 * Blendet den Maus-Cursor im Anwendungsfenster ein
121 */
122 protected void showCursor() {
124 }
125
126 /**
127 * Blendet den Maus-Cursor im Anwendungsfenster aus
128 */
129 protected void hideCursor() {
131 }
132
133 public int getWidth() {
134 return getConfig().getWidth();
135 }
136
137 public int getHeight() {
138 return getConfig().getHeight();
139 }
140
141 public void setCanvasSize(int width, int height) {
142 getConfig().setWidth(width);
143 getConfig().setHeight(height);
144 }
145}
void setFrameRate(int frameRate)
Definition: Config.java:69
void setFrameRateVisibility(boolean frameRateIsVisible)
Definition: Config.java:107
void setHeight(int height)
Definition: Config.java:60
void setWidth(int width)
Definition: Config.java:43
void setCursorVisibility(boolean isVisible)
Definition: Config.java:98
void onKeyReleased(KeyReleasedEvent event)
void onMousePressed(MousePressedEvent event)
void setCanvasSize(int width, int height)
void onMouseDragged(MouseDraggedEvent event)
void onKeyPressed(KeyPressedEvent event)
void drawBackground(Color color)
void onMouseReleased(MouseReleasedEvent event)
abstract void initialize()
void setFrameRate(int frameRate)
void onMouseMoved(MouseMovedEvent event)