Initialisierung von Oberfläche Richtig?

korbmeister

Aktives Mitglied
Hallo Leute, habe mich gestern an die Erstellung der Oberfläche für ein 2D Spiel (so wie Counterstrike 2D) gemacht. Nur habe ich noch ein paar Probleme nämlich erstens ich weiß nicht ob das so alles richtig ist wie ich das gemacht habe (Bufferstrategy etc) zweitens ist Awt überhaupt das richtige dafür? Wollte in mein Spiel Licht und Schatten einbauen so wie bei dem Spiel Left 4k Dead ist das so wie ich das im Moment aufgebaut habe überhaupt möglich, weil ich noch nicht verstanden habe wie ich ein Transparents Bild Lade etc? Und Drittens was ist der Unterschied zwischen Graphics und Graphics2D, habe gesehen das es bei Graphics2D ein paar Methoden mehr gibt, allerdings weiß ich nicht wie ich jetzt in meinem Code Graphics2D statt Graphics benutzen kann.

Java:
package Game;


import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
import Controls.Keyboard;
import Controls.Mouse;
import Level.Level;
import Player.Player;
import Textures.Textures;


public class Game extends Canvas  implements Runnable{
	

	private static final long serialVersionUID = 1L;
	private static Properties properties = new Properties();
	
	boolean running = false;

	Player player;
	Keyboard keyboard;
	Mouse mouse;
	Display display;
	Level level;
	Thread thread;
	JFrame frame = new JFrame();


	public Game(){
		Dimension size = new Dimension(properties.Width()*properties.Scale(),properties.Height()*properties.Scale());
		setPreferredSize(size);
	
		display = new Display();
		player = new Player();
		keyboard = new Keyboard();
		level = new Level();
		mouse = new Mouse();
	
		addKeyListener(keyboard);
		addMouseMotionListener(mouse);
	}
	
	public static void main(String [] args){
		Game game = new  Game();	
		game.frame.setResizable(true);
		game.frame.setTitle("CounterStrike 4D");
		game.frame.add(game);
		game.frame.pack();
		game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		game.frame.setLocationRelativeTo(null);		
		game.frame.setVisible(true);
		game.start();
		
	}
	
	public void start(){
		running = true;
		thread = new Thread(this, "Game");
		thread.start();
	}
	
	public synchronized void stop(){
		running = false;
		try  {
			thread.join();
		}
		catch (InterruptedException e){
			e.printStackTrace();
		}
	}

	public void run() {
		long lastTime = System.nanoTime();
		long timer =  System.currentTimeMillis();
		final double ns = 1000000000.0 / properties.UPS();  // Hier Updates pro Sekunde einstellen
		double delta = 0;
		int frames = 0;
		int updates = 0;
		requestFocus();

		while(running){
			long now = System.nanoTime();
			delta += (now-lastTime) / ns;			
			lastTime = now;		
			while (delta >= 1){
				update();
				updates++;
				delta--;
			}			
			
			render();
			frames++;
			
			if (System.currentTimeMillis() - timer > 1000){
				timer += 1000;
				frame.setTitle(  " | " + updates + " ups, " + frames + " fps");
				updates = 0;
				frames = 0;				
			}
		}	
		stop();
	}
	

	
	
	public void update(){
		keyboard.update();
		
		double temp = frame.getWidth()/ properties.Width();
		
		mouse.update(temp);
		player.update(keyboard, level);
		
	}
	

	
	public void render(){
		BufferStrategy bs = getBufferStrategy();
		if (bs == null){
			createBufferStrategy(2);
			return;
		}

		Graphics g = bs.getDrawGraphics();			
       
		
		g.setColor(Color.BLACK);
		g.fillRect(0 , 0, properties.Width()*properties.Scale(), properties.Height()*properties.Scale());
		level.render(player.posX(), player.posY(), g);
			
		g.dispose();
		bs.show();		
		
		
	}
}
 

Gucky

Top Contributor
Mit Canvas kenne ich mich nicht aus aber Swing könnte dafür das Bessere sein. Oder das gerade gehypte JavaFX, mit dem ich mich ebenfalls nicht auskenne. Bei Swing hast du kein Problem mit dem Flackern, welches in AWT, zumindest auf Frames, auftaucht.
Ich glaube, Graphics kann man auf Graphics2D casten. Du musst dir nur klar werden, was du eigentlich willst und dann das Hilfsmittel aussuchen. Nicht andersrum.
 

dzim

Top Contributor
Wenn keiner eine Idee hat, hilft es nicht unbedingt, dass du hier ständig "push"st...

Wenn dir die Tutorials (z.B. hier Trail: 2D Graphics (The Java™ Tutorials) ) nicht weiterhelfen und es hier keine Antwort gibt, musst du wohl akzeptieren, das es womöglich keines der Aktiven Mitglieder im Forum aus dem Stehgreif weiss.

Dem o.g. Tutorial aber entnehme ich folgendes:
This Graphics2D class extends the Graphics class to provide more sophisticated control over geometry, coordinate transformations, color management, and text layout. This is the fundamental class for rendering 2-dimensional shapes, text and images on the Java(tm) platform.
Sprich: Du hast wahrscheinlich mehr Möglichkeiten, die dargestellte Szene anzupassen. Ohne jemals damit gearbeitet zu haben, denke ich aber, dass du für die Spieleentwicklung durchaus eher Graphics2D verwenden solltest. Aber das ist nur ein "educated guess" aufgrund des JavaDoc-Eintrags.
 

dzim

Top Contributor
PS: Auch als JavaFX-Fanboy glaube ich nicht, dass du dort auf dem Canvas (ausser der HW-Beschleunigung - könnte allerdings auch sinnvoll sein) wirklich was gewinnst. Zum lernen genügt hier Swing allemal :)

PPS: Speaking of JavaFX - die beiden ersten Links, wenn man Google nach javafx 2d graphics fragt, scheinen recht hilfreich zu sein...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa JavaFX Fenster in JavaFX öffnen Schliessen (Initialisierung) AWT, Swing, JavaFX & SWT 20
C Swing Reihenfolge der Initialisierung von Komponenten AWT, Swing, JavaFX & SWT 6
X Swing Initialisierung des JTree AWT, Swing, JavaFX & SWT 12
M Probleme bei Initialisierung von JTabbedPane AWT, Swing, JavaFX & SWT 4
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
S Swing Oberfläche rekusiv updaten mit updateUi() AWT, Swing, JavaFX & SWT 10
M LookAndFeel Oberfläche wie Eclipse/Business Objects oder Solvatio AWT, Swing, JavaFX & SWT 2
T Java Swing Oberfläche aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
K Eclipse-Java Export/Import mit Oberfläche AWT, Swing, JavaFX & SWT 2
D Swing JComponent zeichnen ohne sie zur Oberfläche hinzuzufügen AWT, Swing, JavaFX & SWT 2
J prinzipielles verständnis für Oberfläche/Code-trennung AWT, Swing, JavaFX & SWT 5
T wieso leere Oberfläche? AWT, Swing, JavaFX & SWT 5
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
cedi Swing Problem mit Grafischer Oberfläche AWT, Swing, JavaFX & SWT 8
E Swing Grafische Oberfläche zur Ordnerauswahl AWT, Swing, JavaFX & SWT 6
Z Component für File-Browser ähnliche Oberfläche AWT, Swing, JavaFX & SWT 6
B Wegfindung - Oberfläche AWT, Swing, JavaFX & SWT 3
P Erste Versuche einer Grafischen Oberfläche AWT, Swing, JavaFX & SWT 8
S AWT Oberfläche integriert sich nicht in GTK-Theme AWT, Swing, JavaFX & SWT 5
Private Void Swing "Vier Gewinnt"-Oberfläche AWT, Swing, JavaFX & SWT 7
L Eigene Design Oberfläche erstellen AWT, Swing, JavaFX & SWT 3
D Mehrere Biler auf einer Oberfläche AWT, Swing, JavaFX & SWT 6
G Swing skalierbare Oberfläche AWT, Swing, JavaFX & SWT 2
W Oberfläche wird nicht koreckt gezeichnet AWT, Swing, JavaFX & SWT 5
Jenny87 AWT Tic Tac Toe oberfläche AWT, Swing, JavaFX & SWT 20
dl85hej meine erste Oberfläche AWT, Swing, JavaFX & SWT 3
multiholle Oberfläche MP3-Player AWT, Swing, JavaFX & SWT 2
A Oberfläche wir mit html-Frames aufbauen AWT, Swing, JavaFX & SWT 11
C Swing-Oberfläche wird auf einiges PCs nicht korrekt dargeste AWT, Swing, JavaFX & SWT 19
H JAVA Fenster Oberfläche AWT, Swing, JavaFX & SWT 3
L wie kann ich diese Oberfläche bauen ohne das gestreckt wird? AWT, Swing, JavaFX & SWT 18
S In JavaSwing Mailversand mit Oberfläche AWT, Swing, JavaFX & SWT 2
F Wie Oberfläche verbessern? (JButtons, Textfeld verkleinern) AWT, Swing, JavaFX & SWT 5
M Aus Swing Oberfläche Bild erzeugen AWT, Swing, JavaFX & SWT 39
F Zugriff auf Oberfläche bzw Trennung GUI / Logik AWT, Swing, JavaFX & SWT 3
T Problem mit Oberfläche und Thread AWT, Swing, JavaFX & SWT 10
G Ansprechende Java Oberfläche entwickeln AWT, Swing, JavaFX & SWT 10
B Probleme mit Öffnen einer GUI Oberfläche AWT, Swing, JavaFX & SWT 2
I Swing-Oberfläche wird nicht korrekt gezeichnet AWT, Swing, JavaFX & SWT 6
G Oberfläche löschen und neue erstellen AWT, Swing, JavaFX & SWT 4
R RAD Oberfläche für Eclipse gesucht AWT, Swing, JavaFX & SWT 4
G Tooltips auf grafischer Oberfläche AWT, Swing, JavaFX & SWT 2
A Background Image auf SWT Oberfläche legen AWT, Swing, JavaFX & SWT 3
J Anordung der Objekte in der Oberfläche? AWT, Swing, JavaFX & SWT 3
B Oberfläche mit SWT AWT, Swing, JavaFX & SWT 5
S Berechtigungssystem für Swing-Oberfläche AWT, Swing, JavaFX & SWT 2
M Grafische Objekte beliebig auf einer Oberfläche verschieben AWT, Swing, JavaFX & SWT 3
T Eigene grafische Oberfläche AWT, Swing, JavaFX & SWT 7
G JTree in Oberfläche Integrieren?? AWT, Swing, JavaFX & SWT 6
D Trennung von Programm und Oberfläche AWT, Swing, JavaFX & SWT 3
M Java Oberfläche per Drag&Drop -- Wie bei Visual Basic ! AWT, Swing, JavaFX & SWT 5
F Oberfläche wird nicht gestartet! AWT, Swing, JavaFX & SWT 2
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
G Button auswerten und ausgeben ob richtig oder falsch AWT, Swing, JavaFX & SWT 1
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
MouseEvent richtig initialisieren AWT, Swing, JavaFX & SWT 1
T ScrollEvent richtig(er) abfangen? AWT, Swing, JavaFX & SWT 0
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
M JavaFX kann man da noch was am code vereinfachen design technisch sieht nicht richtig aus... AWT, Swing, JavaFX & SWT 15
S Swing Coding richtig einfügen AWT, Swing, JavaFX & SWT 3
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
W JavaFX Ich kann keinen Kreis richtig zeichnen AWT, Swing, JavaFX & SWT 8
C Polygon Koordinaten richtig sortieren AWT, Swing, JavaFX & SWT 7
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
J Parallele Aktionen in Java FX richtig durchführen. AWT, Swing, JavaFX & SWT 5
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
Joker4632 JavaFX GridPane richtig implementieren AWT, Swing, JavaFX & SWT 7
K Swing GUI aktualisiert nicht richtig AWT, Swing, JavaFX & SWT 5
X JavaFX AreaChart area höhe wird nicht richtig dargestellt AWT, Swing, JavaFX & SWT 2
A Swing Zeichnung wird nicht richtig dargestellt AWT, Swing, JavaFX & SWT 4
I Neues JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
V JFrame wird nicht richtig angezeigt! AWT, Swing, JavaFX & SWT 2
H UpdatePolicy wird nicht richtig gesetzt / funktioniert nicht AWT, Swing, JavaFX & SWT 5
C Swing GUI extrem langsam - GUI-Code richtig ausführen AWT, Swing, JavaFX & SWT 1
M JavaFX TextArea richtig formatieren AWT, Swing, JavaFX & SWT 4
A SWT Wie legt man ein UI vom Programmcode her richtig an? AWT, Swing, JavaFX & SWT 3
C KeyPressed funktioniert auf iOS nicht richtig? AWT, Swing, JavaFX & SWT 4
M "ImageIO.read()" liest Bild nicht richtig ein AWT, Swing, JavaFX & SWT 3
A Swing Frames richtig erstellen AWT, Swing, JavaFX & SWT 3
W SWT Dialog richtig schließen? AWT, Swing, JavaFX & SWT 0
F AWT Grafik wird nicht richtig aktualisiert AWT, Swing, JavaFX & SWT 2
B mouseOnEntered ( Controller richtig implementieren) AWT, Swing, JavaFX & SWT 4
M Repaint mittels Button richtig aufrufen klappt nicht AWT, Swing, JavaFX & SWT 1
TheSorm Swing JScroolBar richtig benutzen AWT, Swing, JavaFX & SWT 0
D Panel in Panel zentriert nicht richtig AWT, Swing, JavaFX & SWT 3
K Swing JList - Element richtig hinzufügen AWT, Swing, JavaFX & SWT 4
D Swing fullscreen switch geht nicht richtig AWT, Swing, JavaFX & SWT 8
F Swing Wie verwalte ich meine Panels richtig? AWT, Swing, JavaFX & SWT 2
X LayoutManager gridBagLayout wird nicht richtig Dargestellt AWT, Swing, JavaFX & SWT 5
M KeyListener richtig implementieren AWT, Swing, JavaFX & SWT 3
M BorderLayout JPanel liegt nicht richtig an AWT, Swing, JavaFX & SWT 12
J Swing Window-Builder-Projekt richtig übertragen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben