Hallo Leute,
wir müssen eine Klasse Rasterbild schreiben, die wie bei Paint der Farbfüller fungiert.
Bis auf die letzte Methode habe ich auch alles soweit nur komme ich bei der letzten Methode gedanklich nicht weiter. 3 Klassen wurden uns vorgegeben. Ich poste jetzt erstmal nur meine. Wenn das nicht ausreichen sollte poste ich die anderen noch nach. Vielleicht kann mir Jemand gedanklich weiterhelfen.
Aufgabe der letzten Methode lautet: Schreiben Sie eine Methode void fuelleFlaeche(Punkt startpunkt, Color neueFarbe) Der Startpunkt legt die Fläche fest, die mit der übergebenen Farbe gefüllt werden soll. Es handelt sich hierbei um die Fläche aller Punkte, die die gleiche Farbe wie der Startpunkt besitzen und direkt oder indirekt an den Startpunkt grenzen. Mit angrenzen ist gemeint, dass Punkte sich mit ihren Seiten berühren. Die beiden unteren grünen Punkte in Abbildung 2 grenzen z. B. nicht aneinander, da sie sich nur mit ihren Ecken berühren.
Ist die übergebene Farbe gleich der Farbe des Startpunkts oder liegt der Startpunkt außerhalb der Grenzen des Bilds, soll das Rasterbild unverändert bleiben.
Also konkret ist mein Problem folgendes:
Wie prüfe ich die umliegenden Raster so, dass ich von jedem ausgehend wieder die umliegenden bis zu einer Begrenzung prüfe? Mir fällt hier einfach keine Lösung ein.
wir müssen eine Klasse Rasterbild schreiben, die wie bei Paint der Farbfüller fungiert.
Bis auf die letzte Methode habe ich auch alles soweit nur komme ich bei der letzten Methode gedanklich nicht weiter. 3 Klassen wurden uns vorgegeben. Ich poste jetzt erstmal nur meine. Wenn das nicht ausreichen sollte poste ich die anderen noch nach. Vielleicht kann mir Jemand gedanklich weiterhelfen.
Java:
/**
*
* @author Christian
* Diese Klasse representiert ein Rasterbild, welches nach einer Farbauswahl
* die umliegenden gleichfarbigen Raster in der ausgewählten Farbe einfärbt bis
* diese auf eine Begrenzung trifft.
*/
public class Rasterbild {
/**
*Innstanzvariable rechteck wird angelegt.
*/
private java.awt.Color[][] rechteck;
/**
* Der Konstruktor erzeugt ein neues Objekt rechteck.
* @param rechteck x und y Koordinate wir dem rechteck Objekt vom
* Typ java.awt.Color zugewiesen.
*
*/
public Rasterbild (java.awt.Color[][] rechteck) {
this.rechteck = rechteck;
}
/**
* @return Gibt die Breite des Bildes (der Rasterpunkte) des Arrays zurück.
*/
public int gibBreite() {
return rechteck.length;
}
/**
* @return Gibt die Hoehe des Bildes (der Rasterpunkte) des Arrays zurück.
*/
public int gibHoehe() {
return rechteck[0].length;
}
/**
* Liefert die Farbe der durch den Punkt x und y angegeben Koordinaten.
* @param x Koordinate
* @param y Koordinate
* @return Liefert ein rechteck Objekt mit den übergebenen Koordinaten.
*/
public java.awt.Color gibFarbe(int x, int y) {
return rechteck[x][y];
}
/**
* Der Startpunkt legt die Fläche fest, die mit der übergebenen Farbe
* gefüllt werden soll. Es handelt sich hierbei um die Fläche aller Punkte,
* die die gleiche Farbe wie der Startpunkt besitzen und direkt oder
* indirekt an den Startpunkt grenzen.
* @param startpunkt Zuweisung von x und y Koordinate
* @param neueFarbe Besitzt Koordinaten des Ausgangspunktes
*/
public void fuelleFlaeche(Punkt startpunkt, java.awt.Color neueFarbe) {
rechteck[startpunkt.gibX()][startpunkt.gibY()] = neueFarbe;
}
}
Aufgabe der letzten Methode lautet: Schreiben Sie eine Methode void fuelleFlaeche(Punkt startpunkt, Color neueFarbe) Der Startpunkt legt die Fläche fest, die mit der übergebenen Farbe gefüllt werden soll. Es handelt sich hierbei um die Fläche aller Punkte, die die gleiche Farbe wie der Startpunkt besitzen und direkt oder indirekt an den Startpunkt grenzen. Mit angrenzen ist gemeint, dass Punkte sich mit ihren Seiten berühren. Die beiden unteren grünen Punkte in Abbildung 2 grenzen z. B. nicht aneinander, da sie sich nur mit ihren Ecken berühren.
Ist die übergebene Farbe gleich der Farbe des Startpunkts oder liegt der Startpunkt außerhalb der Grenzen des Bilds, soll das Rasterbild unverändert bleiben.
Also konkret ist mein Problem folgendes:
Wie prüfe ich die umliegenden Raster so, dass ich von jedem ausgehend wieder die umliegenden bis zu einer Begrenzung prüfe? Mir fällt hier einfach keine Lösung ein.
Zuletzt bearbeitet: