diff --git a/out/production/GameOfLifeAssignment/Life.class b/out/production/GameOfLifeAssignment/Life.class index 51e3062..9e2e236 100644 Binary files a/out/production/GameOfLifeAssignment/Life.class and b/out/production/GameOfLifeAssignment/Life.class differ diff --git a/out/test/GameOfLifeAssignment/LifeTest.class b/out/test/GameOfLifeAssignment/LifeTest.class index 91b85cf..b39995b 100644 Binary files a/out/test/GameOfLifeAssignment/LifeTest.class and b/out/test/GameOfLifeAssignment/LifeTest.class differ diff --git a/src/Life.java b/src/Life.java index caf62b4..4b6b785 100644 --- a/src/Life.java +++ b/src/Life.java @@ -13,7 +13,6 @@ public class Life implements ILife { l = (Life) l.nextGeneration(); } - public Life() { nukeAll(); } @@ -26,7 +25,6 @@ public class Life implements ILife { setAlive(x, y); } } - //System.out.println(board[y]); } printTable(board); } @@ -36,7 +34,6 @@ public class Life implements ILife { System.out.println("________"); } - @Override public void nukeAll() { //works // TODO Auto-generated method stub @@ -45,7 +42,6 @@ public class Life implements ILife { setDead(x, y); } } - } @Override @@ -72,7 +68,7 @@ public class Life implements ILife { @Override public ILife nextGeneration() { - //Problem mehrere steps auf einmal da gesetzer * bei nachfolgendem durchlauf mitberücksichtigt wird + int alive; String[] nextBoard = new String[]{ " ", " ", @@ -88,11 +84,12 @@ public class Life implements ILife { if(!isAlive(x,y) && alive == 3) { nextBoard[y] = nextBoard[y].substring(0, x) + '*' + nextBoard[y].substring(x+1); } - //Cell is lonely and dies - else if(isAlive(x,y) && alive < 2){ + //Cell is lonely and dies or cell is overpopulated and dies + else if((isAlive(x,y) && (alive < 2)) || (alive > 3)){ nextBoard[y] = nextBoard[y].substring(0, x) + ' ' + nextBoard[y].substring(x+1); } - else if(isAlive(x,y) && (alive==2 || alive ==3)){ + //Cell with two or three living neighbours lives on + else if(isAlive(x,y) && (alive == 2 || alive == 3)){ nextBoard[y] = nextBoard[y].substring(0, x) + board[y].charAt(x) + nextBoard[y].substring(x+1); } } @@ -150,5 +147,4 @@ public class Life implements ILife { } return neighbours; } -} - +} \ No newline at end of file diff --git a/test/LifeTest.java b/test/LifeTest.java index 5631c4f..d86746b 100644 --- a/test/LifeTest.java +++ b/test/LifeTest.java @@ -20,10 +20,8 @@ public class LifeTest { assertTrue(l.isAlive(1, 1)); } - @Test public void destroyLonelyCell() { - //Lebende Zellen mit weniger als zwei lebenden Nachbarn sterben in der Folgegeneration an Einsamkeit. // Arrange: drei lebende Zellen Life l = new Life(); l.setAlive(0, 0); @@ -33,14 +31,12 @@ public class LifeTest { // Act: Berechnung der Folgegeneration l.nextGeneration(); - // Assert: Rasterpunkt mit weniger als zwei Nachbarn sollte sterben + // Assert: Lebende Zellen mit weniger als zwei lebenden Nachbarn sterben in der Folgegeneration an Einsamkeit assertFalse(l.isAlive(0, 0)); } - @Test public void keepAliveCell() { - //Eine lebende Zelle mit zwei oder drei lebenden Nachbarn bleibt in der Folgegeneration am Leben. // Arrange: drei lebende Zellen Life l = new Life(); l.setAlive(0, 0); @@ -50,14 +46,25 @@ public class LifeTest { // Act: Berechnung der Folgegeneration l.nextGeneration(); - // Assert: Rasterpunkt mit zwei oder 3 lebenden Nachbarn bleibt am Leben + // Assert: Eine lebende Zelle mit zwei oder drei lebenden Nachbarn bleibt in der Folgegeneration am Leben. assertTrue(l.isAlive(0, 1)); } - @Test public void destroyCrowdedCell() { + // Arrange: vier lebende Zellen + Life l = new Life(); + l.setAlive(0, 0); + l.setAlive(0, 1); + l.setAlive(0, 2); + l.setAlive(1, 1); + l.setAlive(1, 0); + + // Act: Berechnung der Folgegeneration + l.nextGeneration(); + + // Assert: Lebende Zellen mit mehr als drei lebenden Nachbarn sterben in der Folgegeneration an Überbevölkerung + assertFalse(l.isAlive(0, 1)); } - }