You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.0 KiB

  1. package de.edu.hsfulda.ccip.tdd.withdependencies;
  2. import java.util.Collection;
  3. import java.util.LinkedList;
  4. import java.util.stream.Collectors;
  5. public class GameOfLifeCell {
  6. private GameOfLifeStatus status;
  7. private final Collection<GameOfLifeCell> neighborStates = new LinkedList<>();
  8. private GameOfLifeStatus nexState;
  9. private GameOfLifeStateChangeListener stateChangeListener;
  10. public GameOfLifeCell(//
  11. GameOfLifeStatus status, //
  12. GameOfLifeStateChangeListener stateChangeListener) {
  13. this.status = status;
  14. this.stateChangeListener = stateChangeListener;
  15. }
  16. public void addNeighbor(GameOfLifeCell neighbor) {
  17. neighborStates.add(neighbor);
  18. }
  19. public void caclulateNextState() {
  20. nexState = status
  21. .calculateNextBy(neighborStates.stream().map(GameOfLifeCell::getState).collect(Collectors.toList()));
  22. if (!nexState.equals(status))
  23. stateChangeListener.stateChangedIn(this);
  24. }
  25. public GameOfLifeStatus getState() {
  26. return status;
  27. }
  28. public void updateState() {
  29. status = nexState;
  30. }
  31. }