Swing Aktives Zeichen für Spieleprogrammierung ?

kaoZ

Top Contributor
Ich hab beim stöbern mal dieses Tutorial gefunden ,

https://www.youtube.com/watch?v=9dzhgsVaiSo

(der Fehler im Video das er versucht das Graphics Objekt sich selbst zuzuweisen, fällt ihm selber am Ende des Videos auf :D)

was mir aufgefallen ist , ist das der Ersteller hier aktiv über getGraphics(); zeichnet, anstatt dies passiv zu machen , ist es so das man es in der Spiele Programmierung so macht?

Normalerweise überschreibt man ja paint/paintComponent und führt alle Zeichenoperationen dort aus, nun ist die Frage wie sich dann in Verbindung mit dem Gameloop gestaltet, wäre super wenn mir da Fix jemand einen Hinweis oder einen Verweis auf ein Tutorial geben könnte.

Oder mir sagt ob hier tatsächlich nur die Möglichkeit besteht dies über das aktives Zeichnen zu realisieren.
 
Zuletzt bearbeitet:

turtle

Top Contributor
ist es so das man es in der Spiele Programmierung so macht
Das ist ein Ansatz, der Vorteile bietet und deswegen wird er häufig eingesetzt.

Du möchtest ja eine hohe FPS-Rate haben und da stören ALLE Dinge, die du nicht unter Kontrolle hast.

Beispielsweise kann die JVM dein Fenster minimieren, unterbrechen und ähnliches, unter anderem
deshalb laufen viele Spiele im Vollbildmodus. Daher ist es angenehmer das Rendering eines Spiels selbst zu übernehmen und sich nicht darauf zu verlassen, das ein Paint-Request von der JVM erzeugt und an das Spiel weitergereicht wurde.
 

kaoZ

Top Contributor
Also damit ich das jetzt auch richtig verstehe, wenn ich selber dafür sorgen will, das dann gezeichnet werden soll wann ich es für richtig halte , sprich z.B 60 (fps) mal pro Sekunde, sollte ich mich selbst um die Implementierung kümmern und einfach nur den Grafikkontext übergeben mit und oder auf welchem ich zeichnen möchte , um ggf. verzögerte aufrufe / ungewolltes Verhalten, durch die JVM wie es z.B beim anstoßen eines neuzeichnens durch repaint(); der Fall sein kann zu unterbinden ?

Das Rendering ist ja letzen endes nur die Umsetzung der Darstellung, sprich das was ich dann in der draw(Graphics g) oder drawToScreen(Graphics g) Methoden implementiere, und mir dann über den Grafikkontext des Systems auf den jeweiligen Panel / Frame etc. gezeichnet wird.

Könnte man es so stehen lassen oder findest du noch gravierende Fehler ?
 
Zuletzt bearbeitet:

turtle

Top Contributor
Ja, ist richtig.

Um zum Beispiel Flackern während des Neuzeichnens zu verhindern, wird oft in ein separates BufferedImage off-screen gemalt und dann alles auf einmal "gezeichnet". Dieses Double-Buffering macht beispielsweise Swing intern ebenfalls.
 

kaoZ

Top Contributor
Ahhh, alles klar.

Also könnte man nun hergehen und z.B ein Menü ruhig so implementieren :

Java:
import java.awt.Graphics;
import java.awt.Graphics2D;

public class GameMenu {
	
	private String[] options;
	
	public GameMenu() {
		addDefaultOptions();
    }
	
	public GameMenu(String...options){
		this.options = options;
	}
	
	public void draw(int x, int y, int offset, Graphics g){
		
		Graphics2D g2d = (Graphics2D) g;
		
		for (int i = 0; i < options.length; i++) {
	        g2d.drawString(options[i], x, y + offset);
        }
		
	}
	
	private void addDefaultOptions(){
		this.options = new String[]{"New Game","Load Game","Options", "Quit"};
	}
}

und dann in der Spielklasse und dessen draw() methode , dem Menü einfach den Grafikkontext übergeben auf welchem ich es zeichnen lassen möchte, z.B eine Hintergrundgrafik ( BufferedImage ), welche ja bei Ihrer Instanziierung ihr eigenes Graphics Object vom System erhält.

Also sollte man auch das Zeichnen / das rendering des Hintergrundes auf den eigentlichen JPanel dann selbst übernehmen ja, und auch hier vermeiden per paintComponent zu zeichnen da ja auf dieser Grafik so gut wie alle Aktionen ausgeführt werden ?

[EDIT]Für einen einfachen Testlauf wird doch aber ein einfaches Zeichen reichen oder ?
das mit dem buffering / vorzeichnen kann man doch später wenn es komplexer wird doch einfach implementieren oder ?
[/EDIT]
 
Zuletzt bearbeitet:

turtle

Top Contributor
Viel Glück und Erfolg!

Daran merke ich, wie schnell die Zeit rennt. Meine Zertifizierung war noch zu SUN-Zeiten und da hiessen sie noch SCJP bzw. SCJD.
 

kaoZ

Top Contributor
Vielen Dank ;)

Naja, da ich das hier alles in Eigenregie mache , dauert es immer ein wenig, ich muss leider nebenbei noch auf Schicht :D

Aber ich bin doch recht zuversichtlich, insofern ich die ganzen Fallstricke drauf hab ( irgendwann ), sollte das schon klappen, ich muss mich lediglich noch öfter mit nicht von mir geschriebenem Code auseinandersetzen, da der doch teilweise recht schwer zu lesen ist , und eben darauf auch ein großer teil der Zertifizierungs-tücken beruht ^^

mal abgesehen davon das die OCA nur in technischem Englisch abgelegt werden kann :toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Zuletzt aktives Fenster, vor dem aktuell aktiven AWT, Swing, JavaFX & SWT 2
T JTextPane, Mausklick, aktives Wort AWT, Swing, JavaFX & SWT 2
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
L Swing Tastatur zeichen AWT, Swing, JavaFX & SWT 4
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
L JavaFX ASCII Zeichen /char von KeyEvent erhalten AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
C JavaFX Tiefgestellte Zeichen in fxml AWT, Swing, JavaFX & SWT 2
B EventHandler für durch Tastenkombination erzeugte Zeichen AWT, Swing, JavaFX & SWT 3
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
A Zeichen-Steuerelement in Swing AWT, Swing, JavaFX & SWT 0
D Swing Manuellen Kreis zeichen AWT, Swing, JavaFX & SWT 22
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
R einzelne Zeichen in jTable einlesen AWT, Swing, JavaFX & SWT 10
S SWT [TextBox] Bestimmtes Zeichen entfernen unterbinden AWT, Swing, JavaFX & SWT 3
P readLine solange es mit einem bestimmten Zeichen anfängt AWT, Swing, JavaFX & SWT 5
P Komische Zeichen beim Abspeichern von TextFelder AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
P 2D-Grafik versch. Rectangles aus array von textfelder zeichen AWT, Swing, JavaFX & SWT 6
DEvent Swing JTextField Anzahl an sichtbaren Zeichen AWT, Swing, JavaFX & SWT 4
D JLabel und JPanel -> Neu zeichen?! oO AWT, Swing, JavaFX & SWT 2
E jTextFiled max 160 Zeichen? AWT, Swing, JavaFX & SWT 4
Luk10 Swing Problem mit Zeichen-Thread AWT, Swing, JavaFX & SWT 8
A Rechteck zeichen AWT, Swing, JavaFX & SWT 4
Q AWT Choice ein Zeichen hinzufügen AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Textbasiertes 2D Spiel, jedes Zeichen manipulierbar AWT, Swing, JavaFX & SWT 7
R 2D-Grafik auf JPanel zeichen - ohne @Override paintComponent AWT, Swing, JavaFX & SWT 6
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
T Zeichen/char in Bild umwandeln und darstellen AWT, Swing, JavaFX & SWT 10
2 Bücher über Zeichen und Baumalgorithmen AWT, Swing, JavaFX & SWT 5
T Zeichen zählen JTextPane AWT, Swing, JavaFX & SWT 4
F Zeichen per Menuitem funktioniert nicht AWT, Swing, JavaFX & SWT 2
V Nur zulässige Zeichen in JTable-Zellen eintragen können AWT, Swing, JavaFX & SWT 2
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
aze JTextfield nur so breit dass alle zeichen sichtbar sind AWT, Swing, JavaFX & SWT 2
3TageBart Ebenen in Zeichen-Programm implementieren AWT, Swing, JavaFX & SWT 9
P Zeichen abhängig davon, ob sich eine Variable geändert hat AWT, Swing, JavaFX & SWT 2
G Blinkenden Punkt zeichen AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
J jTextarea Anzahl Zeichen in einer Zeile begrenzen AWT, Swing, JavaFX & SWT 2
Lazybone CMYK Zeichen AWT, Swing, JavaFX & SWT 12
H Polyline zeichen, aber wie? AWT, Swing, JavaFX & SWT 2
D jTable ausdrucken => € zeichen wird nicht richtig angezei AWT, Swing, JavaFX & SWT 7
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
K UNICODE ZEICHEN in den SWing-GUIs AWT, Swing, JavaFX & SWT 4
B Dreiecke zeichen AWT, Swing, JavaFX & SWT 3
D Zeichen ein Pixel mit Java2D AWT, Swing, JavaFX & SWT 15
C JFormattedTextField - nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 3
F Zeichen von Linien, Rechtecken, zb wie in paint AWT, Swing, JavaFX & SWT 2
B Zeichen werden im JFormattedTextField überschrieben AWT, Swing, JavaFX & SWT 3
C PI-Zeichen im JLabel AWT, Swing, JavaFX & SWT 3
G Zeilenumbruch nach n Zeichen in JTextArea AWT, Swing, JavaFX & SWT 24
U kleiner-Zeichen JEditorPanel (war: JOptionPane) AWT, Swing, JavaFX & SWT 5
T JLayerdPane: wie etwas über eine AWT Komponente zeichen? AWT, Swing, JavaFX & SWT 2
N Tastatur Zeichen einlesen ohne sichtbares Fenster AWT, Swing, JavaFX & SWT 8
D JTextPane: "Nichtdruckbare Zeichen" anzeigen & AWT, Swing, JavaFX & SWT 4
R letztes Zeichen aus textfeld auslesen AWT, Swing, JavaFX & SWT 2
M rendern von zeichen AWT, Swing, JavaFX & SWT 4
R Zeichen-Markierungrahmen AWT, Swing, JavaFX & SWT 5
F Eingabe in JPasswordField auf vier Zeichen beschränken AWT, Swing, JavaFX & SWT 3
M Transparentes gif als extra Klasse auf einen JFrame zeichen AWT, Swing, JavaFX & SWT 17
B ComboBox: nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 5
G Linien in ein Koordinatensystem zeichen AWT, Swing, JavaFX & SWT 7
H funktionen in ein koordinatensystem zeichen AWT, Swing, JavaFX & SWT 5
B Erstes Zeichen in einem String toUpperCase ??? AWT, Swing, JavaFX & SWT 4
bummerland ein zeichen nach einem zeilenumbruch einfügen AWT, Swing, JavaFX & SWT 4
J Anzeige ID und Markierung für Knoten in Eclipse & Swing AWT, Swing, JavaFX & SWT 4
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
D JavaFX Schadensberechnung für Kartenspiel AWT, Swing, JavaFX & SWT 1
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
L actionListener für Button AWT, Swing, JavaFX & SWT 97
izoards Textfeld für Zeit AWT, Swing, JavaFX & SWT 4
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
T Getter und Setter für eine Stage AWT, Swing, JavaFX & SWT 6
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
T Button für GUI programmieren AWT, Swing, JavaFX & SWT 1
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
M Hough-Transformation für Kreise und andere Formen AWT, Swing, JavaFX & SWT 3
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
MiMa Package Struktur für GUI Programmierung AWT, Swing, JavaFX & SWT 26
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben