Wie programmiere ich am besten ein 2D-Spiel in Java?

4 Antworten

Ich habe auch erst vor kurzem Java kennen gelernt und auch sofort ein Spiel programmieren wollen. Hat auch geklappt. Ich würde zuerst einmal eine Hauptklasse schreiben, wo ein Fenster erstellt wird und dein Level mit einer while-Schleife immer wieder gezeichnet und geupdatet wird. Als beispiel hier die Hauptklasse meines Spieles: package Spielepacket;

public class Haupklasse { static Fenster Spiel; public static void main(String[] args) {

Spiel = new Fenster("Spiel");

Spiel.setSize(1000, 700);

Spiel.setDefaultCloseOperation(3);

Spiel.setResizable(false);

Spiel.setLocationRelativeTo(null);

Spiel.setVisible(true);

Spiel.sicheremitStrat();

while(true){

        long millisToWait = 1000;
           long millis = System.currentTimeMillis();
           while((System.currentTimeMillis() - millis) < millisToWait) {
               Spiel.updaten();
               Spiel.neuzeichnen();
               try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Automatisch generierter Erfassungsblock
                e.printStackTrace();
            }
            }  
    }

}

}

Und hier noch die Klasse Fenster, die auch noch wichtig ist:

import java.awt.Graphics; import java.awt.image.BufferStrategy;

import javax.swing.JFrame;

public class Fenster extends JFrame { /** * */

private static final long serialVersionUID = -6412914340420698915L;

Level Level;

private BufferStrategy Strategie;

public Fenster(String Titel ){

super(Titel);

Level = new Level();

addKeyListener(new Tastatur()); 
}

public void sicheremitStrat(){
    createBufferStrategy (2);
    Strategie = getBufferStrategy();

}

public void updaten(){

    Level.updaten();

}

public void neuzeichnen(){ Graphics g = Strategie.getDrawGraphics(); zeichnen(g); g.dispose(); Strategie.show(); } public void zeichnen(Graphics g){ Level.zeichnen(g);

}

}

Das wären mal anfängliche Tipps.

Zum Gluck ist spiele programmieren ja das einfachste was man mit Java machen kann und ein bisschen Ausgabe und if und else reicht total aus .... Och, tut mir leid. Ich hab michngeirrt , es ist sehr schwer . ich persönlich nehm für die paar spiele die ich mache awt her . engines find ich bei 2D unnötig

Weiß, wie rum man eine Schraube drehen muss, will ein Auto bauen.

Wer ausreichend Erfahrung hat, stellt solche Fragen nicht.


HolyBird  22.11.2013, 22:00

Das heißt, wer ausreichend Erfahrung darin hat, Applikationen in Java zu schreiben, der fragt nicht, wie man 2D Spiele programmieren kann?

Ist mir neu das die Konzepte der Spieleprogrammierung dieselben sind, wie die von handelsüblichen Applikationen.

CSANecromancer  23.11.2013, 00:02
@HolyBird

Wer Applikationen in Java schreiben kann (damit ist gemeint: Wer programmieren kann, ohne andere anzubetteln "hasse ma'n source?"), der weiß, woher er sich selbstständig die benötigten Informationen für die Programmierung eines 2D-Games besorgt.

Ist mir neu das die Konzepte der Spieleprogrammierung dieselben sind, wie die von handelsüblichen Applikationen.

Die Konzepte der Informationsbeschaffung sind die gleichen. Und auf GF findet man garantiert nicht die richtigen Informationen oder Tutorials.

HolyBird  23.11.2013, 00:10
@CSANecromancer

Wer Applikationen in Java schreiben kann (damit ist gemeint: Wer programmieren kann, ohne andere anzubetteln "hasse ma'n source?"),

Ich sehe den Frageersteller hier nirgenswo nach Sourcecode betteln.

er weiß, woher er sich selbstständig die benötigten Informationen für die Programmierung eines 2D-Games besorgt.

Seine Frage:

hat jemand von euch eine Idee wie man am besten, einfachsten und effektivsten ein 2D-Spiel programmieren kann?

und kennt jemand von euch vielleicht gute "Engines" oder APIs zum erstellen eines kleinen 2D-Spiels?

Was ist falsch daran andere Leute danach zu Fragen, welche Bibliotheken sie vielleicht empfehlen könnten?

Die Konzepte der Informationsbeschaffung sind die gleichen. Und auf GF findet man garantiert nicht die richtigen Informationen oder Tutorials.

Zur Informationsbeschaffung? Klar, die sind so gut wie überall gleich, es war davon aber nicht die Rede.

Und nochmal, lies die Frage des Erstellers, er fragt lediglich nach einer vernünftigen Bibliothek.Und wenn ich mir hier einige Antworten anschaue, sind diese alles andere als hilfreich.

procoder42  23.11.2013, 07:36
@HolyBird

Nach source code bettelt er nicht ; aber wer Probleme bei der Installation von Programmen (!!!!!!!!) hat , da wunders ich mich dann schon . um das jetzt mal zu klären : wer auf GF behauptet, die basics zu können , der hat gerade erst sein hello world hinter sich . vll ist er auch ein wenig weiter und kennt schon if und else ; einige wenige Anfänger hier wissen schon was ein array ist und wie sie die API docs verwenden . Klassen haben die aber alle auch noch nie gesehen

HolyBird  23.11.2013, 12:27
@procoder42

Nach source code bettelt er nicht ; aber wer Probleme bei der Installation von Programmen (!!!!!!!!) hat

Es ist was anderes eine .jar mit Abhängigkeiten in sein Projekt einzubinden, als ein Programm zu installieren, also immer mit der Ruhe hier.

wer auf GF behauptet, die basics zu können , der hat gerade erst sein hello world hinter sich

Natürlich, trifft ja auch jeden hier zu. Wenn jemand sagt, er beherrscht die Basics, dann geht man eben davon aus, das dieser diese auch beherrscht. Kann sein, dass ein Großteil dann eben nur das von dir benannte kennt, die Leute hier dann aber zu verallgemeinern ist ein blöder Weg.

procoder42  23.11.2013, 13:45
@HolyBird

90% der Programmierer hier würden meiner these hier zustimmen . wenn er aber mal seine "Fähigkeiten" aufzählen würde , könnte man entsprechende Empfehlungen machen .

CSANecromancer  24.11.2013, 00:25
@HolyBird

Und nochmal, lies die Frage des Erstellers,

Vorher lies du nochmal, was ich geschrieben habe.

Ich sehe den Frageersteller hier nirgenswo nach Sourcecode betteln.

Und ich habe nirgendwo behauptet, dass er das macht. Reine Unterstellung von dir, klassische Internet-Pseudo-Rhetorik.

Was ist falsch daran andere Leute danach zu Fragen, welche Bibliotheken sie vielleicht empfehlen könnten?

Nichts.

Zur Informationsbeschaffung? Klar, die sind so gut wie überall gleich, es war davon aber nicht die Rede.

Dumm das, denn andernsfalls hätte sich der Fragesteller selbst hier auf GF leicht mittels Suchfunktion die notwendigen Informationen ohne jegliche Frage beschaffen können. Und die Erfahrung zeigt, dass jemand, der Probleme mit Google und Suchfunktionen hat, mit irgendwelchen Engines oder APIs erst recht nichts anfangen kann.

...er fragt lediglich nach einer vernünftigen Bibliothek.

...mit der er nichts anfangen kann, wenn er nicht einmal in der Lage ist, etwas so simples wie eine Suchfunktion zu verwenden.

Und wenn ich mir hier einige Antworten anschaue, sind diese alles andere als hilfreich.

Und ich bekomme immer stärker den Eindruck, dass hier auf GF die Antworten als "hilfreich" eingeschätzt werden, die nur dem Fragesteller Honig um's Maul schmieren, unabhängig davon, ob sie ihm tatsächlich weiterhelfen oder nicht.

procoder42  24.11.2013, 07:43
@CSANecromancer

Ne Mischung aus beidem ist gut ; für die meisten meiner antworten, bei denen ich erkläre ,dass man um spiele zu programmieren erstmal programmieren können muss, werden entweder gelöscht oder ich beleidigt , und davon profitiert niemand .wir helfen ja alle gerne, aber wenn jemand behauptet Profi Programmierer zu sein und dann ne anfængerfrage stellt , dann bin ich mi sicher, dass auf der anderen Seite ein Kind sitzt, DS glaubt das wir den unterschied nicht bemerken . hier sag ich nur : CASE CLOSED !!! Der Fragesteller wurde gelöscht / sein account Hat wegen diesem nerd battle suizied begangen .

Wenn du schon scharf auf 2D Spiele bist, dann versuch mal Java-Script.

Da kannst du erstmal schauen, wie du auf einer vereinfachten Weise ein Spiel aus Div-Containern zusammenbauen kanns. Später kann man sich zu Canvas hocharbeiten, und danach hast du vielleicht auch mehr Sicherheit, um auf Java 2D-Spiele zu entwickeln.

Hat mir jedenfalls geholfen, reinschnuppern schadet nicht ;P

MfG Red