Init
This commit is contained in:
commit
09a995eccf
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.vscode/settings.json
|
||||||
|
.gitignore
|
13
GameOfLifeTDD.iml
Normal file
13
GameOfLifeTDD.iml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="jars" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
48
README.md
Normal file
48
README.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# Programmieren 3
|
||||||
|
|
||||||
|
## Assignment "Game Of Life"
|
||||||
|
|
||||||
|
### Einführung
|
||||||
|
|
||||||
|
#### Game of Life
|
||||||
|
|
||||||
|
Ihre Aufgabe ist es, eine Klasse <code>Life</code> zu implementieren,
|
||||||
|
die das *Game of Life* simuliert. Beim *Game of Life*
|
||||||
|
werden Zellen in einem zweidimensionelen Raster angeordnet.
|
||||||
|
An jedem Rasterpunkt kann entweder eine lebende Zelle oder ein
|
||||||
|
Leerraum positioniert werden.
|
||||||
|
|
||||||
|
Für das Entstehen, Überleben oder Absterben einer Zelle
|
||||||
|
ist die Anzahl der unmittelbaren Nachbarn entscheidend.
|
||||||
|
Jeder Rasterpunkt hat 8 benachbarte Rasterpunkte
|
||||||
|
(links, rechts, oben, unten, oben links, oben rechts, unten links, unten rechts).
|
||||||
|
Für die Berechnung der nachfolgenden Generation sind auf die
|
||||||
|
aktuelle Generation folgende Regeln anzuwenden:
|
||||||
|
|
||||||
|
- Eine neue Zelle an einem bisher unbelebten Rasterpunkt entsteht,
|
||||||
|
wenn genau drei benachbarte Rasterpunkte mit lebenden Zellen
|
||||||
|
besetzt sind.
|
||||||
|
|
||||||
|
- Lebende Zellen mit weniger als zwei lebenden Nachbarn sterben in der Folgegeneration an Einsamkeit.
|
||||||
|
|
||||||
|
- Eine lebende Zelle mit zwei oder drei lebenden Nachbarn bleibt in der Folgegeneration am Leben.
|
||||||
|
|
||||||
|
- Lebende Zellen mit mehr als drei lebenden Nachbarn sterben in der Folgegeneration an Überbevölkerung.
|
||||||
|
|
||||||
|
|
||||||
|
#### Vorgaben
|
||||||
|
|
||||||
|
Im Assignment werden Ihnen drei Code-Dateien vorgegeben:
|
||||||
|
|
||||||
|
- <code>Life</code> soll später den Produktivcode enthalten.
|
||||||
|
- <code>LifeTest</code> soll für den Testcode benutzt werden.
|
||||||
|
- <code>ILife</code> ist ein Interface, das von der <code>Life</code>-Klasse
|
||||||
|
implementiert werden soll.
|
||||||
|
|
||||||
|
### Aufgabenstellung
|
||||||
|
|
||||||
|
Implementieren Sie die Klasse <code>Life</code> unter Nutzung der TDD-Vorgehensweise.
|
||||||
|
Erstellen Sie für die oben genannten Regeln jeweils mindestens einen Testfall (für
|
||||||
|
die erste Regel wurde bereits ein Testfall mitgeliefert).
|
||||||
|
|
||||||
|
|
BIN
jars/hamcrest-core-1.3.jar
Normal file
BIN
jars/hamcrest-core-1.3.jar
Normal file
Binary file not shown.
BIN
jars/junit-4.12.jar
Normal file
BIN
jars/junit-4.12.jar
Normal file
Binary file not shown.
14
src/ILife.java
Normal file
14
src/ILife.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
public interface ILife {
|
||||||
|
|
||||||
|
// Methoden zum Setzen der Ausgangssituation
|
||||||
|
public void nukeAll();
|
||||||
|
public void setAlive(int x, int y);
|
||||||
|
public void setDead(int x, int y);
|
||||||
|
|
||||||
|
// Methoden zum Abfragen der aktuellen Situation
|
||||||
|
public boolean isAlive(int x, int y);
|
||||||
|
|
||||||
|
// Methoden zum Fortschreiben der Generationen
|
||||||
|
public ILife nextGeneration();
|
||||||
|
|
||||||
|
}
|
55
src/Life.java
Normal file
55
src/Life.java
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
public class Life implements ILife {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Life l = new Life(new String[] { " ",
|
||||||
|
" ",
|
||||||
|
" *** ",
|
||||||
|
" ",
|
||||||
|
" " });
|
||||||
|
l = (Life) l.nextGeneration();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Life() {
|
||||||
|
nukeAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Life(String[] setup) {
|
||||||
|
this();
|
||||||
|
for (int y = 0; y < setup.length; y++)
|
||||||
|
for (int x = 0; x < setup[y].length(); x++)
|
||||||
|
if (setup[y].charAt(x) != ' ')
|
||||||
|
setAlive(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void nukeAll() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setAlive(int x, int y) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDead(int x, int y) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAlive(int x, int y) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ILife nextGeneration() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
38
test/LifeTest.java
Normal file
38
test/LifeTest.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class LifeTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createNewCell() {
|
||||||
|
|
||||||
|
// Arrange: drei lebende Zellen
|
||||||
|
Life l = new Life();
|
||||||
|
l.setAlive(0, 0);
|
||||||
|
l.setAlive(0, 1);
|
||||||
|
l.setAlive(0, 2);
|
||||||
|
|
||||||
|
// Act: Berechnung der Folgegeneration
|
||||||
|
ILife nextGen = l.nextGeneration();
|
||||||
|
|
||||||
|
// Assert: Rasterpunkt mit drei Nachbarn sollte jetzt leben
|
||||||
|
assertTrue(nextGen.isAlive(1, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void destroyLonelyCell() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void keepAliveCell() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void destroyCrowdedCell() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user