From ed239ade7e5e686e077d852b809e3a2f4f1ecf1a Mon Sep 17 00:00:00 2001 From: Paul Mathy Date: Fri, 31 May 2024 21:10:09 +0200 Subject: [PATCH] Project_V1 --- OOP_D8_Project/.classpath | 2 +- OOP_D8_Project/.project | 2 +- OOP_D8_Project/src/Main.java | 13 +- OOP_D8_Project/src/backend/Simulator.java | 125 +++++++++++++----- .../src/windowInterface/MyInterface.java | 1 + 5 files changed, 109 insertions(+), 34 deletions(-) diff --git a/OOP_D8_Project/.classpath b/OOP_D8_Project/.classpath index 2197894..ac9ce57 100644 --- a/OOP_D8_Project/.classpath +++ b/OOP_D8_Project/.classpath @@ -1,6 +1,6 @@ - + diff --git a/OOP_D8_Project/.project b/OOP_D8_Project/.project index 9f1da76..a0b1b1a 100644 --- a/OOP_D8_Project/.project +++ b/OOP_D8_Project/.project @@ -1,6 +1,6 @@ - OOP_D8_Project + OOP diff --git a/OOP_D8_Project/src/Main.java b/OOP_D8_Project/src/Main.java index 46ac7f7..251f46f 100644 --- a/OOP_D8_Project/src/Main.java +++ b/OOP_D8_Project/src/Main.java @@ -1,3 +1,14 @@ +/* +public class Main { + + public static void main(String[] args) { + // TODO Auto-generated method stub + System.out.println("toto"); + } + +}*/ + + import windowInterface.MyInterface; @@ -9,4 +20,4 @@ public class Main { mjf.setVisible(true); } -} +} \ No newline at end of file diff --git a/OOP_D8_Project/src/backend/Simulator.java b/OOP_D8_Project/src/backend/Simulator.java index 33e5f1a..436d951 100644 --- a/OOP_D8_Project/src/backend/Simulator.java +++ b/OOP_D8_Project/src/backend/Simulator.java @@ -7,8 +7,9 @@ public class Simulator extends Thread { private MyInterface mjf; - private final int COL_NUM = 10; - private final int LINE_NUM = 10; + //Size of the grid + private final int COL_NUM = 100; + private final int LINE_NUM = 100; private final int LIFE_TYPE_NUM = 4; private final int LIFE_AREA_RADIUS = 1; private final int ANIMAL_AREA_RADIUS = 2; @@ -29,6 +30,9 @@ public class Simulator extends Thread { private int height; private Gride gride; + //Step put here to be reset when generate new field + private int stepCount=0; + public Simulator(MyInterface mjfParam) { mjf = mjfParam; stopFlag=false; @@ -37,19 +41,20 @@ public class Simulator extends Thread { clickActionFlag=false; agents = new ArrayList(); - fieldBirthValues = new ArrayList(); + fieldSurviveValues = new ArrayList(); - + fieldBirthValues = new ArrayList(); this.width=COL_NUM; this.height=LINE_NUM; gride = new Gride(height, width, this); + // Conway rules use at initialization stage + this.fieldSurviveValues.add(2); + this.fieldSurviveValues.add(3); + this.fieldBirthValues.add(3); - for(int i =0; i<9; i++) { - fieldSurviveValues.add(i); - } } @@ -62,7 +67,7 @@ public class Simulator extends Thread { } public void run() { - int stepCount=0; + //int stepCount=0; System.out.println("Step Count: "+ stepCount); while(!stopFlag) { stepCount++; @@ -84,23 +89,23 @@ public class Simulator extends Thread { } - public void makeStep() { - for(Agent agent : agents) { - ArrayList neighbors = - this.getNeighboringAnimals( - agent.getX(), - agent.getY(), - ANIMAL_AREA_RADIUS); - if(!agent.liveTurn( - neighbors, - this)) { - agents.remove(agent); - } + public void makeStep() { + for(Agent agent : agents) { + ArrayList neighbors = + this.getNeighboringAnimals( + agent.getX(), + agent.getY(), + ANIMAL_AREA_RADIUS); + if(!agent.liveTurn( + neighbors, + this)) { + agents.remove(agent); } - this.applyStep(); - - } + this.applyStep(); + + + } public void stopSimu() { stopFlag=true; @@ -122,6 +127,7 @@ public class Simulator extends Thread { } this.setCell(x, y, newCellValue); } else { + //Apply sheep /agent here return; } } @@ -151,11 +157,21 @@ public class Simulator extends Thread { public void countAround(int x, int y) { this.gride.countAround(x, y); - System.out.println("countAround"); } public ArrayList getSaveState() { - return null; + ArrayList strArrayList = new ArrayList<>(); + String[] strArrayLine = new String[this.width]; + //Store the state of the GRID + for(int x=0 ;x lines) { @@ -180,6 +196,9 @@ public class Simulator extends Thread { public void generateRandom(float chanceOfLife) { this.gride.setRandom(chanceOfLife); + //Reset the steps + stepCount = 0; + this.mjf.update(stepCount); } public boolean isLoopingBorder() { @@ -198,8 +217,29 @@ public class Simulator extends Thread { clickActionFlag = !clickActionFlag; } - public ArrayList getRule() { - return null; + public ArrayList getRule() { + + ArrayList strArrayList = new ArrayList<>(); + + String[] strArrayLine = new String[this.fieldSurviveValues.size()]; + + //Add survive values + for(int x=0; x lines) { @@ -210,17 +250,26 @@ public class Simulator extends Thread { String surviveLine = lines.get(0); String birthLine = lines.get(1); + String[] surviveElements = surviveLine.split(";"); + + //Load the values to survive for(int x=0; x getAgentsSave() { //TODO : Same idea as the other save method, but for agents + //Marche pas car pas d'agent :-( + System.out.println("AGENTS " + agents); + for( Agent agent : agents ){ + System.out.println( agent.getX() + "," + agent.getY()); + } + return null; } @@ -270,7 +327,13 @@ public class Simulator extends Thread { public String clickActionName() { // TODO : initially return "sheep" or "cell" // depending on clickActionFlag - return ""; + + if (clickActionFlag) { + return "cell"; + } else { + return "sheep"; + } + } } diff --git a/OOP_D8_Project/src/windowInterface/MyInterface.java b/OOP_D8_Project/src/windowInterface/MyInterface.java index cf2b1ef..f6b54b8 100644 --- a/OOP_D8_Project/src/windowInterface/MyInterface.java +++ b/OOP_D8_Project/src/windowInterface/MyInterface.java @@ -218,6 +218,7 @@ public class MyInterface extends JFrame { public void clicButtonGo() { this.instantiateSimu(); if(!mySimu.isAlive()) { + mySimu.start(); } else { mySimu.togglePause();