From a6f75c507c6cbd6a73b8d56d143439988b37ceae Mon Sep 17 00:00:00 2001 From: laure Date: Thu, 30 May 2024 10:13:27 +0200 Subject: [PATCH 1/5] wolf clikCell --- src/backend/Agent.java | 2 +- src/backend/Simulator.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/backend/Agent.java b/src/backend/Agent.java index bc71b36..9a8cc1c 100644 --- a/src/backend/Agent.java +++ b/src/backend/Agent.java @@ -33,7 +33,7 @@ public abstract class Agent { // Does whatever the agent does during a step // then returns a boolean // if false, agent dies at end of turn - // see step function in Simulator + // see step function in Simulator public abstract boolean liveTurn(ArrayList neighbors, Simulator world); diff --git a/src/backend/Simulator.java b/src/backend/Simulator.java index 795a360..4e63b76 100644 --- a/src/backend/Simulator.java +++ b/src/backend/Simulator.java @@ -79,7 +79,6 @@ public class Simulator extends Thread { System.out.println("wrong file buddy, this one's empty"); }else if(surviveCells.length<=0) { System.out.println("wrong file buddy, this one's does not have survival rules, won't work"); - return; }else { for (int x = 0; x < birthCells.length; x++) { String elem = birthCells[x]; @@ -295,8 +294,8 @@ public class Simulator extends Thread { } else if (clickActionFlag==2) { // wolf ArrayList nearby=getNeighboringAnimals(x,y,1); if (nearby.isEmpty()) { - Sheep sheep = new Sheep(x,y); - agents.add(sheep); + Wolf wolf = new Wolf(x,y); + agents.add(wolf); }else { for (Agent animal:nearby) { agents.remove(animal); From 2005ffc98490d74451de613bc1429fae4e6b796b Mon Sep 17 00:00:00 2001 From: laure Date: Thu, 30 May 2024 11:11:45 +0200 Subject: [PATCH 2/5] idk --- src/backend/Simulator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/Simulator.java b/src/backend/Simulator.java index 4e63b76..14199f4 100644 --- a/src/backend/Simulator.java +++ b/src/backend/Simulator.java @@ -11,8 +11,8 @@ public class Simulator extends Thread { private MyInterface mjf; - private int COL_NUM = 100; - private int LINE_NUM = 100; + private int COL_NUM = 10; + private int LINE_NUM = 10; private final int LIFE_TYPE_NUM = 4; //Conway Radius : 1 private final int LIFE_AREA_RADIUS = 1; From 7a79420cd1a1d33cdb42f14d83f8a64e894da673 Mon Sep 17 00:00:00 2001 From: benoi Date: Thu, 30 May 2024 11:12:06 +0200 Subject: [PATCH 3/5] # WARNING: head commit changed in the meantime Merge branch 'master' of https://gitarero.ecam.fr/laure.bel/OOP_F3_Project.git --- src/backend/Simulator.java | 10 +++++++++- src/backend/Wolf.java | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/backend/Simulator.java b/src/backend/Simulator.java index 8cbb0b1..553ac57 100644 --- a/src/backend/Simulator.java +++ b/src/backend/Simulator.java @@ -327,7 +327,15 @@ public class Simulator extends Thread { } return inArea; } - + public String typeAnimals(int x , int y,ArrayList neighbor) { + //ArrayList neighbor =getNeighboringAnimals(x,y,1); + Agent agent = neighbor.get(0); + if (agent instanceof Wolf) { + return "Wolf"; + } else { + return "Sheep"; + } + } /** * set value of cell * @param x coord of cell diff --git a/src/backend/Wolf.java b/src/backend/Wolf.java index 584f4b0..189b1e7 100644 --- a/src/backend/Wolf.java +++ b/src/backend/Wolf.java @@ -26,7 +26,7 @@ public class Wolf extends Agent { * as you wish */ public boolean liveTurn(ArrayList neighbors, Simulator world) { - if(world.getCell(x, y)==1) { + if(world.getCell(x, y)== Sheep sheep) { world.setCell(x, y, 0); } else { hunger++; From 029166181c0af6bf4ff8efb6f851b12006e96a58 Mon Sep 17 00:00:00 2001 From: benoi Date: Thu, 30 May 2024 11:12:27 +0200 Subject: [PATCH 4/5] wolf eats what he must --- src/backend/Wolf.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/backend/Wolf.java b/src/backend/Wolf.java index 189b1e7..b8013fa 100644 --- a/src/backend/Wolf.java +++ b/src/backend/Wolf.java @@ -26,8 +26,13 @@ public class Wolf extends Agent { * as you wish */ public boolean liveTurn(ArrayList neighbors, Simulator world) { - if(world.getCell(x, y)== Sheep sheep) { - world.setCell(x, y, 0); + //ArrayList nearby=world.getNeighboringAnimals(x,y,1); //look if the cell has an agent + if (!neighbors.isEmpty()) { + if(world.typeAnimals(x,y, neighbors)== "Sheep") { + Sheep sheep = new Sheep(x,y) ; + world.getAnimals().remove(sheep); + } + } else { hunger++; } From fba8069874bbfad06dd20c045af3afaafce10c07 Mon Sep 17 00:00:00 2001 From: laure Date: Thu, 30 May 2024 11:50:56 +0200 Subject: [PATCH 5/5] startSimulation work for all size of world --- src/backend/Simulator.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/backend/Simulator.java b/src/backend/Simulator.java index 5659dd1..6944ba6 100644 --- a/src/backend/Simulator.java +++ b/src/backend/Simulator.java @@ -183,19 +183,25 @@ public class Simulator extends Thread { // to modify agent behavior, see liveTurn method // in agent classes - - ArrayList newAgents = new ArrayList<>(); + for (int i = agents.size() - 1; i >= 0; i--) { + Agent agent = agents.get(i); + ArrayList neighbors = this.getNeighboringAnimals(agent.getX(), agent.getY(), ANIMAL_AREA_RADIUS); + if (!agent.liveTurn(neighbors, this)) { + agents.remove(i); + } + } + /*ArrayList newAgents = new ArrayList<>(); for(Agent agent : agents) { ArrayList neighbors = this.getNeighboringAnimals( agent.getX(), agent.getY(), ANIMAL_AREA_RADIUS);} - /*if(!agent.liveTurn( + if(!agent.liveTurn( neighbors, this)) { agents.remove(agent); - {*/ + }*/ // Apply Game of Life rules @@ -570,8 +576,10 @@ public class Simulator extends Thread { public void startSimulation() { - if (isWorldEmpty()) { + if (isWorldEmpty() & getWidth()==100 & getHeight()==100) { mjf.clicLoadFileButtonCSV("World/baseworld.csv"); + }else { + mjf.generateRandomBoard(); }