|
|
|
@ -178,11 +178,11 @@ public class Simulator extends Thread {
|
|
|
|
agent.getX(),
|
|
|
|
agent.getX(),
|
|
|
|
agent.getY(),
|
|
|
|
agent.getY(),
|
|
|
|
ANIMAL_AREA_RADIUS);}
|
|
|
|
ANIMAL_AREA_RADIUS);}
|
|
|
|
//if(!agent.liveTurn(
|
|
|
|
/*if(!agent.liveTurn(
|
|
|
|
// neighbors,
|
|
|
|
neighbors,
|
|
|
|
//this)) {
|
|
|
|
this)) {
|
|
|
|
//agents.remove(agent);
|
|
|
|
agents.remove(agent);
|
|
|
|
//{
|
|
|
|
{*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Apply Game of Life rules
|
|
|
|
// Apply Game of Life rules
|
|
|
|
@ -267,7 +267,29 @@ public class Simulator extends Thread {
|
|
|
|
* method called when clicking on a cell in the interface
|
|
|
|
* method called when clicking on a cell in the interface
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void clickCell(int x, int y) {
|
|
|
|
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<Agent> 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<Agent> 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<String> getAgentsSave() {
|
|
|
|
public ArrayList<String> getAgentsSave() {
|
|
|
|
ArrayList<String> agentsSave = new ArrayList<>();
|
|
|
|
ArrayList<String> agentsList = new ArrayList<String>();
|
|
|
|
for (int j = 0; j < getHeight(); j++) {
|
|
|
|
String sheepLine = "1,";
|
|
|
|
StringBuilder lineState = new StringBuilder();
|
|
|
|
String wolfLine = "2,";
|
|
|
|
for (int i = 0 ; i < getWidth() ; i++) {
|
|
|
|
for (Agent agent : agents) {
|
|
|
|
lineState.append(getCell(i, j));
|
|
|
|
int x = agent.getX();
|
|
|
|
if (j < getHeight() -1) {
|
|
|
|
int y = agent.getY();
|
|
|
|
lineState.append(",");
|
|
|
|
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<String> stringArray) {
|
|
|
|
public void loadAgents(ArrayList<String> stringArray) {
|
|
|
|
//TODO : Same idea as other load methods, but for agent list
|
|
|
|
//TODO : Same idea as other load methods, but for agent list
|
|
|
|
|
|
|
|
for(int y =0; y<stringArray.size();y++) {
|
|
|
|
|
|
|
|
String line = stringArray.get(y);
|
|
|
|
|
|
|
|
String[] lineElements = line.split(",");
|
|
|
|
|
|
|
|
int agentType = Integer.parseInt(lineElements[0]);
|
|
|
|
|
|
|
|
for(int x=1; x<lineElements.length;x++) {
|
|
|
|
|
|
|
|
String[] coordinates = lineElements[x].split(";");
|
|
|
|
|
|
|
|
int i = Integer.parseInt(coordinates[0]);
|
|
|
|
|
|
|
|
int j = Integer.parseInt(coordinates[1]);
|
|
|
|
|
|
|
|
if (agentType == 1) {
|
|
|
|
|
|
|
|
Sheep newSheep = new Sheep(i, j);
|
|
|
|
|
|
|
|
agents.add(newSheep);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (agentType == 2) {
|
|
|
|
|
|
|
|
Wolf newWolf = new Wolf(i, j);
|
|
|
|
|
|
|
|
agents.add(newWolf);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
|