Spiele programmieren für ein Fenster?

Brayn

Mitglied
Guten Abend,

erst mal kurz zu mir, denn ich bin neu hier und wollte mich erst mal vorstellen ;-) .An unsrer Uni haben wir nun ein Semester lang Java gelernt, das hat mir so viel Spaß gemacht dass ich mich beschlossen habe noch darüber hinaus zu lernen.
Im Moment haben wir noch Vorlesungsfreiezeit aber bevor es wieder losgeht und ich wieder richtig am lernen bin wollt ich mich damit beschäftigen Spiele in Java zu Programmieren, ich dachte, das kann für mein Informatik Studium nur nützlich sein. :)

Jetzt zu meiner Frage:
Ich habe mal etwas gegoogelt und auch einige Seiten gefunden, ABER leider fand ich immer nur Hinweise dass Man 2D oder 3D Spiele nur in Javascript programmieren kann. Also so, dass man es mit einem Browser öffnen muss.
Ich würde aber gerne beim alt beliebten Text und Fenster bleiben, ist es irgendwie möglich ein Spiel wie Tetris oder Pacman für ein Fenster, also ein Frame zu schreiben?
Des weiteren hab ich gelesen dass Spiele dann nur als Applet programmiert werden können und somit keine "public static void main(String[] args)" Form benötigen. Das wäre wirklich sehr schade wenn das nicht geht.
Denn mit den Fenstern habe ich vor einem Monat erst begonnen und wollte nun meine Fenster auch mal ausbauen. Hat schon mal jemand Tetris oder Pacman programmiert? Weiß jemand mit wie viel Zeilen ich da ungefähr rechen kann (ja ich weiß dumme Frage, aber bevor ich mich total übernehme...) :)


danke schon mal für euer Interesse an meinem Beitrag, liebe Grüße Matthias
 

Runtime

Top Contributor
Natürlich kannst du 2D / 3D Games auch in einem Fenster anzeigen lassen. (btw: Mit JavaScript kann man keine 3D Games machen) Am kannst du Spiele mit Java2D programmieren, wozu es ein gutes Tutorial von Sun gibt. Am besten lernst du aber zuerst richtig AWT und Swing zu benutzen, worüber es auch ein Tutorial von Sun gibt.
Wieviele Zeilen Code das Programm hat, ist sehr unterschiedlich, da kommts va das Design an. Ich hab für Tetris mit Java ME 1288 Zeilen (26.6 Zeichen pro Zeile, 5025 Wörter, 3.9 Wörter pro Zeile) geschrieben.
 

Antoras

Top Contributor
Das was du da gelesen hast ist Bockmist. ;)

In Java kann man durchaus Spiele programmieren. Applets verwendet dafür aber fast keiner mehr, da sie nichts taugen. Wenn du ein Spiel für den Browser machen willst, dann solltest du dir tatsächlich JavaScript ansehen (was außer dem Namen nichts mit Java zu tun hat) aber das willst du ja nicht.

Pacman oder Tetris halte ich für einen Anfänger noch zu kompliziert. Ich würde mit PingPong oder Snake anfangen. Oder mit diesem Tutorial.

@Runtime
Dank WebGL und so neuen XML-Erweiterungen (ka wie die heißen) ist es mittlerweile durchaus möglich 3D-Spiele für den Browser zu entwickeln, wobei das natürlich noch alles ziemlich beta ist.
 

Haave

Top Contributor
Hallo,

ich habe vor ein paar Tagen einen längeren Beitrag zum Thema Spieleprogrammierung mit Java verfasst, du kannst ihn bei Interesse hier nachlesen: Klick (da geht's btw auch um Javascript ;))


Ich würde aber gerne beim alt beliebten Text und Fenster bleiben, ist es irgendwie möglich ein Spiel wie Tetris oder Pacman für ein Fenster, also ein Frame zu schreiben?
Klar geht das, eine normale Desktop-Anwendung mit GUI eben, meinetwegen Swing oder so.


Des weiteren hab ich gelesen dass Spiele dann nur als Applet programmiert werden können und somit keine "public static void main(String[] args)" Form benötigen. Das wäre wirklich sehr schade wenn das nicht geht.
Java-Applets unterliegen einigen Einschränkungen, was u.a. den Zugriff auf das System angeht, auf dem der Browser läuft. Das sind einfach zusätzliche Sicherheitsvorkehrungen. Für ein Browsergame sollte das aber eigentlich ohnehin nicht nötig sein.
Ja, die Quellcodedatei für ein Applet sieht etwas anders aus als für ein "normales" Java-Programm und (soweit ich weiß) gibt es keine reguläre main-Methode - aber das bedeutet ja nicht, dass es nicht ohne main-Methode auch geht. Oder warum findest du das schade? Was hast du dir denn als mögliches Problem dabei gedacht?


Denn mit den Fenstern habe ich vor einem Monat erst begonnen und wollte nun meine Fenster auch mal ausbauen. Hat schon mal jemand Tetris oder Pacman programmiert? Weiß jemand mit wie viel Zeilen ich da ungefähr rechen kann (ja ich weiß dumme Frage, aber bevor ich mich total übernehme...) :)
Benutz einfach mal die Suchfunktion des Forums, ich wette, da gibt's jede Menge Treffer. Bezüglich Tetris ist momentan dieser Thread recht aktuell, da hat jemand ein Tetris programmiert, das als Applet im Browser läuft: Klick
 

Brayn

Mitglied
Danke schön für die schnellen und reichlichen Antworten, kennt jemand von euch Video2Brain? Davon habe ich die Ausgabe jetzt lerne ich Java, die hat mir bisher sehr viel weitergeholfen.
Leider ist mein Englisch nicht so gut. (Ich weiß Informatik setzt eigentlich gute Englisch Kenntnisse vorraus)

@Runtime dein Tutorial Beispiel von Sun ist ja auch auf Englich aber ich versuche es trotzdem mal, vielleicht verstehe ich ja trotzdem was :)

@Antoras ich glaube sowas habe ich gesucht :) ein Deutscher Text bei dem es direkt losgeht :)

@Haave ich habe mir mal dein Link zu dem Spiel angesehen das ist echt gut gemacht, wenn ich sowas auch mal hinbekäme, wäre dass genial :)
Zu deiner Frage was für mich das Problem ist wenn es keine main Methode gibt, nun ich habe diesbezüglich (also Spieleprogrammierung) noch gar keine Erfahrung, doch ich denke mir ohne main Methode, sieht der Aufbau bestimmt ganz anders aus und ob mir dann mein Vorwissen noch was bringt...bezweifele ich eben.

@all ich bin so froh dass ich zumindest mal weiß, dass Spiele Programmierung bei Java in Fenstern möglich ist, jetzt muss ich es nur noch lernen ;-) ich arbeite mich aufjedenfall mal durch die Threads und Tutoriols die ich von euch bekommen habe, und ich hoffe dann bin ich wieder etwas weiter :)

Danke schön nochmal, liebe Grüße Matthias
 

Brayn

Mitglied
@Gastredner, leider nicht, hätte ich das gewusst hätte ich sie mir mal gespeichert, aber ich hab mich ja nur so durchgeklickt.

Jetzt habe ich aber ein neues Problem, ich habe mal mit dem Tutorial von "Antoras" begonnen, aber leider bin ich noch nicht sehr weit gekommen, da ich jetzt schon eine weile an dem gleichen Fehler hänge. Wie ihr am Code sehen könnt kam ich gerade mal bis zur "fps - Anzeige" und die will nun nicht auf meinem Frame erscheinen. :-(

Ich dachte erst es liegt daran dass die Anzeige keinen Panel als Untergrund hat, dann habe ich mal einen JPanel erzeugt und die Anzeige als Label umgeschrieben, hat auch nicht funktioniert. Dann dachte ich es geht nicht weil kein Ort festgelegt wurde wo die fps angezeigt werden sollen, dann habe ich zu Testzwecken mal das JPanel mit dem BorderLayout als NORTH ausgeben lassen, das hat auch nicht funktioniert. Als letztes wollte ich es dann ganz primitiv Versuchen und mir die fps einfach in der Konsole ausgeben lassen "System.out.println("FPS: "+ fps)" doch selbst dass ging nicht :-( leider fällt mir jetzt nichts mehr ein, weiß einer von euch vielleicht was daran falsch ist.

Ich habe mir mal die Datei von dem Erzeuger des Tutorials angesehen aber der hat es genau so und die läuft bei mir auch nicht.
Bevor es vielleicht an dem ausführen liegt erkläre ich da meine Vorgehensweise vielleicht auch mal. Ich compiliere die *.java Datei mit: javac GamePanel.java
und lasse sie mit GamePanel.java dann ausführen.

Ich muss zugeben das Fenster habe ich auf "meine" Art erstellt aber das hat ja eigentlich nichts mit der Ausgabe zu tun, außerdem habe ich es auch schon mit dem Original Code versucht und dass ging auch schon nicht :-(

Hier mal mein Code:

Java:
import javax.swing.*;
import java.awt.*;


public class GamePanel extends JFrame implements Runnable{

    private static final long serialVersionUID = 1L;
    boolean game_running = true;
    
    

   
    long delta = 0;
    long last = 0;
    long fps = 0;

    

    public GamePanel(){

        super("GameDemo");
        setSize(800,600);
        setLocation(400,150);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        doInitialisierung();
       

        
    }

private void doInitialisierung(){

    last = System.nanoTime();

    Thread t = new Thread(this);
    t.start();
}

public void run() {

    while (game_running){

        computeDelta();

        repaint();

     try {
         Thread.sleep(10);
     }   catch (InterruptedException e) {}
    }

}

private void computeDelta(){

    delta = System.nanoTime() - last;
    last = System.nanoTime();

    fps = ((long) 1e9)/delta;

}


public void paintComponent (Graphics g) {

    super.paintComponents(g);


    g.setColor(Color.red);
    g.drawString("FPS: " + Long.toString(fps), 20, 10);
    System.out.println("FPS: " + fps);

}


    public static void main(String[] args){

        GamePanel game = new GamePanel();

        

        
    }



}


kann mir jemand sagen was daran falsch ist?

Dankeschön schon mal, liebe Grüße Matthias
 

Brayn

Mitglied
ohhh sry. sry. sry. ich habs fast geschafft...

Jetzt gibts nur noch ein Problem: die Zahlen werden immer übereinander geschrieben und werden nicht gelöscht. Ich habe mir jetzt doch mal wieder die Methode von dem Programmierer vorgenommen, ich hatte das erste mal wohl etwas falsch gemacht, sry hoffentlich hab ich keinem Mühe gemacht ...

Hier nochmal der verbesserte Code, aber leider noch mit dem Problem dass die fps immer überschrieben werden.


Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.util.Vector;
import javax.imageio.ImageIO;
import javax.swing.*;

public class GamePanel extends JPanel implements Runnable {

    private static final long serialVersionUID = 1L;
    boolean game_running = true;
    long delta = 0;
    long last = 0;
    long fps = 0;

    public static void main(String[] args) {
        new GamePanel(800, 600);
    }

    public GamePanel(int w, int h) {
        this.setPreferredSize(new Dimension(w, h));
        this.setBackground(Color.cyan);
        JFrame frame = new JFrame("GameDemo");
        frame.setLocation(100, 100);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(this);
        frame.pack();
        frame.setVisible(true);
        doInitialisierung();
    }

    private void doInitialisierung() {

        last = System.nanoTime();

        Thread t = new Thread(this);
        t.start();
    }

    public void run() {

        while (game_running) {

            computeDelta();

            repaint();

            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
            }
        }

    }

    private void computeDelta() {

        delta = System.nanoTime() - last;
        last = System.nanoTime();

        fps = ((long) 1e9) / delta;

    }

    public void paintComponent(Graphics g) {

        super.paintComponents(g);

        g.setFont(new Font("Times New Roman", Font.BOLD, 60));
        g.setColor(Color.red);
        g.drawString("FPS: " + Long.toString(fps), 50, 50);

        //System.out.println("FPS: " + fps);

    }
}


kann mir dabei noch jemand weiterhelfen?

liebe Grüße Matthias
 

Eldorado

Bekanntes Mitglied
Versuch mal statt
Code:
super.paintComponents(g);
Code:
super.paintComponent(g);
aufzurufen (Zeile 69)
 

Brayn

Mitglied
Ok, da ich nun weiß dass man Spiele auch in Fenster Programmieren kann, so würde jede weitere Frage, was an meinem Code falsch ist usw. nicht mehr in diesen Thread gehören, somit beende ich den Thread und bedanke mich nochmal bei allen die mir geantwortet haben.

liebe Grüße Matthias
 

Brayn

Mitglied
Ich wollte mir gerade deine Links ansehen, da hat mich dein erster Link darauf hingewiesen dass ich einen Browser mit WebGL unterstüzung brauche und mir den Firefox 4 Beta angeboten, den habe ich mir dann installiert, aber nach erneuten klickens zeigt er mir das gleiche Fenster und sagt ich hätte es immer noch nicht.
Kann es sein dass ich das WebGL erst aktivieren muss, ich hab mal sowas bei Google gelesen aber das gilt nur für die alten versionen von Mozilla. Wie ist es nun mit dem neuen? Wenn du keinen ausweg kennst, welchen Browser nutzt denn du?

lg Matthias
 
G

Gastredner

Gast
Zumindest in der FF4 Beta und den RCs musste man webgl in about:config noch per Hand aktivieren. Der entsprechende Schlüssel heißt webgl.force_enabled.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Escape the Room - Spiele Apps programmieren Spiele- und Multimedia-Programmierung 14
mihe7 Wie man einfache Spiele programmieren kann Spiele- und Multimedia-Programmierung 23
F wie richtig spiele programmieren ? Spiele- und Multimedia-Programmierung 19
N Seltsame Exception bei Code eines Spiele-Tutorials Spiele- und Multimedia-Programmierung 6
Noahscript 3D-Spiele Spiele- und Multimedia-Programmierung 7
N Spiele-Menü in Java Spiele- und Multimedia-Programmierung 9
T Neuronale Netze und Spiele Spiele- und Multimedia-Programmierung 4
H KI für Spiele Spiele- und Multimedia-Programmierung 1
H 3D Spiele mit Java - Diskussion Spiele- und Multimedia-Programmierung 35
D 2d Spiele Bibliothek Spiele- und Multimedia-Programmierung 9
M Spiele Tutorial.. Findet Bilddateien nicht Spiele- und Multimedia-Programmierung 6
K Casino Spiele UI Spiele- und Multimedia-Programmierung 7
J 2D Spiele - Inwiefern Vektorrechnung nötig? Spiele- und Multimedia-Programmierung 7
S Aufbau für 2D Spiele Spiele- und Multimedia-Programmierung 7
A Drawable und Moveable in Quaxli 2D Spiele Tutorial Spiele- und Multimedia-Programmierung 7
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
X Gutes 2D Spiele Tutorial? Spiele- und Multimedia-Programmierung 9
B Spiele Tutorials Spiele- und Multimedia-Programmierung 9
C Java für große Spiele geeignet ? Spiele- und Multimedia-Programmierung 101
V Online-Spiele syncronisieren. Spiele- und Multimedia-Programmierung 5
L 2D-Spiele ruckeln auf JPanel Spiele- und Multimedia-Programmierung 7
J Suche Java Spiele Editor! Spiele- und Multimedia-Programmierung 2
Developer_X Java3D-Ungeeignet für 3D Spiele wegen Heap Space=? Spiele- und Multimedia-Programmierung 23
D Spiele Wuerfel 3D aber wie Spiele- und Multimedia-Programmierung 6
D Problem mit dem Spiele TUT Spiele- und Multimedia-Programmierung 16
H 2d- Spiele Entwicklung Spiele- und Multimedia-Programmierung 11
D sehr simple Java Spiele Platformübergreifend für Handys/PDAs Spiele- und Multimedia-Programmierung 3
Quaxli Welche Grafiksoftware nutzt Ihr für 2D-Spiele? Spiele- und Multimedia-Programmierung 6
D Welcher Image Typ am besten für 2D-Spiele geeignet? Spiele- und Multimedia-Programmierung 5
X JPCT 3d-Spiele Programmierung Tutorial Spiele- und Multimedia-Programmierung 40
X 3D Spiele Tutorial gewünscht? Spiele- und Multimedia-Programmierung 14
G Bekannte Spiele in Java programmiert Spiele- und Multimedia-Programmierung 9
R Spiele für den DVD Player Spiele- und Multimedia-Programmierung 6
F 2d Spiele Spiele- und Multimedia-Programmierung 4
J soundlösung zu langsam für spiele Spiele- und Multimedia-Programmierung 16
T Größeres Spiele Projekt - einige Fragen zur Umsetzung Spiele- und Multimedia-Programmierung 3
O soundlösung für spiele (mit lautstärke) Spiele- und Multimedia-Programmierung 4
Landei Entwicklungsumgebung für "Pseudo-3D"-Spiele? Spiele- und Multimedia-Programmierung 17
A Spiele kommentieren Spiele- und Multimedia-Programmierung 4
M Images/Sounds für Spiele Spiele- und Multimedia-Programmierung 3
A Werden "große Spiele" mal in Java programmiert? Spiele- und Multimedia-Programmierung 43
H Große Spiele in welcher Sprache Spiele- und Multimedia-Programmierung 33
R eure programmierten Spiele Spiele- und Multimedia-Programmierung 53
M BlueJ Schach Steuerung programmieren Spiele- und Multimedia-Programmierung 28
ItundMathe1994 TicTacToe Spiel programmieren Spiele- und Multimedia-Programmierung 2
Laaalo Tic tac toe programmieren Spiele- und Multimedia-Programmierung 4
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
N Minecraft Spigot-Plugin | Schusswaffe programmieren Spiele- und Multimedia-Programmierung 3
A Programmieren eines Memorys mit Java (in Eclipse) Spiele- und Multimedia-Programmierung 5
A DoodleJump programmieren: Kollisionsabfrage Spiele- und Multimedia-Programmierung 6
I Vier gewinnt programmieren, Klick-Reihenfolge Spiele- und Multimedia-Programmierung 2
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
K Android Spiel Programmieren Spiele- und Multimedia-Programmierung 6
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
J HDMI Ausgänge mit Java programmieren? Spiele- und Multimedia-Programmierung 18
L Hörtest programmieren und implementieren Spiele- und Multimedia-Programmierung 2
E Möchte Jump and Run programmieren Spiele- und Multimedia-Programmierung 2
E Möchte Spiel Programmieren Spiele- und Multimedia-Programmierung 7
M Gesellschaftsspiel Mühle in Java programmieren Spiele- und Multimedia-Programmierung 3
M Textbasiertes Spiel programmieren Spiele- und Multimedia-Programmierung 4
M Logitech G15/G510 Applets programmieren Spiele- und Multimedia-Programmierung 3
F Spiel ähnlich wie SimCity/o.ä programmieren Spiele- und Multimedia-Programmierung 5
O Rundenbasiertes strategiespiel programmieren Spiele- und Multimedia-Programmierung 2
K 2D Blockade Programmieren Spiele- und Multimedia-Programmierung 3
wolfgang63 Mit JavaFX einfaches Game programmieren Spiele- und Multimedia-Programmierung 5
J Mod Loader programmieren Spiele- und Multimedia-Programmierung 11
I Hitpoints/Lifepoints programmieren, wie? Spiele- und Multimedia-Programmierung 7
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Spiel Programmieren, die Anfänge Spiele- und Multimedia-Programmierung 6
wolfgang63 Einfachen Soundgenerator programmieren Spiele- und Multimedia-Programmierung 1
J UNO Programmieren Spiele- und Multimedia-Programmierung 4
F Bot Programmieren Spiele- und Multimedia-Programmierung 10
N Game GUI Programmieren Spiele- und Multimedia-Programmierung 16
1 Minecraft Minecraft Plugins programmieren Spiele- und Multimedia-Programmierung 6
T MiniCraft - selbst nach Programmieren Spiele- und Multimedia-Programmierung 25
A Klickgame ala "Harveys neue Augen" oder "Edna bricht aus" in Java programmieren... Fragen zu Kleinig Spiele- und Multimedia-Programmierung 8
S Spiel Programmieren (Kreise treffen) Spiele- und Multimedia-Programmierung 5
C Hinterteil von Snake programmieren Spiele- und Multimedia-Programmierung 11
B Kartenspiel Leben und Tod programmieren Spiele- und Multimedia-Programmierung 11
T Vier gewinnt programmieren Spiele- und Multimedia-Programmierung 9
N Stimme programmieren Spiele- und Multimedia-Programmierung 11
Sebi Mit Java Online games programmieren ? Spiele- und Multimedia-Programmierung 8
N Labyrinth programmieren/Denkhilfe Spiele- und Multimedia-Programmierung 3
data89 Spiel mit JMonkey programmieren Spiele- und Multimedia-Programmierung 6
O Programmieren von "Familienduell" Spiele- und Multimedia-Programmierung 3
A Wie JAVA Webcam Client programmieren? Spiele- und Multimedia-Programmierung 11
T vier gewinnt programmieren - aber wie Spiele- und Multimedia-Programmierung 19
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
B Problem beim Programmieren von 4Gewinnt Spiele- und Multimedia-Programmierung 5
A Programmieren eines Bruchrechners Spiele- und Multimedia-Programmierung 3
K Malefiz programmieren - Frage zu den einzelnen Spielfeldern Spiele- und Multimedia-Programmierung 5
G wer möchte mit mir risiko programmieren? Spiele- und Multimedia-Programmierung 7
B Problem beim Programmieren Von Mühle Spiele- und Multimedia-Programmierung 6
N Sinus Welle programmieren! Spiele- und Multimedia-Programmierung 4
J Gesellschaftsspiele programmieren Spiele- und Multimedia-Programmierung 8
P 2D Spiel mir drehbaren Bildern (Sprites) programmieren Spiele- und Multimedia-Programmierung 10
U Ball programmieren Spiele- und Multimedia-Programmierung 26
A "Wegnehm-Spiel" programmieren, Tipps + Links? Spiele- und Multimedia-Programmierung 8
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

Ähnliche Java Themen

Neue Themen


Oben