"Graphikoberfläche" für ein 2D-Spiel

Status
Nicht offen für weitere Antworten.
B

Bruegge

Gast
Hallo!

Ich habe vor ein 2D-Spiel (ähnlich wie Diablo) in Java zu Programmieren. Im Moment stehe ich jedoch vor dem Problem,
dass ich eine geeignete Graphikoberfläche suche. Ich möchte keine Frame verwenden (also das Spiel in einem Fenster spielen) und auch kein Applet. Ich möchte eigentlich, dass das Spiel quasi im Vollbildmodus läuft und ich images einfügen kann. Oder ist der Vollbildmodus eine Frame die man dementsprechend verändert?

Naja wenn jemand eine Idee hat, wie genau so ein "Vollbildmodus" funktioniert, oder einen Link dazu, wäre ich sehr dankbar!

Vielen Dank,
Christian
 
S

stev.glasow

Gast
Was diabloiges läuft das ja unter 3D, und meines Wissen unterstützen Java 3D und Co. alle einen Vollbildmodus.
Was nutzt du denn zum zeichnen?
 

Wildcard

Top Contributor
Code:
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(frame);
 
B

Bruegge

Gast
zum zeichnen nutze ich momentan noch garnichts, also ich bin quasi grade erst angefangen... habe auch noch nie ein "graphisches" Spiel programmiert. Was würdest du mir zum zeichnen empfehlen? laden von einzelnen images (zb. als .jpg irgendwo abgelegt?)
Der Vollbild-Modus funktioniert mit dem Befehl einwandfrei, danke!!
 
G

Guest

Gast
hmm .. soeben hat sich ein neues Problem ereignet, hab schon das ganze Forum nach einer Antwort abgesucht, aber leider nichts gefunden. Ich habe eine Bilddatei "bg.gif" und will diese einfach nur mit gr.drawimage() in der frame ausgeben. Der Code sieht so aus:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MainFrame extends JFrame implements ActionListener {
  
  private Image background;
  
  public MainFrame() {
    background = Toolkit.getDefaultToolkit().getImage( "C:\bg.gif" );
    this.setResizable(false);
    this.setUndecorated(true);
    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);
    this.getGraphics()..drawImage( background, 0, 0, this );
  }
  
  public void actionPerformed(ActionEvent e) {
  }
}

Das Problem ist, das nichts auf dem Bildschirm passiert. Ich hab es auch schon mit repaint() versucht, aber da
tut sich nix.
 
B

Bruegge

Gast
Ich habe noch ein wenig rumexperiementiert... der Code sieht nun folgendermaßen aus:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class MainFrame extends JFrame {

  private Image background;

  public MainFrame() {
    background = getToolkit().getImage( "C:\bg.png" );
    
    setIgnoreRepaint(true);
    this.setResizable(false);
    this.setUndecorated(true);
    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);
    
    drawBg(this.getGraphics(), background);
  }

  public void drawBg(Graphics gr, Image background) {     
    gr.drawImage( background, 100, 100, this );
    this.getGraphics().drawString("test", 500, 500);  // <-- Das funktioniert einwandfrei
    if(background == null)
      System.out.println("null!"); // <-- wird nicht ausgegeben, also background != null!
  }
}

Ich habe mit System.out.println(background.getHeight()); die höhe ausgeben lassen, und es kommt "-1".
Ich hab allerdings keine Ahnung warum.
 

Hansdampf

Bekanntes Mitglied
das Bild ist noch nich ganz da, entweder du nimmst einen MediaTracker und wartest, bis es ganz geladen ist oder noch besser :

ImageIO.read(file);
 

Campino

Top Contributor
Bruegge hat gesagt.:
Ich habe mit System.out.println(background.getHeight()); die höhe ausgeben lassen, und es kommt "-1".
Ich hab allerdings keine Ahnung warum.
dann wurde das Bild nicht richtig geladen. Außerdem solltest du drawBG() nicht im konstruktor sondern in der paintComponent()-Methode des JFrames aufrufen.
 
B

Bruegge

Gast
Also ich hab jetzt alles mögliche mit ImageIO.read(file) versucht, aber ich bekomme immer wieder fehler... wie genau würde denn der Code aussehen zum lesen und ausgeben des Bildes? Ich habe den jetzt so:

Code:
try {
      File f = new File("C:\bg.gif");
      background = ImageIO.read(f);
    } catch (IOException e) { 
    }
    
    gr.drawImage( background, 100, 100, this );
 

Hansdampf

Bekanntes Mitglied
ich lade Bilder so:

Code:
static BufferedImage loadImage(File file) throws Exception
  {
     BufferedImage initial = ImageIO.read(file);
        GraphicsConfiguration gc =new Frame().getGraphicsConfiguration();
        BufferedImage result=gc.createCompatibleImage(initial.getWidth(),initial.getHeight(),
        initial.getColorModel().getTransparency());
        Graphics2D g = result.createGraphics();
        g.drawImage(initial,0,0,null);
        g.dispose();
        return result;
}

setzen so:

g.drawImage(image,x,y,null);

edit:
mach mal File f = new File("C:\\bg.gif");

dann gehts auch.
 
B

Bruegge

Gast
Ich habe deinen Code exakt so kopiert und bei mir die Methode eingefügt, diese habe ich dann aus der paint() aufgerufen und es tut sich immernoch nichts in meinem Programm... woran kann es noch liegen?
 
B

Bruegge

Gast
Hab das versucht, ging aber nicht.. darauf hin hab ich nochmal das internet durchsucht und gesehen , dass andere es mit "c:/bg.gif" machen ... das funktioniert nun! :roll: Außerdem musste das "setIgnoreRepaint(true);" weg... ich weiß auch nicht wieso ich das dahin gemacht habe!

Naja, jetzt läuft es jedenfalls!! :) Danke an alle!!! :)
 
G

Guest

Gast
falls es dich interessiert: der "\" ist in java reserviert für spezialzeichen willst du z.b. " ausgeben, musst du
System.out.println(" \" "); schreiben. nach dem Backslash \ kommt ein spezialzeichen das normalerweise ein steuerzeichen ist

eigentlich müsste der pfad mit c:\\bg.gif auch gehen, weil \\ für \ steht. aber wie du ja schon gemacht hast kann man überall auch einfach / schreiben.

ein kleiner tipp noch zum zeichnen: verwende double-buffering! wenn du ganz normal mit graphics zeichnest, wirst du wie ich bald merken dass alles flimmert, weil java das komisch realisiert.

such im goole einfach nach double buffering, müsstest was finden was dir hilft. zur paint-funktion kommt noch die update fkt und 2 variable hinzu, dann kannst du auch große bilder flimmer-frei zeichnen!!
 

Illuvatar

Top Contributor
Inwiefern realisiert Java das komisch? Bei jedem paint wird halt immer erstmal alles überzeichnet damit keine Fragment bleiben. U.U. flackert das halt, aber das kann man duch double Biffering oder entfernen des überzeichnen-schrittes verhindern. Aber wie sollte das sonst gehen bzw. wie macht das C++? Double Buffered das automatisch (wie Swing) ?
 

Reality

Top Contributor
Double Buffering ist auch nicht das Wahre!

1. Entsteht dadurch der Tearing-Effekt
2. Können je nach Auflösung und Bit-Tiefe hohe Daten-Mengen bei der Kopiererei entstehen => Langsam!

Besser ist BufferStragety das Page Flipping einsetzt, sofern das die Grafikkarte mit macht; ansonsten benutzt es Double Buffering.

Liebe Grüße
Reality
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
B Deepmind Poker Bot für PokerStars konfigurieren? Spiele- und Multimedia-Programmierung 2
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
E Organisation für Game Spiele- und Multimedia-Programmierung 1
Excess Ballerfisch für Android Spiele- und Multimedia-Programmierung 3
coolian ich brauche irgendeine gui lib für lwjgl2 Spiele- und Multimedia-Programmierung 51
krgewb Anderer Algorithmus für Bounding Box Spiele- und Multimedia-Programmierung 9
MiMa MP3 Dateien für Metadaten abgleichen Spiele- und Multimedia-Programmierung 0
Freshy Bot für Discord Spiele- und Multimedia-Programmierung 61
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
G Mikrophon-/Audiosteuerung für einen Character Spiele- und Multimedia-Programmierung 1
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
M Logik für ein Quiz Spiele- und Multimedia-Programmierung 7
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
MiMa Metadaten für Multimedia Daten ermitteln Spiele- und Multimedia-Programmierung 4
G Übungsprogramm für Matheaufgaben Spiele- und Multimedia-Programmierung 1
F Algorithmus für bessere Kollisionsabfragen Spiele- und Multimedia-Programmierung 10
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
Timo_neu_in_java Suche etwas einfaches für Anfänger Spiele- und Multimedia-Programmierung 6
I Minecraft Suche Plugin Developer für Minecraft Netzwerk! Spiele- und Multimedia-Programmierung 2
S GUI erstellen für Text Adventure Spiele- und Multimedia-Programmierung 4
S Eigene Klasse vec_t - 3 oder 4 Einheiten für x, y, z und w Spiele- und Multimedia-Programmierung 11
R Vererbbarer GameLoop für Engine Spiele- und Multimedia-Programmierung 14
J Vektor für Gravitation erzeugen Spiele- und Multimedia-Programmierung 34
I Minecraft: Craftingrecipe für Braustand ändern Spiele- und Multimedia-Programmierung 9
Z Minimax-Algorithmus für TicTacToe Spiele- und Multimedia-Programmierung 5
H KI für Spiele Spiele- und Multimedia-Programmierung 1
S Pssende Datenstruktur für ein Netz Spiele- und Multimedia-Programmierung 5
S MouseEvents für Sprites Spiele- und Multimedia-Programmierung 3
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
J Musik Bibliothek für GUI Spiele- und Multimedia-Programmierung 7
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
R Ratschlag für 2D-3D Engine für die Spieleentwicklung gesucht Spiele- und Multimedia-Programmierung 4
Androbin KI für Verfolgung im Raster Spiele- und Multimedia-Programmierung 2
A Bot für Browsergame Spiele- und Multimedia-Programmierung 2
H Tutorials für Fortgeschrittene 3D-Anwedungen Spiele- und Multimedia-Programmierung 2
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
Furtano Vektoren für Bewegung für eine 2D-Simulation Spiele- und Multimedia-Programmierung 3
T Sinusgenerator für eine Hp Spiele- und Multimedia-Programmierung 8
J Menü für Snakespiel in einzelnem JFrame Spiele- und Multimedia-Programmierung 5
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
Guybrush Threepwood Ketzerische Frage: Opus-Codec für Java Spiele- und Multimedia-Programmierung 14
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
S Aufbau für 2D Spiele Spiele- und Multimedia-Programmierung 7
L Client für ein Browsergame Spiele- und Multimedia-Programmierung 21
Devil0s Swing Elemente für Inventar? Spiele- und Multimedia-Programmierung 9
Kenan89 Ansatzfrage: Kartenspiel für 2 Spieler Online Spiele- und Multimedia-Programmierung 3
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
P Spielfeld für RPG Spiele- und Multimedia-Programmierung 15
Hoppelmann Alphamap (Bild) für 3D-Terrain generieren Spiele- und Multimedia-Programmierung 2
S Algorithmus zur Ressourcesuche für die KI Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
K Einfache Engine für einfaches 3D gesucht Spiele- und Multimedia-Programmierung 10
C KI für Skatspiel - Wie können die Computerspieler eigenständig handeln? Spiele- und Multimedia-Programmierung 10
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
Kenan89 Kleines Projekt für Java Spiele- und Multimedia-Programmierung 5
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
C Wo ist der MP3 Plugin für JMF? Spiele- und Multimedia-Programmierung 3
qwerqer Design Pattern gesucht für Spielregeln Spiele- und Multimedia-Programmierung 2
M Java als Programmiersprache für kommerzielle Spieleentwicklung? Spiele- und Multimedia-Programmierung 3
K Game Engine für selbstprogrammiertes Spiel Spiele- und Multimedia-Programmierung 27
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
A Music für Android game Spiele- und Multimedia-Programmierung 3
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
M Minecraft Suche Java Programmierer (für Minecraft) Spiele- und Multimedia-Programmierung 2
Luk10 Tipps für bessere Animationen / Grafik Engine Spiele- und Multimedia-Programmierung 2
T 2D Menü für 3D Spiel Spiele- und Multimedia-Programmierung 5
T Grundlagenwissen für den 3D Raum Spiele- und Multimedia-Programmierung 6
I getSubImage sorgt für starken Performanceeinbruch Spiele- und Multimedia-Programmierung 6
M technologie für video, webcam & co Spiele- und Multimedia-Programmierung 25
C Java für große Spiele geeignet ? Spiele- und Multimedia-Programmierung 101
D Libraryempfehlung für Effekte Spiele- und Multimedia-Programmierung 3
B Spiele programmieren für ein Fenster? Spiele- und Multimedia-Programmierung 14
D Tabelle für Spiel Spiele- und Multimedia-Programmierung 3
N Grundlagen für ein Jump&Run Spiele- und Multimedia-Programmierung 3
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
J Suche 3D Programm für jMonkeyEngine Spiele- und Multimedia-Programmierung 5
W 3D-APIs für Java - Eine Übersicht Spiele- und Multimedia-Programmierung 8
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
F Programm für Bildbearbeitung gesucht: Skalieren und Speichern Spiele- und Multimedia-Programmierung 6
K Lösungsansätze für ein Spiel Spiele- und Multimedia-Programmierung 2
Plastagen Frameworls für Animationen und co Spiele- und Multimedia-Programmierung 3
aze Wie Transform3D für PosPathInterpolator bestimmen Spiele- und Multimedia-Programmierung 8
M Musik für Spiel wo downloaden? Spiele- und Multimedia-Programmierung 7
R Netzwerkstruktur für ein kleines Spiel Spiele- und Multimedia-Programmierung 8
O KI (künstliche Intelligenz) für Schachlogik Spiele- und Multimedia-Programmierung 4
J Brauche denkanstoß für kleines grafikframework Spiele- und Multimedia-Programmierung 3
A Countdown-Timer für Spiel Spiele- und Multimedia-Programmierung 4
J Tips für ein kleines Pong-Applet Spiele- und Multimedia-Programmierung 4
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
S Grafik erstellen für Java Spiel Spiele- und Multimedia-Programmierung 8
G Javasimulatoren für Siemenshndys Spiele- und Multimedia-Programmierung 11

Ähnliche Java Themen

Neue Themen


Oben