diff --git a/Agents/test1 b/Agents/test1 new file mode 100644 index 0000000..9519474 --- /dev/null +++ b/Agents/test1 @@ -0,0 +1,2 @@ +1,46;17,61;17,57;33, +2, diff --git a/Rule/BlobRule.csv b/Rule/BlobRule.csv index 10f61a6..922060c 100644 --- a/Rule/BlobRule.csv +++ b/Rule/BlobRule.csv @@ -1,2 +1,2 @@ 1;3;5;8 -3;5;7; +3;5;7 diff --git a/src/backend/Simulator.java b/src/backend/Simulator.java index 5659dc6..8cbb0b1 100644 --- a/src/backend/Simulator.java +++ b/src/backend/Simulator.java @@ -178,11 +178,11 @@ public class Simulator extends Thread { agent.getX(), agent.getY(), ANIMAL_AREA_RADIUS);} - //if(!agent.liveTurn( - // neighbors, - //this)) { - //agents.remove(agent); - //{ + /*if(!agent.liveTurn( + neighbors, + this)) { + agents.remove(agent); + {*/ // Apply Game of Life rules @@ -267,7 +267,29 @@ public class Simulator extends Thread { * method called when clicking on a cell in the interface */ public void clickCell(int x, int y) { - setCell(x, y, getCell(x, y) == 1 ? 0 : 1); + if (clickActionFlag==0) { // cell + setCell(x, y, getCell(x, y) == 1 ? 0 : 1); + } else if (clickActionFlag==1) { // sheep + ArrayList nearby=getNeighboringAnimals(x,y,1); //look if the cell has an agent + if (nearby.isEmpty()) { + Sheep sheep = new Sheep(x,y); + agents.add(sheep); + }else { + for (Agent animal:nearby) { + agents.remove(animal); + } + } + } else if (clickActionFlag==2) { // wolf + ArrayList nearby=getNeighboringAnimals(x,y,1); + if (nearby.isEmpty()) { + Sheep sheep = new Sheep(x,y); + agents.add(sheep); + }else { + for (Agent animal:nearby) { + agents.remove(animal); + } + } + } } @@ -443,23 +465,46 @@ public class Simulator extends Thread { public ArrayList getAgentsSave() { - ArrayList agentsSave = new ArrayList<>(); - for (int j = 0; j < getHeight(); j++) { - StringBuilder lineState = new StringBuilder(); - for (int i = 0 ; i < getWidth() ; i++) { - lineState.append(getCell(i, j)); - if (j < getHeight() -1) { - lineState.append(","); - } + ArrayList agentsList = new ArrayList(); + String sheepLine = "1,"; + String wolfLine = "2,"; + for (Agent agent : agents) { + int x = agent.getX(); + int y = agent.getY(); + if (agent instanceof Sheep) + { + sheepLine = sheepLine + x + ";" + y + ","; + } + else if (agent instanceof Wolf) + { + wolfLine = wolfLine + x + ";" + y + ","; } - agentsSave.add(lineState.toString()); } - return agentsSave; + agentsList.add(sheepLine); + agentsList.add(wolfLine); + return agentsList; } public void loadAgents(ArrayList stringArray) { //TODO : Same idea as other load methods, but for agent list - + for(int y =0; y