Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Using java create a simulation of bears and fish in a river, where the bears eat

ID: 3748869 • Letter: U

Question

Using java create a simulation of bears and fish in a river, where the bears eat the fish if possible. The simulation will run in a time steps. At each step, every animal will "decide" how to move using a (pseudo-) random number generator. Is a command line app • A one-dimensional river for the array; maximum of 50 cells; size input by user. • Random class to generate original bear and fish cells, which way the bear or fish tries to move, and which cell they move to on a collision • Bears and fish are numbered for easy validation. Structure • Classes: Driver, containing main; Animal; Bear; Fish. • Develop your own set of methods for each class; each should do one task. • Random class – see the text and the Java API. Use a seed if you want to run the exact same simulation again.

Explanation / Answer

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.lang.reflect.Constructor;

import java.lang.reflect.InvocationTargetException;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

public class River

{

public Animal[] river;

public int length;

public long seed;

private void helper(int l)

{

length = l;

river = new Animal[length];

for (int i = 0; i < length; i++)

{

int k = RandomSingleton.getInstance().nextInt(3);

if(k == 0)

{

river[i] = null;

}

else if(k == 1)

{

river[i] = new Bear();

}

else

{

river[i] = new Fish();

}

}

}

public River(String inputFileName) throws FileNotFoundException

{

try

{

File f = new File(inputFileName);

Scanner s1 = new Scanner(f);

ArrayList<String> x = new ArrayList<String>();

while(s1.hasNext())

{

if(s1.hasNext())

{

x.add(s1.next());

}

else

{

}

}

s1.close();

length = x.size();

river = new Animal[x.size()];

for(int i = 0; i < x.size(); i++)

{

if(x.get(i).equals("---"))

{

river[i] = null;

}

else if(x.get(i).charAt(0) == 'F')//fish

{

if(x.get(i).charAt(1) == 'F')//female

{

river[i] = new Fish((Integer.parseInt(""+x.get(i).charAt(2))), Gender.FEMALE);

}

else //male

{

river[i] = new Fish((Integer.parseInt(""+x.get(i).charAt(2))), Gender.MALE);

}

}

else //bear

{

if(x.get(i).charAt(1) == 'F')//female

{

river[i] = new Bear((Integer.parseInt(""+x.get(i).charAt(2))), Gender.FEMALE);

}

else //male

{

river[i] = new Bear((Integer.parseInt(""+x.get(i).charAt(2))), Gender.MALE);

}

}

}

}

catch(FileNotFoundException e)

{

System.out.println("File does not exist, Goodbye.");

System.exit(-1);

}

}

public River(int length)

{

this.length = length;

helper(this.length);

}

public River(int length, long seed)

{

this.seed = seed;

this.length = length;

helper(this.length);

}

public int getLength()

{

return length;

}

public void setSeed(long seed)

{

this.seed = seed;

}

public int numEmpty()

{

int count = 0;

for(int i = 0; i < river.length; i++)

{

if(river[i] == null)

{

count++;

}

}

return count;

}

public boolean addRandom(Animal animal)

{

animal.age = 0;

for(int i = 0; i < river.length; i++)

{

if(river[i] == null)

{

river[i] = animal;

return true;

}

else

{

}

}

return false;

}

public void updateCell(int i)

{

int k = RandomSingleton.getInstance().nextInt(3);

//if k = 0, don't move; if k = 1, move left; if k = 2, move right.

Animal temp = river[i];

river[i] = null; //sets original position to null

if(temp == null)

{

}

else if(k == 0) //don't move

{

river[i] = temp;

}

else if(temp.toString().charAt(0) == 'B') //Bear

{

if(k == 1) //move left

{

if(i-1 >= 0)//not at beginning of river

{

if(river[i-1] == null)//if empty, just go

{

river[i-1] = temp;

}

else if(river[i-1].toString().charAt(0) == 'F')//fish dies regardless

{

river[i-1] = temp;

}

else if(river[i-1].toString().charAt(0) == 'B') //if bear

{

if(river[i-1].gender == temp.gender)//same gender

{

if(((Bear)river[i-1]).getStrength() == ((Bear)temp).getStrength())//same gender and strength

{

river[i] = temp; //do nothing

}

else if(((Bear)river[i-1]).getStrength() >= ((Bear)temp).getStrength())//same gender and strength

{

//Bear dies because not as strong

}

else

{

river[i-1] = temp;

}

}

else

{

addRandom(new Bear());

river[i] = temp;

}

}

else

{

}

}

else

{

if(river[length - 1] == null)

{

river[length - 1] = temp;

}

else if(river[length - 1].toString().charAt(0) == 'F')

{

river[length - 1] = temp;

}

else if(river[length-1].toString().charAt(0) == 'B')

{

if(river[length-1].gender == temp.gender)

{

if(((Bear)river[length-1]).getStrength() == ((Bear)temp).getStrength())//same gender and strength

{

river[i] = temp;

}

else if(((Bear)river[length-1]).getStrength() >= ((Bear)temp).getStrength())

{

//Bear dies because not as strong

}

else

{

river[length-1] = temp;

}

}

else

{

addRandom(new Bear());

river[i] = temp;

}

}

else

{

}

}

}

else

{

if(i+1 <= length - 1)

{

if(river[i+1] == null)

{

river[i+1] = temp;

}

else if(river[i+1].toString().charAt(0) == 'F')

{

river[i+1] = temp;

}

else if(river[i+1].toString().charAt(0) == 'B')

{

if(river[i+1].gender == temp.gender)

{

if(((Bear)river[i+1]).getStrength() == ((Bear)temp).getStrength())

{

river[i] = temp;

}

else if(((Bear)river[i+1]).getStrength() >= ((Bear)temp).getStrength())

{

//Bear dies because not as strong

}

else

{

river[i+1] = temp;

}

}

else

{

addRandom(new Bear());

river[i] = temp;

}

}

else

{

}

}

else

{

if(river[0] == null)

{

river[0] = temp;

}

else if(river[0].toString().charAt(0) == 'F')

{

river[0] = temp;

}

else if(river[0].toString().charAt(0) == 'B')

{

if(river[0].gender == temp.gender)

{

if(((Bear)river[0]).getStrength() == ((Bear)temp).getStrength())

{

river[i] = temp;

}

else if(((Bear)river[0]).getStrength() >= ((Bear)temp).getStrength())

{

//Bear dies because n

}

else

{

river[0] = temp;

}

}

else

{

addRandom(new Bear());

river[i] = temp;

}

}

else

{

}

}

}

}

else

{

if(k == 1)

{

if(i-1 >= 0)

{

if(river[i-1] == null)

{

river[i-1] = temp;

}

else if(river[i-1].toString().charAt(0) == 'B')

{

}

else if(river[i-1].toString().charAt(0) == 'F')

{

if(river[i-1].gender == temp.gender)

{

river[i] = temp;

}

else

{

addRandom(new Fish());

river[i] = temp;

}

}

else

{

}

}

else

{

if(river[length - 1] == null)

{

river[length - 1] = temp;

}

else if(river[length - 1].toString().charAt(0) == 'B')

{

}

else if(river[length-1].toString().charAt(0) == 'F')

{

if(river[length-1].gender == temp.gender)

{

river[i] = temp;

}

else

{

addRandom(new Fish());

river[i] = temp;

}

}

else

{

}

}

}

else

{

if(i+1 <= length - 1)

{

if(river[i+1] == null)

{

river[i+1] = temp;

}

else if(river[i+1].toString().charAt(0) == 'B')

{

}

else if(river[i+1].toString().charAt(0) == 'F')

{

if(river[i+1].gender == temp.gender)

{

river[i] = temp;

}

else

{

addRandom(new Fish());

river[i] = temp;

}

}

else

{

}

}

else

{

if(river[0] == null)

{

river[0] = temp;

}

else if(river[0].toString().charAt(0) == 'B')

{

}

else if(river[0].toString().charAt(0) == 'F')

{

if(river[0].gender == temp.gender)

{

river[i] = temp;

}

else

{

addRandom(new Fish());

river[i] = temp;

}

}

else

{

}

}

}

}

}

public void updateRiver()

{

for(int i = 0; i < length; i++)

{

updateCell(i);

}

for(int j = 0; j < length; j++)

{

if(river[j] != null)

{

if(river[j].incrAge() == false)

{

river[j] = null;

}

else

{

}

}

else

{

}

}

}

public void write(String outputFileName) throws FileNotFoundException

{

try

{

BufferedWriter printer = new BufferedWriter(new FileWriter(outputFileName));

String a = "";

for(int i = 0; i < length; i++)

{

if(river[i] == null)

{

a += "---";

}

else

{

a += river[i].toString();

}

a += " ";

}

printer.write(a);

printer.newLine();

printer.close();

}

catch(IOException e)

{

System.out.println("Sorry, this file does not exist, please try again.");

}

}

public String toString()

{

String representation = "";

for(int i = 0; i < length; i++)

{

if(river[i] == null)

{

representation += "---";

}

else

{

representation += river[i].toString();

}

representation += " ";

}

return representation;

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote