Threads Spiel gol

Hallo,
ich habe eine Frage. Beim ausführen des Programms, entsteht ein Standbild vom Spiel. Normalerweise sollte sich die neue Generation der Zellen aktualisieren also es soll ein Wachstum entstehen. Warum bewegt sich das Bild beim ausführen nicht?




public class Application {

/* Size of the playground in X dimension */
public static final int DIM_X = 200;

/* Size of the playground in Y dimension */

public static final int DIM_Y = 200;

/* Probability threshold that a cell is initially being created */
public static final float ALIVE_PROBABILITY = 0.3125f;

/* Sleep time between every generation in milliseconds */
public static final int SLEEP = 200;

/**
* Creates an potentially unlimited stream of Cell objects. The stream uses
* random numbers between [0, 1] and the probability threshold whether a
* cell is created DEAD (random > p) or ALIVE (random <= p).
*
* @param p Cell alive probability threshold.
* @Return
*/
private static Stream<Cell> createCellStream(float p) {

Random random = new Random();
return Stream.generate(() -> {
int status = random.nextFloat() <= p ? Cell.ALIVE : Cell.DEAD;
return new Cell(status);
});
}


public static void main(String[] args) {
Stream<Cell> cellStream = createCellStream(ALIVE_PROBABILITY);
Playground playground = new Playground(DIM_X, DIM_Y, cellStream);

// Create and show the application window
ApplicationFrame window = new ApplicationFrame();
window.setVisible(true);
window.getContentPane().add(new PlaygroundComponent(playground));

// Create and start a LifeThreadPool with 50 threads
LifeThreadPool pool = new LifeThreadPool(50);
pool.start();

while (true) {
Life life = new Life(playground);
for (int xi = 0; xi < DIM_X; xi++) {
for (int yi = 0; yi < DIM_Y; yi++) {

int finalXi = xi;
int finalYi = yi;

// Submit new life.process() call as runnable to the pool
pool.submit(() -> life.process(playground.getCell(finalXi, finalYi), finalXi, finalYi));
}
}

// Wait for all threads to finish this generation
try {
pool.barrier();
} catch (InterruptedException ex) {
Logger.getLogger(Application.class.getName()).log(Level.SEVERE, null, ex);
}

// Submit switch to next generation for each cell and force a
// window repaint to update the graphics
pool.submit(() -> {
playground.asList().forEach(cell -> cell.nextGen());
window.repaint();
});

// Wait SLEEP milliseconds until the next generation
try {
Thread.sleep(SLEEP);
} catch (InterruptedException ex) {
Logger.getLogger(Application.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}






public class LifeThread extends Thread {

private final LifeThreadPool pool;
private boolean isInterrupted = false;

public LifeThread(LifeThreadPool pool) {
this.pool = pool;
}

/**
* Sets the interrupted flag, so that this thread stops after finishing
* the current task.
*/
@Override
public void interrupt() {
isInterrupted = true;
}

@Override

public void run() {
while (!isInterrupted) {
try {
// Holt die nächste Aufgabe aus dem TaskThreadPool und führt sie aus
Runnable task = pool.nextTask();
task.run();
} catch (InterruptedException e) {
// Unterbricht die weitere Ausführung des Threads bei einer InterruptedException
break;
}
}
}
}




public class LifeThreadPool {
private final Queue<Runnable> tasks = new LinkedList<>();
private final int numThreads;
private final LifeThread[] threads;

public LifeThreadPool(int numThreads) {
this.numThreads = numThreads;
this.threads = new LifeThread[numThreads];
}

public synchronized void barrier() throws InterruptedException {
while (!tasks.isEmpty()) {
wait();
}
}

public synchronized void interrupt() {
for (LifeThread thread : threads) {
thread.interrupt();
}
}

public synchronized void joinAndExit() throws InterruptedException {
barrier();
interrupt();
}

public synchronized void submit(Runnable task) {
tasks.offer(task);
notifyAll();
}

public synchronized Runnable nextTask() throws InterruptedException {
while (tasks.isEmpty()) {
wait();
}
return tasks.poll();
}

public void start() {
for (int i = 0; i < numThreads; i++) {
threads = new LifeThread(this);
threads.start();
}
}
}
 

DrPils

Bekanntes Mitglied
Nutz bitte die Code Tags.

Wie sieht denn die Playground Klasse aus?

Hast du da eine Terminal operation auf den Cell Stream? Streams sind lazy, heisst sie werden erst ausgeführt wenn eine Terminal operation ausgeführt wurde. zb .collect()
 
Java:
package de.hawhamburg.inf.gol;

import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Stream;

/**
 * Main application class.
 *
 */
public class Application {

    /* Size of the playground in X dimension */
    public static final int DIM_X = 200;
    
    /* Size of the playground in Y dimension */
    
    public static final int DIM_Y = 200;
    
    /* Probability threshold that a cell is initially being created */
    public static final float ALIVE_PROBABILITY = 0.3125f;
    
    /* Sleep time between every generation in milliseconds */
    public static final int SLEEP = 200;
    
    /**
     * Creates an potentially unlimited stream of Cell objects. The stream uses
     * random numbers between [0, 1] and the probability threshold whether a
     * cell is created DEAD (random > p) or ALIVE (random <= p).
     *
     * @param p Cell alive probability threshold.
     * @return
     */
    private static Stream<Cell> createCellStream(float p) {

Random random = new Random();
    return Stream.generate(() -> {
        int status = random.nextFloat() <= p ? Cell.ALIVE : Cell.DEAD;
        return new Cell(status);
    });
    }
    
    
    public static void main(String[] args) {
        Stream<Cell> cellStream = createCellStream(ALIVE_PROBABILITY);
        Playground playground = new Playground(DIM_X, DIM_Y, cellStream);
        
        // Create and show the application window
        ApplicationFrame window = new ApplicationFrame();
        window.setVisible(true);
        window.getContentPane().add(new PlaygroundComponent(playground));
        
        // Create and start a LifeThreadPool with 50 threads
        LifeThreadPool pool = new LifeThreadPool(50);
        pool.start();
        
       while (true) {
    Life life = new Life(playground);
    for (int xi = 0; xi < DIM_X; xi++) {
        for (int yi = 0; yi < DIM_Y; yi++) {
    
                int finalXi = xi;
                int finalYi = yi;
                
                // Submit new life.process() call as runnable to the pool
                pool.submit(() -> life.process(playground.getCell(finalXi, finalYi), finalXi, finalYi));
            }
        }

        // Wait for all threads to finish this generation
        try {
            pool.barrier();
        } catch (InterruptedException ex) {
            Logger.getLogger(Application.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        // Submit switch to next generation for each cell and force a
        // window repaint to update the graphics
        pool.submit(() -> {
            playground.asList().forEach(cell -> cell.nextGen());
            window.repaint();
        });
        
        // Wait SLEEP milliseconds until the next generation
        try {
            Thread.sleep(SLEEP);
        } catch (InterruptedException ex) {
            Logger.getLogger(Application.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
}
Java:
package de.hawhamburg.inf.gol;

import javax.swing.JFrame;

/**
 * Application frame showing the PlaygroundComponent with the Playground graphics.
 *
 */
public class ApplicationFrame extends JFrame {
    
    public ApplicationFrame() {
        setTitle("Game of Life");
        setSize(700, 700);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
Java:
package de.hawhamburg.inf.gol;

/**
 * Cell living on the screen.
 *
 */
public class Cell {
    
    public static final byte DEAD = (byte)0;
    public static final byte ALIVE = (byte)1;
    
    /* Current state of this cell, can be DEAD or ALIVE */
    private byte value = DEAD;
    
    /* Calculate state of the next generation */
    private byte valueNext = DEAD;
    
    public Cell(int value) {
        this.value = (byte)value;
    }
    
    public byte getValue() {
        return value;
    }
    
    /**
     * Returns true if this cell is considered to be alive.
     * @return true if cell is alive, false if cell is dead.
     */
    public boolean isAlive() {
        return value != 0;
    }
    
    /** Sets the state for this cell in the next generation.
     * @param value New state of this cell, can be DEAD or ALIVE.
      */
    public void setValueNext(byte value) {
        this.valueNext = value;
    }
    
    /** Make the next generation the current generation */
    public void nextGen() {
        this.value = this.valueNext;
    }
}
Java:
package de.hawhamburg.inf.gol;

/**
 * Includes the Game of Life rules.
 *
 */
public class Life {
    
    private final Playground playground;
    
    public Life(Playground playground) {
        this.playground = playground;
    }
    
    /**
     * Counts the ALIVE neighbours for a cell identified by playground
     * coordinates.
     *
     * @param x
     * @param y
     * @return Number of ALIVE neighbours
     */
    private int countNeighbours(int x, int y) {
        int neighbours = 0;
        for (int xi = x - 1; xi <= x + 1; xi++) {
            for (int yi = y - 1; yi <= y + 1; yi++) {
                if (x == xi && y == yi)
                    continue; // Identity
                if (playground.getCell(xi, yi).isAlive()) {
                    neighbours++;
                }
            }
        }
        return neighbours;
    }
    
    /**
     * Applies the rules of the Game of Life and sets new state of the given
     * cell. If a cell has 3 neighbours and is currently DEAD, it is revived in
     * the next generation. If a cell has less than 2 or more than 3 neightbours
     * it will die in the next generation. So if a cell has 2 or 3 neighbours
     * and is currently ALIVE it will stay ALIVE.
     * @param cell
     * @param x
     * @param y
     */
    public void process(Cell cell, int x, int y) {
        int neighbours = countNeighbours(x, y);
        
        if (neighbours == 3 && !cell.isAlive()) {
            // Cell is reborn
            cell.setValueNext(Cell.ALIVE);
        } else if (neighbours < 2 || neighbours > 3) {
            // Cell will die from loneliness or too much neighbours
            cell.setValueNext(Cell.DEAD);
        } else if (cell.isAlive()) /* 2 or 3 */ {
            // Cell stays alive
            cell.setValueNext(Cell.ALIVE);
        }
    }
}
Java:
package de.hawhamburg.inf.gol;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Interruptible Thread that receives its next tasks from a LifeThreadPool.
 *
 */
public class LifeThread extends Thread {
    
    private final LifeThreadPool pool;
    private boolean isInterrupted = false;
    
    public LifeThread(LifeThreadPool pool) {
        this.pool = pool;
    }
    
    /**
     * Sets the interrupted flag, so that this thread stops after finishing
     * the current task.
     */
    @Override
    public void interrupt() {
        isInterrupted = true;
    }
    
    @Override

public void run() {
    while (!isInterrupted()) {
        try {
            // Holt die nächste Aufgabe aus dem TaskThreadPool und führt sie aus
            Runnable task = pool.nextTask();
            task.run();
        } catch (InterruptedException e) {
            // Unterbricht die weitere Ausführung des Threads bei einer InterruptedException
            interrupt();
            break;
        }
    }
}

}
Code:
package de.hawhamburg.inf.gol;

import java.util.LinkedList;
import java.util.Queue;

public class LifeThreadPool {
    private final Queue<Runnable> tasks = new LinkedList<>();
    private final int numThreads;
    private final LifeThread[] threads;

    public LifeThreadPool(int numThreads) {
        this.numThreads = numThreads;
        this.threads = new LifeThread[numThreads];
    }

    public synchronized void barrier() throws InterruptedException {
        while (!tasks.isEmpty()) {
            wait();
        }
    }

    public synchronized void interrupt() {
        for (LifeThread thread : threads) {
            thread.interrupt();
        }
    }

    public synchronized void joinAndExit() throws InterruptedException {
        barrier();
        interrupt();
    }

    public synchronized void submit(Runnable task) {
        tasks.offer(task);
        notifyAll();
    }

    public synchronized Runnable nextTask() throws InterruptedException {
        while (tasks.isEmpty()) {
            wait();
        }
        return tasks.poll();
    }

    public void start() {
        for (int i = 0; i < numThreads; i++) {
            threads[i] = new LifeThread(this);
            threads[i].start();
        }
    }
}
Java:
package de.hawhamburg.inf.gol;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * Playground of the Game of Life. Consists logically of a two dimensional
 * array of Cell elements (DIM_X x DIM_Y).
 *
 * @author Christian Lins
 */
public class Playground {
    
    private final int dimX;
    private final int dimY;
    
    /**
     * The actual playground. Note that we use a 1D array here although the
     * playground is 2D.
     */
    private final Cell[] playground;
    
    public Playground(int dimX, int dimY, Stream<Cell> generator) {
        this.dimX = dimX;
        this.dimY = dimY;
        
        // Initialize playground with (probably) random cells
        playground = generator.limit(dimX * dimY).toArray(Cell[]::new);
    }
    
    /**
     * Returns the Cell at the given index.
     *
     * @param x
     * @param y
     * @return Cell object
     */
    public Cell getCell(int x, int y) {
        if (x < 0 || x >= dimX || y < 0 || y >= dimY) {
            return new Cell(Cell.DEAD);
        }

        return this.playground[x * dimX + y];
    }
    
    public int getDimensionX() {
        return dimX;
    }
    
    public int getDimensionY() {
        return dimY;
    }
    
    /**
     * Returns the playground as List of Cells for easier processing the
     * Streams.
     * @return
     */
    public List<Cell> asList() {
        return Arrays.asList(playground);
    }
}
Java:
package de.hawhamburg.inf.gol;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;

/**
 * Swing Component that draws a Playground on the screen.
 *
 */
public class PlaygroundComponent extends JComponent {

    private final Playground playground;
    
    public PlaygroundComponent(Playground playground) {
        this.playground = playground;
    }
    
    private int cellSize() {
        return Math.min(
                cellSize(playground.getDimensionX(), getWidth()),
                cellSize(playground.getDimensionX(), getHeight()));
    }
    
    private int cellSize(int playgroundDim, int componentDim) {
        int size = componentDim / playgroundDim;
        return size == 0 ? 1 : size;
    }
    
    private int offset(int cellSize, int playgroundDim, int componentDim) {
        return (componentDim - playgroundDim * cellSize) / 2;
    }
    
    /**
     * Paints the playground according to its Cell states.
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        
        int cellSize = cellSize();
        int offX = offset(cellSize, playground.getDimensionX(), getWidth());
        int offY = offset(cellSize, playground.getDimensionY(), getHeight());
        
        for (int x = 0; x < playground.getDimensionX(); x++) {
            for (int y = 0; y < playground.getDimensionY(); y++) {
                Cell cell = playground.getCell(x, y);
                g.setColor(cell.getValue() == 0 ? Color.BLACK : Color.GREEN);
                g.fillRect(offX + x * cellSize, offY + y * cellSize, cellSize, cellSize);
            }
        }
    }
    
}
 

DrPils

Bekanntes Mitglied
leider auf anhieb nicht, meine erste Vermutung ist unzutreffend, denke das ist eher ein swing thema. Vielleicht fragst du im entsprechenden sub Forum mal nach
 

shokwave

Mitglied
Java:
        // Wait for all threads to finish this generation
        try {
            pool.barrier();
        } catch (InterruptedException ex) {
            Logger.getLogger(Application.class.getName()).log(Level.SEVERE, null, ex);
        }

An dieser Stelle bleibt er hängen. Ohne den Aufruf von pool.barrier() läuft der Code, also muss der Fehler bei dieser Methode sein.
Hab leider noch nichts mit Threads in Java gemacht, sodass ich da nicht wirklich weiterhelfen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
T Hangman spiel Java Basics - Anfänger-Themen 5
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3
M hangman spiel Java Basics - Anfänger-Themen 1
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
S Mosaik Spiel Java Basics - Anfänger-Themen 19
pinar memory spiel Java Basics - Anfänger-Themen 10
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Variablen Invalid Character - Error -> Spiel mit Variablenergebnissen Java Basics - Anfänger-Themen 8
K Schere Stein Papier Spiel Java Basics - Anfänger-Themen 3
A Feedback zum Spiel Java Basics - Anfänger-Themen 5
F Hilfe bei meinem Spiel Java Basics - Anfänger-Themen 3
C Lotto Spiel Java Basics - Anfänger-Themen 23
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
Dogge Farben-Spiel Java Basics - Anfänger-Themen 20
K Diverse Bugs in einem Snake Spiel Java Basics - Anfänger-Themen 4
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
X Datentypen Probleme mit Char bei meinem 1. Spiel Java Basics - Anfänger-Themen 20
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
P NullPointerException in Memory-Spiel Java Basics - Anfänger-Themen 5
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3
J Programm(Spiel) neustarten Java Basics - Anfänger-Themen 8
M Suche Beispiel-Spiel Java Basics - Anfänger-Themen 3
C Java Nullpointer Exception in 2D-Spiel Snake Java Basics - Anfänger-Themen 8
M Apfel-Spiel KeyListener Java Basics - Anfänger-Themen 33

Ähnliche Java Themen

Neue Themen


Oben