l = (Life) l.nextGeneration(); | l = (Life) l.nextGeneration(); | ||||
} | } | ||||
public Life() { | public Life() { | ||||
nukeAll(); | nukeAll(); | ||||
} | } | ||||
setAlive(x, y); | setAlive(x, y); | ||||
} | } | ||||
} | } | ||||
//System.out.println(board[y]); | |||||
} | } | ||||
printTable(board); | printTable(board); | ||||
} | } | ||||
System.out.println("________"); | System.out.println("________"); | ||||
} | } | ||||
@Override | @Override | ||||
public void nukeAll() { //works | public void nukeAll() { //works | ||||
// TODO Auto-generated method stub | // TODO Auto-generated method stub | ||||
setDead(x, y); | setDead(x, y); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
@Override | @Override | ||||
public ILife nextGeneration() { | public ILife nextGeneration() { | ||||
//Problem mehrere steps auf einmal da gesetzer * bei nachfolgendem durchlauf mitberücksichtigt wird | |||||
int alive; | int alive; | ||||
String[] nextBoard = new String[]{ " ", | String[] nextBoard = new String[]{ " ", | ||||
" ", | " ", | ||||
if(!isAlive(x,y) && alive == 3) { | if(!isAlive(x,y) && alive == 3) { | ||||
nextBoard[y] = nextBoard[y].substring(0, x) + '*' + nextBoard[y].substring(x+1); | 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); | 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); | nextBoard[y] = nextBoard[y].substring(0, x) + board[y].charAt(x) + nextBoard[y].substring(x+1); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return neighbours; | return neighbours; | ||||
} | } | ||||
} | |||||
} |
assertTrue(l.isAlive(1, 1)); | assertTrue(l.isAlive(1, 1)); | ||||
} | } | ||||
@Test | @Test | ||||
public void destroyLonelyCell() { | public void destroyLonelyCell() { | ||||
//Lebende Zellen mit weniger als zwei lebenden Nachbarn sterben in der Folgegeneration an Einsamkeit. | |||||
// Arrange: drei lebende Zellen | // Arrange: drei lebende Zellen | ||||
Life l = new Life(); | Life l = new Life(); | ||||
l.setAlive(0, 0); | l.setAlive(0, 0); | ||||
// Act: Berechnung der Folgegeneration | // Act: Berechnung der Folgegeneration | ||||
l.nextGeneration(); | 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)); | assertFalse(l.isAlive(0, 0)); | ||||
} | } | ||||
@Test | @Test | ||||
public void keepAliveCell() { | public void keepAliveCell() { | ||||
//Eine lebende Zelle mit zwei oder drei lebenden Nachbarn bleibt in der Folgegeneration am Leben. | |||||
// Arrange: drei lebende Zellen | // Arrange: drei lebende Zellen | ||||
Life l = new Life(); | Life l = new Life(); | ||||
l.setAlive(0, 0); | l.setAlive(0, 0); | ||||
// Act: Berechnung der Folgegeneration | // Act: Berechnung der Folgegeneration | ||||
l.nextGeneration(); | 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)); | assertTrue(l.isAlive(0, 1)); | ||||
} | } | ||||
@Test | @Test | ||||
public void destroyCrowdedCell() { | 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)); | |||||
} | |||||
} | } |