TetrisApplet Thread Hilfe

Status
Nicht offen für weitere Antworten.

evolution

Mitglied
Moin,

so nun sitze ich schon 2 Tage davor, Foren und Dokus hab ich auch annähernd alle abgesucht, leider aber keine Lösung gefunden. Mein Problem ist, dass ich neue Threads erstellen will und die alten gezeichneten Objekte aber dort gespeichert bleiben, wo sie sich als letztes befunden haben.
Kurz: ich will keinen Thread pausieren sondern stoppen und mit einem neuen weiterarbeiten und mit ihm neue Objekte zeichnen. Dann widerum stoppen, Objekte speichern und neuen Thread erstellen.

Java:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Random;
import javax.swing.JOptionPane;


/*
 * TetrisJPanel.java
 *javax.swing.JPanel
 * Created on 02.07.2009, 09:38:19
 */
/**
 *
 * @author Dom
 */
public class Tetris extends Applet implements Runnable {

    int GamefieldHeight = 20;
    int GamefieldWidth = 20;
    int GamefieldPixel = 10;
    int BlockXHeight = 40;
    int BlockXWidth = 40;
    int posx = 200;
    int posy = 0;
    int x = 0;
    int Help = 0;
    Thread th = new Thread(this);
    Random rand = new Random();

    public synchronized void start() {
        th.setDaemon(true);
        th.start();  	            // Starten des Threads
    }

    public synchronized void stop() {
        th = null;        // dereferenzieren
    }

    public void run() {

        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);   // Erniedrigen der ThreadPriority um zeichnen zu erleichtern
        while (true) {    // Solange true ist läuft der Thread weiter

            posy = posy + 20; // Verändern der x-Koordinate um 20 
            repaint();        // Neuzeichnen des Applets
            try {
                Thread.sleep(500); // Stoppen des Threads für in Klammern angegebene Millisekunden
            } catch (InterruptedException ex) {
            }
            Thread.currentThread().setPriority(Thread.MAX_PRIORITY);   // Zurücksetzen der ThreadPriority auf Maximalwert
        }
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE));
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, Short.MAX_VALUE));
    }// </editor-fold>

    @Override
    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        for (int i = 0; i < GamefieldHeight; i++) {
            for (int u = 0; u < GamefieldWidth; u++) {
                g2.drawRect(GamefieldWidth, GamefieldHeight * i, GamefieldWidth * u, GamefieldHeight);

            }
        }


        // Ab hier Code nur zu Testzwecken
        //  x = rand.nextInt(5);

        // X
        if (Help == 0) {
            g2.setColor(Color.red);
            g2.fillRect(posx, posy, BlockXWidth, BlockXHeight);
        }

        if (posy == 360) {
            g2.setColor(Color.BLACK);
            g2.fillRect(posx, posy, BlockXWidth, BlockXHeight);
            posx = 200;
            posy = 0;
            Help = 1;
            th.yield();

        }

        if (Help == 1) {
            x = rand.nextInt(5);
            if (x == 0) {
                run();
                g2.setColor(Color.red);
                g2.fillRect(posx, posy, BlockXWidth, BlockXHeight);
                posx = 200;
                posy = 0;

                //J
            } else if (x == 1) {
                run();
                g2.setColor(Color.BLUE);
                g2.drawRect(200, 0, 20, 60);
                g2.drawRect(180, 60, 20, 20);
                g2.fillRect(180, 40, 20, 20);
                g2.fillRect(200, 0, 20, 60);
                posx = 200;
                posy = 0;

                //T
            } else if (x == 2) {
                run();
                g2.setColor(Color.GREEN);
                g2.drawRect(200, 0, 20, 60);
                g2.drawRect(180, 20, 20, 20);
                g2.fillRect(200, 0, 20, 60);
                g2.fillRect(180, 20, 20, 20);
                posx = 200;
                posy = 0;

                //I
            } else if (x == 3) {
                run();
                g2.setColor(Color.YELLOW);
                g2.drawRect(200, 0, 20, 80);
                g2.fillRect(200, 0, 20, 80);
                posx = 200;
                posy = 0;

                //L
            } else if (x == 4) {
                run();
                g2.setColor(Color.ORANGE);
                g2.drawRect(200, 0, 20, 60);
                g2.drawRect(220, 40, 20, 20);
                g2.fillRect(200, 0, 20, 60);
                g2.fillRect(220, 40, 20, 20);
                posx = 200;
                posy = 0;
            }

        }
      
    }
    // Variables declaration - do not modify
    // End of variables declaration
}
 

Quaxli

Top Contributor
Moin,

... Mein Problem ist, dass ich neue Threads erstellen will und die alten gezeichneten Objekte aber dort gespeichert bleiben, wo sie sich als letztes befunden haben.
Kurz: ich will keinen Thread pausieren sondern stoppen und mit einem neuen weiterarbeiten und mit ihm neue Objekte zeichnen. Dann widerum stoppen, Objekte speichern und neuen Thread erstellen.

Kurz gesagt, Du hast die falschen Tutorials und Foren durchsucht ;)

Anders gefragt: Wie bist Du auf diese, sehr unübliche, Lösung gekommen? Üblicherweise nutzt man in Spielen nur einen weiteren zusätzlichen Thread, den sog. GameLoop. Darin initialisiert man Objekte neu, prüft Positionen, Kollisionen, etc..

Mit Deinem Ansatz wirst Du so nicht unbedint glücklich, wage ich mal zu behaupten.
 

Quaxli

Top Contributor
Im Anhang mal der Code für ein Tetris, daß ich mal angefangen, aber nie fertig gemacht habe. Es fällt immer nur der gleiche Stein vom Himmel und wird gespeichert. Mehr nicht. Es ist auch kein Applet. Aber das Prinzip ist das Gleiche und alles ist mit einem einzigen Thread gelöst. Schau's Dir mal an.
 

evolution

Mitglied
Tja da ich an der Hochschule bin und dort die Lehrer mit dem Stoff einfach zu langsam sind und ich auch gerne privat Sachen programmiere hab ich mal so angefangen bzw mir das bisherige "Wissen" selbst angeeignet.
Ich wäre dir sehr dankbar wenn du mir ein paar Links zu dem Theam geben könntest denn dann würde ich das mit dem GameLoop machen. ;)

//Danke ich werds mir mal anschaun, aber wenn du trotzdem gute Links hast, könntest du die bitte posten? :)
 

Quaxli

Top Contributor
Guck' in meine Signatur ;) oder google mal nach "Killer Game Programming" - dort kann man große Teile des Buches als PDF runter laden (zwar in Englisch, aber das ist hoffentlich kein Problem ;) )
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
H Exeption in thread "Thread-2" NullPointerExeption: init methode? Spiele- und Multimedia-Programmierung 25
O Thread pausieren und wieder starten Spiele- und Multimedia-Programmierung 2
kaoZ Animation in eigenen Thread auslagern..... Spiele- und Multimedia-Programmierung 1
gamebreiti Daemon Thread Spiele- und Multimedia-Programmierung 4
M Point & Click Thread Probleme Spiele- und Multimedia-Programmierung 20
N JPanel Inhalt aktualisiert nach Thread.sleep nicht Spiele- und Multimedia-Programmierung 2
S Thread und jpanel-paintcomponent kombinierbar?? Spiele- und Multimedia-Programmierung 14
Kenan89 Alternative zu Thread Runnable Spiele- und Multimedia-Programmierung 2
O Universe <- show Thread Spiele- und Multimedia-Programmierung 14
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
C ***** bitte thread löschen *** Spiele- und Multimedia-Programmierung 3
A KeyListener - Thread Problem Spiele- und Multimedia-Programmierung 2
D Snake n+1-Thread Spiele- und Multimedia-Programmierung 2
B Applet startet, aber führt den Thread nicht aus Spiele- und Multimedia-Programmierung 7
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
G Thread startet nicht im Vollbild modus Spiele- und Multimedia-Programmierung 3
Developer_X Thread in Java3D Spiele- und Multimedia-Programmierung 8
D Methode in eigenem Thread auslagern Spiele- und Multimedia-Programmierung 9
S Probleme mit Thread beim Streaming Spiele- und Multimedia-Programmierung 1
F Problem mit Thread.sleep() Spiele- und Multimedia-Programmierung 7
Tapsi Thread wartet auf Threads Spiele- und Multimedia-Programmierung 7
M Thread.sleep() problem Spiele- und Multimedia-Programmierung 10
0 Workaround für Thread.sleep()-Bug Spiele- und Multimedia-Programmierung 15
M Roundbased - Thread anhalten Spiele- und Multimedia-Programmierung 8
D Wasserstrahl animieren: ein Thread je Tropfen? Spiele- und Multimedia-Programmierung 7
S Thread unterbrechen Spiele- und Multimedia-Programmierung 3
Atten007 Minecraft Hilfe bei benutzerdefinierten Bannervorlagen in MCreator benötigt Spiele- und Multimedia-Programmierung 0
R Flappy Bird Hilfe Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe bei der Fehlerbehebung in MCreator benötigt Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 0
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 5
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
Z Minecraft Hilfe bei Minecraft PvP Client Spiele- und Multimedia-Programmierung 21
T Hilfe beim Platzieren der Schiffe Spiele- und Multimedia-Programmierung 14
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
RalleYTN Brauche Hilfe beim Einlesen von PNGs Spiele- und Multimedia-Programmierung 14
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
T Hilfe bei decompilen von Plugin Spiele- und Multimedia-Programmierung 6
E Brauche Hilfe was soll ich tun Spiele- und Multimedia-Programmierung 7
B HILFE bei Spieleprogrammierung mit Slick2D Spiele- und Multimedia-Programmierung 9
S Würfelspiel; Hilfe Spiele- und Multimedia-Programmierung 3
M Hilfe bei vier gewinnt Spiele- und Multimedia-Programmierung 4
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
C Visual Story programieren/hilfe Spiele- und Multimedia-Programmierung 5
L Hilfe: Moog VCF Diskretisierungs Algorithmen (Smith/Stilson u.A.) Spiele- und Multimedia-Programmierung 0
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
M Hilfe bei Snake Spiele- und Multimedia-Programmierung 4
T Hintergrundmusik eines Spiels mit Hilfe von JLayer Spiele- und Multimedia-Programmierung 12
S 2D mit Slick - Anfänger sucht Hilfe Spiele- und Multimedia-Programmierung 4
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
J Hilfe bei Fußballmanager Spiele- und Multimedia-Programmierung 0
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
E Hilfe bei Labyrinth Programmierung. Spiele- und Multimedia-Programmierung 9
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
T Aim-Hilfe Spiele- und Multimedia-Programmierung 4
S Shiritori / word chain / Wörterkette Hilfe Spiele- und Multimedia-Programmierung 1
J Hilfe bei mastermind dringend !!!!! Spiele- und Multimedia-Programmierung 3
S Hilfe bei Spielumsetzung Spiele- und Multimedia-Programmierung 6
M Kleines Spongebobspiel / Hilfe gesucht Spiele- und Multimedia-Programmierung 2
L Hilfe bei Entities benötigt Spiele- und Multimedia-Programmierung 6
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
A Minecraft Hilfe bei Minecraft Mod Spiele- und Multimedia-Programmierung 1
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
L Minecraft Minecraft Bukkit Plugin hilfe Spiele- und Multimedia-Programmierung 9
E Hilfe bei Highscore programmierung Spiele- und Multimedia-Programmierung 3
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
R Hilfe bei Snake-Programmierung Spiele- und Multimedia-Programmierung 6
B Hilfe bei Minecraft Plugin Spiele- und Multimedia-Programmierung 3
C Java Brauche Hilfe Spiele- und Multimedia-Programmierung 5
M Hilfe bei Spiel Programmierung Spiele- und Multimedia-Programmierung 4
B Hilfe bei GameGrid Spiele- und Multimedia-Programmierung 11
J Spiel mit Java SWING, LWJGL und JMonkey [Anfänger braucht Hilfe] Spiele- und Multimedia-Programmierung 10
N Hilfe bei Tower Defense Spiele- und Multimedia-Programmierung 22
R hilfe bei 2DSpiel. Spiele- und Multimedia-Programmierung 3
S AirHockey Kollisionsprobleme, bitte um Hilfe Spiele- und Multimedia-Programmierung 2
L Abfrage-Fehler? - Hilfe bei Tetris Spiele- und Multimedia-Programmierung 9
R Hilfe bei Reversi/Othello Spiele- und Multimedia-Programmierung 6
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
B Hilfe bekomme den IF befehl nicht hin Spiele- und Multimedia-Programmierung 10
C RFID Überwachung - Hilfe Spiele- und Multimedia-Programmierung 3
javajavajava Java Lotto Zahl 6 aus 49 - Brauche Hilfe Spiele- und Multimedia-Programmierung 3
radiac FullScreenExlusiveMode HILFE!!! Spiele- und Multimedia-Programmierung 6
H PingPong HILFE !!! Spiele- und Multimedia-Programmierung 3
G GO-Spiel in Java noch fehlerhaft hoffe um hilfe Spiele- und Multimedia-Programmierung 7
N Brauche Hilfe bei kleinem Spiel Spiele- und Multimedia-Programmierung 40
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
L Brauche hilfe mit KeyEvent Spiele- und Multimedia-Programmierung 4
B brauche hilfe bei der tastenzuodnung Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
W Hilfe bei Pong mit Bluej Spiele- und Multimedia-Programmierung 4
A Hilfe bei der Methode COLOR (Java) Spiele- und Multimedia-Programmierung 10

Ähnliche Java Themen

Neue Themen


Oben