G
gregg001
Gast
Hallo zusammen,
ich hänge gerade bei dem Spiel des Lebens
Diese Klasse war vorgegeben:
Das habe ich bisher selber programmiert.
Er gibt mir aber nicht die richtigen Positionen für die Lebenden und die Toten.
Auch müsste irgendwo etwas endlos durchlaufen.
Momentan komm ich aber einfach nicht drauf, wie ich es verändern soll.
ich hänge gerade bei dem Spiel des Lebens
Diese Klasse war vorgegeben:
Java:
package Info1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SDL extends MiniJava {
private static final Object syncObj = new Object();
private static final int w = 20;
private static class But extends JButton {
boolean[][] arena;
int i,j;
But(boolean[][] _arena, int _i, int _j) {
arena = _arena;
i = _i;
j = _j;
setLabel();
addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
arena[i][j] = !arena[i][j];
setLabel();
}
});
setLocation(w*j,w*i);
}
void setLabel() {
if (arena[i][j])
setBackground(Color.RED);
else
setBackground(Color.BLUE);
setSize(w,w);
}
}
private static class UpdateArenaFrm extends JFrame {
UpdateArenaFrm(boolean[][] arena) {
JPanel panel = new JPanel(null);
panel.setPreferredSize(new Dimension(400,400));
panel.setMinimumSize(new Dimension(400,400));
JButton okBut = new JButton("Weiter!");
getContentPane().add(BorderLayout.SOUTH, okBut);
okBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
dispose();
synchronized(syncObj) {
syncObj.notifyAll();
}
}
});
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
getContentPane().add(panel);
for (int i=0; i<arena.length; i++)
for (int j=0; j<arena[i].length; j++) {
panel.add(new But(arena,i,j));
}
pack();
}
}
private static JFrame frm;
public static void updateArena(boolean[][] arena) {
UpdateArenaFrm frm = new UpdateArenaFrm(arena);
frm.setVisible(true);
synchronized (syncObj) {
try {
syncObj.wait();
} catch(Exception e) {
//nichts zu tun
}
}
}
public static void update(boolean[][] arena) {
updateArena(arena);
}
}
Das habe ich bisher selber programmiert.
Er gibt mir aber nicht die richtigen Positionen für die Lebenden und die Toten.
Auch müsste irgendwo etwas endlos durchlaufen.
Momentan komm ich aber einfach nicht drauf, wie ich es verändern soll.
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Info1;
/**
*
* @author Wu
*/
public class SpieldesLebens extends SDL {
public static void main(String[] args) {
boolean zustand; // true ist lebendig, false ist tot
zustand = false;
boolean[][] spielfeld; // Deklaration
int anzahlzeilen = read("Anzahl der Zeilen");
int anzahlspalten = read("Anzahl der Spalten");
spielfeld = new boolean[anzahlzeilen][anzahlspalten];
//Eingabe der Konfiguration
write("Konfigurieren sie Ihre Felder");
update(spielfeld);
for (int i = 0; i < anzahlzeilen; i++) {
for (int j = 0; j < anzahlspalten; i++) {
zaehleNachbarn(spielfeld, i, j);
}
}
//update(spielfeld);
}
public static boolean isLebendig(boolean[][] spielfeld, int i, int j) {
if (spielfeld[i][j] = true) {
return true;
}
return false;
}
public static int zaehleNachbarn(boolean[][] spielfeld, int i, int j) {
int anzahllebendig = 0;
int k = i - 2;
int l = i;
int m = j - 2;
int n = j;
for (i = k; i <= l; i++) {
for (j = m; j <= n; j++) {
if (i == -1 || j == -1) {
i = 1;
j = 1;
}
if (i == -2 || j == -2) {
i = 0;
j = 0;
}
if (isLebendig(spielfeld, i, j) == true) {
anzahllebendig++;
}
}
}
if (spielfeld[i][j] == true && (anzahllebendig == 2 || anzahllebendig == 3)) {
spielfeld[i][j] = true;
} else {
spielfeld[i][j] = false;
}
if (spielfeld[i][j] == false && anzahllebendig == 3) {
spielfeld[i][j] = true;
} else {
spielfeld[i][j] = false;
}
update(spielfeld);
return anzahllebendig;
}
}