Ich habe angefangen das "Game of Life" nachzuprogrammieren, allerdings komme ich mit meinem letzigen code nicht weiter bzw es klappt nicht, kann mir jemand sagen,was ich falsch gemacht habe?
Code:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class GameOfLifeGui extends JFrame {
boolean isFirstPress = true;
boolean isSecondPress = false;
private JButton start;
private JButton[] knopf = new JButton[100];
int anzNachbarn = 0;
public GameOfLifeGui() {
super("Game of Life");
createFelderButtons();
createStartButton();
}
private void createStartButton() {
JPanel startPanel = new JPanel();
startPanel.setLayout(new FlowLayout());
start = new JButton("Los!");
startPanel.add(start);
add(startPanel);
startPanel.setVisible(true);
start.addActionListener(getStartListener());
}
private void nachbarn(int i) {
if (anzNachbarn < 2 && knopf[i].getBackground()==Color.GREEN) {
knopf[i].setBackground(Color.LIGHT_GRAY);
} else if (anzNachbarn > 3 && knopf[i].getBackground()==Color.GREEN) {
knopf[i].setBackground(Color.LIGHT_GRAY);
} else if (knopf[i].getBackground() == Color.LIGHT_GRAY && anzNachbarn == 3) {
knopf[i].setBackground(Color.GREEN);
}
anzNachbarn = 0;
}
void createFelderButtons() {
setLayout(new GridLayout(11, 10));
for (int i = 0; i <= 99; i++) {
JPanel felderPanel = new JPanel();
felderPanel.setLayout(new GridLayout(10, 10));
knopf[i] = new JButton(String.valueOf(i));
start = new JButton("Los!");
add(knopf[i]);
knopf[i].addActionListener(getGridListener());
knopf[i].setText(String.valueOf(i));
felderPanel.setVisible(true);
knopf[i].setText(i + " ");
knopf[i].setBackground(Color.GRAY);
}
}
private ActionListener getGridListener() {
return (event) -> {
JButton clickedButton = (JButton) event.getSource();
if (isFirstPress) {
clickedButton.setBackground(Color.GREEN);
isFirstPress = false;
isSecondPress = true;
} else if (isSecondPress) {
clickedButton.setBackground(Color.GRAY);
isSecondPress = false;
isFirstPress = true;
}
};
}
private ActionListener getStartListener() {
return (event) -> {
for (int i = 0; i <= knopf.length; i++) {
if (knopf[0].getBackground() == Color.GREEN) {
if (knopf[i + 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 11].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
} nachbarn(i);
}else if (knopf[90].getBackground() == Color.GREEN) {
if (knopf[i + 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 11].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
} nachbarn(i);
}else if (knopf[9].getBackground() == Color.GREEN) {
if (knopf[i - 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 9].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
} nachbarn(i);
}else if (knopf[99].getBackground() == Color.GREEN) {
if (knopf[i - 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 11].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
} nachbarn(i);
}else if (knopf[1].getBackground() == Color.GREEN || knopf[2].getBackground() == Color.GREEN
|| knopf[3].getBackground() == Color.GREEN || knopf[4].getBackground() == Color.GREEN
|| knopf[5].getBackground() == Color.GREEN || knopf[6].getBackground() == Color.GREEN
|| knopf[7].getBackground() == Color.GREEN || knopf[8].getBackground() == Color.GREEN) {
if (knopf[i + 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 9].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 11].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
} nachbarn(i);
}else if (knopf[10].getBackground() == Color.GREEN || knopf[20].getBackground() == Color.GREEN
|| knopf[30].getBackground() == Color.GREEN || knopf[40].getBackground() == Color.GREEN
|| knopf[50].getBackground() == Color.GREEN || knopf[60].getBackground() == Color.GREEN
|| knopf[70].getBackground() == Color.GREEN || knopf[80].getBackground() == Color.GREEN) {
if (knopf[i - 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 9].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 9].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
} nachbarn(i);
}else if (knopf[91].getBackground() == Color.GREEN || knopf[92].getBackground() == Color.GREEN
|| knopf[93].getBackground() == Color.GREEN || knopf[94].getBackground() == Color.GREEN
|| knopf[95].getBackground() == Color.GREEN || knopf[96].getBackground() == Color.GREEN
|| knopf[97].getBackground() == Color.GREEN || knopf[98].getBackground() == Color.GREEN) {
if (knopf[i + 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 9].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 11].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
} nachbarn(i);
}else if (knopf[19].getBackground() == Color.GREEN || knopf[29].getBackground() == Color.GREEN
|| knopf[39].getBackground() == Color.GREEN || knopf[49].getBackground() == Color.GREEN
|| knopf[59].getBackground() == Color.GREEN || knopf[69].getBackground() == Color.GREEN
|| knopf[79].getBackground() == Color.GREEN || knopf[89].getBackground() == Color.GREEN) {
if (knopf[i - 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 11].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 9].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
} nachbarn(i);
}else if ( knopf[11].getBackground() == Color.GREEN || knopf[12].getBackground() == Color.GREEN
|| knopf[13].getBackground() == Color.GREEN || knopf[14].getBackground() == Color.GREEN
|| knopf[15].getBackground() == Color.GREEN || knopf[16].getBackground() == Color.GREEN
|| knopf[17].getBackground() == Color.GREEN || knopf[18].getBackground() == Color.GREEN
|| knopf[21].getBackground() == Color.GREEN || knopf[22].getBackground() == Color.GREEN
|| knopf[23].getBackground() == Color.GREEN || knopf[24].getBackground() == Color.GREEN
|| knopf[25].getBackground() == Color.GREEN || knopf[26].getBackground() == Color.GREEN
|| knopf[27].getBackground() == Color.GREEN || knopf[28].getBackground() == Color.GREEN
|| knopf[31].getBackground() == Color.GREEN || knopf[32].getBackground() == Color.GREEN
|| knopf[33].getBackground() == Color.GREEN || knopf[34].getBackground() == Color.GREEN
|| knopf[35].getBackground() == Color.GREEN || knopf[36].getBackground() == Color.GREEN
|| knopf[37].getBackground() == Color.GREEN || knopf[38].getBackground() == Color.GREEN
|| knopf[41].getBackground() == Color.GREEN || knopf[42].getBackground() == Color.GREEN
|| knopf[43].getBackground() == Color.GREEN || knopf[44].getBackground() == Color.GREEN
|| knopf[45].getBackground() == Color.GREEN || knopf[46].getBackground() == Color.GREEN
|| knopf[47].getBackground() == Color.GREEN || knopf[48].getBackground() == Color.GREEN
|| knopf[51].getBackground() == Color.GREEN || knopf[52].getBackground() == Color.GREEN
|| knopf[53].getBackground() == Color.GREEN || knopf[54].getBackground() == Color.GREEN
|| knopf[55].getBackground() == Color.GREEN || knopf[56].getBackground() == Color.GREEN
|| knopf[57].getBackground() == Color.GREEN || knopf[58].getBackground() == Color.GREEN
|| knopf[61].getBackground() == Color.GREEN || knopf[62].getBackground() == Color.GREEN
|| knopf[63].getBackground() == Color.GREEN || knopf[64].getBackground() == Color.GREEN
|| knopf[65].getBackground() == Color.GREEN || knopf[66].getBackground() == Color.GREEN
|| knopf[67].getBackground() == Color.GREEN || knopf[68].getBackground() == Color.GREEN
|| knopf[71].getBackground() == Color.GREEN || knopf[72].getBackground() == Color.GREEN
|| knopf[73].getBackground() == Color.GREEN || knopf[74].getBackground() == Color.GREEN
|| knopf[75].getBackground() == Color.GREEN || knopf[76].getBackground() == Color.GREEN
|| knopf[77].getBackground() == Color.GREEN || knopf[78].getBackground() == Color.GREEN
|| knopf[81].getBackground() == Color.GREEN || knopf[82].getBackground() == Color.GREEN
|| knopf[83].getBackground() == Color.GREEN || knopf[84].getBackground() == Color.GREEN
|| knopf[85].getBackground() == Color.GREEN || knopf[86].getBackground() == Color.GREEN
|| knopf[87].getBackground() == Color.GREEN || knopf[88].getBackground() == Color.GREEN) {
if (knopf[i + 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 9].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i + 11].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 1].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 9].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 10].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}if (knopf[i - 11].getBackground() == Color.GREEN) {
anzNachbarn += 1;
}else {
anzNachbarn=0;
}
nachbarn(i);
}
}
;
};
}
}