Ich sitze grade an einer Beleg Aufgabe für die Uni. Wir sollen das Game "FLOOD IT". Im Prinzip ist es ein
20 x 20 großes Feld mit 20 x 20 Rechtecken in unterschiedlichen Farben. Diese Farben ändern sich nach der Betätigung eines Buttons. Genau da stecke ich nun.
Wenn das Programm gestartet wird, wird hiermit das Feld erzeugt. Klappt wunderbar.
In game[][] sind quasi Zahlen von 1-4 gespeichert, da die Vergabe der Felder Zufällig ist.
Und in dem Array Colors[] sind dann die jeweiligen Icon Namen gespeichert. 4 An der Zahl.
und sieht so aus:
Nun habe ich versucht irgendein Stein im Feld zu ändern in dem ich in der Matrix game[][] z.b. die Position 2 2, 1 gesetzt habe und habe das Feld in einer zweiten Methode neu geladen. Passiert einfach nichts. Testweise habe ich mir dann überlegt einfach fuellen() nach einem Button Klick auszuführen, das müsste ja dann einfach ein neues zufälliges Feld generieren. Passiert leider auch nicht. Er generiert das Feld nur einmal, egal ob ich die Methode nochmal ausführe oder versuche was zu ändern. Ich komme nicht weiter. Bitte um Rat.
Hier die zweite Methode mit der ich einfach das Feld aktualisieren wollte, nachdem ich z.b. ein Feld verändert hab.
Ich weiß das man das auch ohne Icons sondern mit Colors machen könnte, indem man sie färbt. Das möchte ich aber nicht. Was mache ich falsch?
EDIT:
Also ich schaffe es das er weitere 20 x 20 Felder erstellt. Jedoch muss ich erst das fenster minimieren und wieder auf machen damit das sichtbar ist. Ich möchte aber einfach nur den alten Farbenblock mit einem neuen ersetzen...
20 x 20 großes Feld mit 20 x 20 Rechtecken in unterschiedlichen Farben. Diese Farben ändern sich nach der Betätigung eines Buttons. Genau da stecke ich nun.
Wenn das Programm gestartet wird, wird hiermit das Feld erzeugt. Klappt wunderbar.
In game[][] sind quasi Zahlen von 1-4 gespeichert, da die Vergabe der Felder Zufällig ist.
Und in dem Array Colors[] sind dann die jeweiligen Icon Namen gespeichert. 4 An der Zahl.
Code:
public void fuellen() {
// Füllt die Matrix mit Feldern, mit zufälligen farben mit der
// RandomFarbe Methode.
setLayout(new GridLayout(Floodit.game_size,Floodit.game_size,0,0));
for (int row = 0; row < game.length; row++) {
for (int col = 0; col < Floodit.game_size; col++) {
game[row][col] = Floodit.FarbGenerator();
ImageIcon icon = new ImageIcon( getClass().getResource(Floodit.Colors[game[row][col]]));
JLabel label = new JLabel(icon);
add(label);
setVisible(true);
}
}
}
und sieht so aus:
Nun habe ich versucht irgendein Stein im Feld zu ändern in dem ich in der Matrix game[][] z.b. die Position 2 2, 1 gesetzt habe und habe das Feld in einer zweiten Methode neu geladen. Passiert einfach nichts. Testweise habe ich mir dann überlegt einfach fuellen() nach einem Button Klick auszuführen, das müsste ja dann einfach ein neues zufälliges Feld generieren. Passiert leider auch nicht. Er generiert das Feld nur einmal, egal ob ich die Methode nochmal ausführe oder versuche was zu ändern. Ich komme nicht weiter. Bitte um Rat.
Hier die zweite Methode mit der ich einfach das Feld aktualisieren wollte, nachdem ich z.b. ein Feld verändert hab.
Code:
public void aktualisieren() {
game[2][2] = 1;
for (int row = 0; row < game.length; row++) {
for (int col = 0; col < Floodit.game_size; col++) {
ImageIcon icon = new ImageIcon( getClass().getResource(Floodit.Colors[game[row][col]]));
JLabel label = new JLabel(icon);
add(label);
setVisible(true);
}
}
}
Ich weiß das man das auch ohne Icons sondern mit Colors machen könnte, indem man sie färbt. Das möchte ich aber nicht. Was mache ich falsch?
EDIT:
Also ich schaffe es das er weitere 20 x 20 Felder erstellt. Jedoch muss ich erst das fenster minimieren und wieder auf machen damit das sichtbar ist. Ich möchte aber einfach nur den alten Farbenblock mit einem neuen ersetzen...
Zuletzt bearbeitet: