diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin index da379200dc085b771d4dcddfb52048b307521c21..a3e7f8602849b2e0bf11a56dfc94657962ac3e3d 100644 Binary files a/.gradle/8.8/executionHistory/executionHistory.bin and b/.gradle/8.8/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock index 4abdef7a3725bed502b1e30b47a4a19cf7b419f4..2b24742372c4a2edb077b6c88e3ae81a1a37cad5 100644 Binary files a/.gradle/8.8/executionHistory/executionHistory.lock and b/.gradle/8.8/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin index e0921c29234010082a6d5eced33c9083ffa5fa09..bb482b98ce2455d062e85dfc26a00662ad7b96fe 100644 Binary files a/.gradle/8.8/fileHashes/fileHashes.bin and b/.gradle/8.8/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock index 73a5220e88947f0b23b2fc342a3a2e08c08baef8..9cef599b048a668bc1755a29994b4f2d1a0556de 100644 Binary files a/.gradle/8.8/fileHashes/fileHashes.lock and b/.gradle/8.8/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin index 492243c6aee7902c2d5ea5e6a2a30df40a9b66cf..086a1f26587e1ac87831545f7527ca5e6e08b178 100644 Binary files a/.gradle/8.8/fileHashes/resourceHashesCache.bin and b/.gradle/8.8/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 05f878a40f5e8964385444c7be2a851d6e457c15..50ffa5dd9aa03e1dbc8db040e1da93a9dbe8d4a2 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 6ceb9706079342326a9b878fdb9917e41465a85d..62d54951cfd8ec74075938af7d7a210825601919 100644 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index aea4134f1fc0809934ccb6fcde7112db656aafc4..71a438e2fa179f36bce0c761b1eb59fb1f8ccff8 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..c995aa5cefc39b8d1744799a04f27ee68d687c6b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.debug.settings.onBuildFailureProceed": true +} \ No newline at end of file diff --git a/build/classes/java/main/model/CellularAutomatonSimulation.class b/build/classes/java/main/model/CellularAutomatonSimulation.class index 666eee34be1ba6a3882b4a01d6f8c4b665a305ca..f37672785de8861e705be427cbff26aa259a4423 100644 Binary files a/build/classes/java/main/model/CellularAutomatonSimulation.class and b/build/classes/java/main/model/CellularAutomatonSimulation.class differ diff --git a/build/classes/java/main/model/ConstantCellInitializer.class b/build/classes/java/main/model/ConstantCellInitializer.class index 603836f0726f5e36360c4e9845e56ce22da0e958..fbb1896f0b62ea6e83c8195ecd5ee66382b4d9b1 100644 Binary files a/build/classes/java/main/model/ConstantCellInitializer.class and b/build/classes/java/main/model/ConstantCellInitializer.class differ diff --git a/build/classes/java/main/model/NextGenerationInitializer.class b/build/classes/java/main/model/NextGenerationInitializer.class index 80c0fcd224a6291ccca3999b938dd923af0c1789..f691ed7e25d49609f91727c5f3b9eb1a5105b884 100644 Binary files a/build/classes/java/main/model/NextGenerationInitializer.class and b/build/classes/java/main/model/NextGenerationInitializer.class differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Cell.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Cell.class.uniqueId0 deleted file mode 100644 index ff54bf87cd3b03b63c7ea9b8a8248506a3c69a92..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Cell.class.uniqueId0 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId2 deleted file mode 100644 index 666eee34be1ba6a3882b4a01d6f8c4b665a305ca..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId2 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ConstantCellInitializer.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/ConstantCellInitializer.class.uniqueId4 deleted file mode 100644 index 603836f0726f5e36360c4e9845e56ce22da0e958..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ConstantCellInitializer.class.uniqueId4 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId1 deleted file mode 100644 index 80c0fcd224a6291ccca3999b938dd923af0c1789..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId1 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3 deleted file mode 100644 index d3e7e6501fdcde716363cd6017444d3fbf0f8365..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3 and /dev/null differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 35a39514d6fb286df34fb16f88c09c44f12e96f4..cd8eaee3c91978a7b3ca927d9701738bd6e4c633 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin index ab38118fbbff4ce536680120c3cc273e54593135..c179c808f0df12277b3052e7f7eecf48d1130fe4 100644 Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and b/build/tmp/compileTestJava/previous-compilation-data.bin differ diff --git a/src/main/java/model/CellularAutomatonSimulation.java b/src/main/java/model/CellularAutomatonSimulation.java index d08c7a4eb05750d514d2929720bba2c0beeeb694..fcfdfdc2dea8e6882d0a54560a0afcd9b0b5bdc8 100644 --- a/src/main/java/model/CellularAutomatonSimulation.java +++ b/src/main/java/model/CellularAutomatonSimulation.java @@ -42,14 +42,12 @@ public class CellularAutomatonSimulation<S extends State<S>> @Override public int numberOfColumns() { - //TODO: à compléter - return 0; + return this.automaton.numberOfColumns(); } @Override public int numberOfRows() { - //TODO: à compléter - return 0; + return this.automaton.numberOfRows(); } /** @@ -59,14 +57,19 @@ public class CellularAutomatonSimulation<S extends State<S>> * @return The cell at the specified coordinate. */ public Cell<S> at(Coordinate coordinate) { - //TODO: à compléter - return null; + return this.grid.get(coordinate); } @Override public void updateToNextGeneration() { - //TODO: à compléter, en utilisant nextGenerationMatrix() - } + ListMatrix<S> nextGeneration= nextGenerationMatrix(); + for(Coordinate coordinate: this.grid.coordinates()){ + S next= nextGeneration.get(coordinate); + Cell<S> cell = this.grid.get(coordinate); + cell.set(next); + } + this.generationNumber.set(this.generationNumber.get()+1); + } /** Computes the {@link ListMatrix} of states obtained after a single step of updates * of the simulation. @@ -74,23 +77,25 @@ public class CellularAutomatonSimulation<S extends State<S>> * @return the states of each cell after one generation */ private ListMatrix<S> nextGenerationMatrix() { - //TODO: à compléter - return null; + return new ListMatrix<>( + this.numberOfColumns(),this.numberOfRows(),new NextGenerationInitializer<>(this)); } @Override public void next(Coordinate coordinate) { - //TODO: à compléter + Cell <S> cell =this.at(coordinate); + S next = cell.get().next(); + cell.set(next); } @Override public void copy(Coordinate source, Coordinate destination) { - //TODO: à compléter + S value =this.at(source).get(); + this.at(destination).set(value); } @Override public Color getColor(Coordinate coordinate) { - //TODO: à compléter - return null; + return this.at(coordinate).get().getColor(); } @Override @@ -108,17 +113,31 @@ public class CellularAutomatonSimulation<S extends State<S>> @Override public void clear() { - //TODO: à compléter (penser à remettre le nombre de génération à 0) - } + for(Coordinate coordinate : this.grid.coordinates()){ + this.at(coordinate).set(this.automaton.defaultState()); + } + this.generationNumber.set(0); + } @Override public void reset() { - //TODO: à compléter (penser à remettre le nombre de génération à 0) - } + for(Coordinate coordinate:this.grid.coordinates()){ + this.at(coordinate).set(this.automaton.randomState(this.generator)); + } + this.generationNumber.set(0); + } @Override public Iterator<Coordinate> iterator() { return this.grid.coordinates().iterator(); } + + + + + + + + } diff --git a/src/main/java/model/ConstantCellInitializer.java b/src/main/java/model/ConstantCellInitializer.java index 39a5b7160e7cf25f8240daff179ae177fcd92407..7d12220563e40d4f5b48c101cf8b4dc068cd158f 100644 --- a/src/main/java/model/ConstantCellInitializer.java +++ b/src/main/java/model/ConstantCellInitializer.java @@ -11,20 +11,19 @@ import matrix.MatrixInitializer; * @param <T> the type of content of each cell */ public class ConstantCellInitializer<T> implements MatrixInitializer<Cell<T>> { - //TODO: ajouter la/les propriétes nécessaires - + private final T defaultValue; /** Make a new {@link MatrixInitializer} with cells containing a {@link Cell} with the same * value. * * @param defaultValue the value stored in each cell. */ public ConstantCellInitializer(T defaultValue) { - //TODO: à compléter - } + this.defaultValue=defaultValue; + } @Override public Cell<T> initialValueAt(Coordinate coordinate) { - //TODO: à compléter - return null; + //retourne la nouvelle cellule avec la valeur constante par def + return new Cell<>(defaultValue); } } diff --git a/src/main/java/model/NextGenerationInitializer.java b/src/main/java/model/NextGenerationInitializer.java index f9462bfbd6fe1b55ad7ee10ada452a78825b6a2e..a0536c1f24475686fd05ce1360f6c7e7fb15f148 100644 --- a/src/main/java/model/NextGenerationInitializer.java +++ b/src/main/java/model/NextGenerationInitializer.java @@ -1,9 +1,13 @@ package model; +import java.util.ArrayList; +import java.util.List; + +import controller.Simulation; import matrix.Coordinate; -import matrix.MatrixInitializer; import matrix.ListMatrix; -import controller.Simulation; +import matrix.MatrixInitializer; + /** * An initializer for a {@link ListMatrix} of states, where each state is computed based on the value @@ -13,7 +17,7 @@ import controller.Simulation; */ public class NextGenerationInitializer<S extends State<S>> implements MatrixInitializer<S> { - //TODO: ajouter les propriétés nécessaires + private final CellularAutomatonSimulation <S> simulation; /** Create a {@link MatrixInitializer} to compute the next generation in * a 2D cellular automaton. @@ -21,13 +25,18 @@ public class NextGenerationInitializer<S extends State<S>> implements MatrixInit * @param simulation the {@link Simulation} representing the cellular automaton. */ public NextGenerationInitializer(CellularAutomatonSimulation<S> simulation) { - //TODO: à compléter + this.simulation =simulation; + } @Override - public S initialValueAt(Coordinate coordinate) { - //TODO: à compléter - return null; + public S initialValueAt(Coordinate coordinate) { + List <Coordinate> neighbours=coordinate.orthodiagonalNeighbours(); + List<S> states =new ArrayList<>(); + for (Coordinate neighbour:neighbours){ + states.add(this.simulation.at(wrap(neighbour)).get()); + } + return this.simulation.at(coordinate).get().update(states); } /** Computes the grid {@link Coordinate} for an arbitrary {@link Coordinate}, even outside @@ -39,10 +48,10 @@ public class NextGenerationInitializer<S extends State<S>> implements MatrixInit * @return a corresponding {@link Coordinate}, that is inside the grid. */ Coordinate wrap(Coordinate coordinate) { - //TODO: à compléter //Il faut recalculer les coordonnées x et y modulo les dimensions de la grille. //Pour le modulo, utiliser la fonction ci-dessous, qui s'assure que le résultat est positif. - return null; + return new Coordinate(modulo(coordinate.x(), this.simulation.numberOfColumns()), + modulo(coordinate.y(), this.simulation.numberOfRows())); } /** The non-negative remainder of n divided by d.