Skip to content
Snippets Groups Projects
Select Git revision
  • ffefdb0118c947aed8fd2acaf980eb8d3a0b6948
  • main default protected
  • correction_video
  • going_further
  • ImprovedMouseInteraction
  • final2023
  • template
  • ModifGUI
8 results

GameOfLifeAutomaton.java

Blame
  • Forked from YAGOUBI Rim / Game of life Template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    RockPaperCisorScenario.java 1.42 KiB
    package model.rockpapercisor;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    import model.Board;
    import model.Entity;
    import model.EntityFactory;
    import model.Model;
    import model.Scenario;
    import model.Square;
    import util.Position;
    
    public class RockPaperCisorScenario extends Scenario implements Model{
        public RockPaperCisorScenario(int columns, int rows, Map<EntityFactory, Integer> initialMap) {
            super(columns, rows, initialMap);
        }
    
        public List<Position> updateToNextGeneration() {
            ArrayList<Position> changedPositions = new ArrayList<>();
            Iterator<Square> iterator = getMatrix().iterator();
            while (iterator.hasNext()) {
              Square s = iterator.next();
              if (s.isEmpty())
                continue;
              if (s.getMaxAge() == 0) {
                s.incrementAllAges();
                continue;
              }
              if(s.getMaxAge()>stepNumber()+1){
                continue;
              }
              List<Entity> entities = new ArrayList<>(s.getEntities());
              for (Entity e : entities) {
                e.incrementAge();
                changedPositions.addAll(e.nextTurn(this));
              }
            }
            
            // Increment the step counter
            this.step = this.step + 1;
            System.out.println("-----------");
            return changedPositions;
          }
    
        @Override
        public Board<Square> getBoard() {
            return this;
        }
    }