in Java das ist mein CodeIm Graph oder wo?
Im RL kannst du das vergessen, D hat ja noch nicht mal ein Impfregister 🤣
Bitte Code-Tags verwenden (im Editor oben links auf </> klicken, dort den Code einfügen). Ggf. kannst Du Deinen Beitrag noch bearbeiten.
Die Frage ist: wie ist die Nachbarschaft definiert und was willst Du testen?
Es wurde noch keine Unit-Tests für die Klasse Field implementiert. Dies soll
nun nachgeholt werden. Da sich hasNeighbor auf die eigentlich privaten Methoden getCell und
getNeighborhood abstützt, kann Field über das Zusammenspiel des Konstruktors mit hasNeighbor
vollständig getestet werden. Es braucht nicht getestet zu werden, ob der Konstruktor tatsächlich
die richtigen Grafiken erzeugt.
class Field
{
/
* Die Dateinamen der Bodengitterelemente, die direkt mit einer
* Rotation 0 verwendet werden kÃķnnen. Der Index ergibt sich
* aus der Summe der folgenden Zahlen:
* 1: In Richtung 0 (+1, 0) gibt es eine Verbindung.
* 2: In Richtung 1 (0, +1) gibt es eine Verbindung.
* 4: In Richtung 2 (-1, 0) gibt es eine Verbindung.
* 8: In Richtung 3 (0, -1) gibt es eine Verbindung.
*/
private static final String[] NEIGHBORHOOD_TO_FILENAME = {
"grass",
"path-e-0",
"path-e-1",
"path-l-0",
"path-e-2",
"path-i-0",
"path-l-1",
"path-t-1",
"path-e-3",
"path-l-3",
"path-i-1",
"path-t-0",
"path-l-2",
"path-t-3",
"path-t-2",
"path-x"
};
char dieter[][];
/** Ein Testfall, der alle Nachbarschaften enthÃĪlt. */
static void test()
{
new GameObject.Canvas(5, 5, 96, 96);
// Einkommentieren, sobald Konstruktor vorhanden
new Field(new String[] {
"O-O-O-O ",
"| | ",
"O O-O-O O",
"| | | | |",
"O-O-O-O-O",
"| | | | |",
"O O-O-O O",
" | |",
"O-O-O-O-O"
});
}
public Field(String[]field){
dieter=new char[field.length][];
for(int x=0;x<field.length;x++){
dieter[x]=new char[field[x].length()];
for(int y=0; y<field[x].length();y++){
dieter[x][y]=field[x].charAt(y);
}
}
for(int y=0;y<dieter.length;y+=2){
for(int x=0;x<dieter[y].length;x+=2){
GameObject A = new GameObject(x/2,y/2,0,NEIGHBORHOOD_TO_FILENAME[getNeighborhood(x,y)]);
}
}
}
private char getCell(int x, int y){
try {
return dieter[x][y];
} catch(IndexOutOfBoundsException ex) {
return ' ';
}
}
private int getNeighborhood(int x, int y) {
int counter = 0;
if (getCell(x + 1, y) != ' ') counter += 1;
if (getCell(x, y + 1) != ' ') counter += 2;
if (getCell(x - 1, y) != ' ') counter += 4;
if (getCell(x, y -1) != ' ') counter += 8;
return counter;
}
}
Wir sind kein Hausaufgaben-Lösungs-Service...Kann jemand mir genau sagen, was ich schreiben soll und wo ?
Nehmen wir mal an, Du hast eine Methode mit der SignaturIch habe nicht ganz verstanden. Kann jemand mir genau sagen, was ich schreiben soll und wo ?
int plus(int a, int b)
und diese Methode soll die Summe von a und b liefern, sofern das Ergebnis in ein int passt, ansonsten eine ArithmeticException auslösen.int erwartetesErgebnis = 0;
int paramA =0;
int paramB = 0;
int tatsaechlichesErgebnis = plus(paramA, paramB);
if (tatsaechlichesErgebnis != erwartetesErgebnis) {
System.err.printf("Test schlug fehl. plus(%d, %d); erwartetes Ergebnis %d, war jedoch %d%n",
paramA, paramB, erwartetesErgebnis, tatsaechlichesErgebnis);
System.exit(1);
}
@Test
public void plusSoll0Liefern() {
assertEquals(0, plus(0,0));
}