Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.io.*;
- public class Simulation
- {
- static int years;
- static double killratio;
- static int numwolves;
- static int initialwage;
- static int numrabbits;
- static int initialrage;
- static ArrayList<Wolf> wolfarray;
- static ArrayList<Rabbit> rabbitarray;
- static int wolvesborn=0;
- static int rabbitsborn=0;
- static int killedrabbits=0;
- static int deadrabbitsage=0;
- static int deadwolvesage=0;
- static int deadwolveshunger=0;
- public static void main(String[] args) throws Exception
- {
- Random generator=new Random(100);
- Scanner scan=new Scanner(new FileInputStream(args[0]));
- years=scan.nextInt();
- killratio=scan.nextDouble();
- numwolves=scan.nextInt();
- initialwage=scan.nextInt();
- numrabbits=scan.nextInt();
- initialrage=scan.nextInt();
- wolfarray=new ArrayList<Wolf>();
- rabbitarray=new ArrayList<Rabbit>();
- for(int i=0;i<numwolves;i++)
- {
- wolfarray.add(new Wolf(initialwage));
- }
- for(int i=0;i<numrabbits;i++)
- {
- rabbitarray.add(new Rabbit(initialrage));
- }
- double averagew= Wolf.avgage(wolfarray);
- double averager= Rabbit.avgager(rabbitarray);
- System.out.println("Welcome to SimWorld");
- System.out.println();
- System.out.println("At the start of the simulation:");
- System.out.println("There are " +numwolves+ " wolves with average age of " +averagew);
- System.out.println("There are " +numrabbits+ " rabbits with the average age of " +averager);
- System.out.println();
- for(int i=1;i<years+1;i++)
- {
- System.out.println("At the end of year " +i);
- spring();
- summer(generator);
- fall();
- winter();
- System.out.println("There are " +wolfarray.size()+ " wolves, and their average age is " +Wolf.avgage(wolfarray));
- System.out.println("There are " +Rabbit.numRabbits(rabbitarray)+ " rabbits, and their average age is " +Rabbit.avgager(rabbitarray));
- System.out.println("There were " +wolvesborn+ " wolves born, " +deadwolvesage+ " wolves died of old age, and " +deadwolveshunger+ "wolves died $
- System.out.println("There were "+rabbitsborn+ " rabbits born, " +deadrabbitsage+ " rabbits died of old age, and " +killedrabbits+ "rabbits kill$
- wolvesborn=0;
- rabbitsborn=0;
- killedrabbits=0;
- deadrabbitsage=0;
- deadwolvesage=0;
- deadwolveshunger=0;
- }
- }
- public static void spring()
- {
- for(int j=0;j<wolfarray.size();j++)
- {
- if(wolfarray.get(j).wolfage()>=3)
- {
- wolfarray.add(new Wolf(0));
- wolvesborn=wolvesborn+1;
- }
- }
- for(int k=0;k<rabbitarray.size();k++)
- {
- if(rabbitarray.get(k).rabbitage()>=1)
- {
- rabbitarray.add(new Rabbit(0));
- rabbitarray.add(new Rabbit(0));
- rabbitsborn=rabbitsborn+2;
- }
- }
- }
- public static void summer(Random number)
- {
- int dead=0;
- for(int m=0;m<wolfarray.size();m++)
- {
- double chance=number.nextFloat();
- double wolfsize=wolfarray.size();
- double rabbitsize=rabbitarray.size();
- if(chance<((double)(rabbitsize)/(rabbitsize+wolfsize)))
- {
- dead=(int)(killratio*rabbitarray.size());
- for(int j=0;j<dead;j++)
- {
- rabbitarray.remove(0);
- wolfarray.get(m).hungerwolf(true);
- killedrabbits++;
- }
- if(dead<1)
- {
- rabbitarray.remove(0);
- wolfarray.get(m).hungerwolf(true);
- killedrabbits++;
- }
- }
- else
- {
- wolfarray.get(m).hungerwolf(false);
- }
- }
- }
- public static void fall()
- {
- int rabbitsize=rabbitarray.size();
- int wolfsize=wolfarray.size();
- for(int m=0;m<rabbitsize;m++)
- {
- if(rabbitarray.get(m).rabbitage()>=5)
- {
- rabbitarray.remove(m);
- deadrabbitsage=deadrabbitsage+1;
- m--;
- rabbitsize--;
- }
- }
- for(int m=0;m<wolfsize;m++)
- {
- if(wolfarray.get(m).wolfage()>=5)
- {
- wolfarray.remove(m);
- deadwolvesage=deadwolvesage+1;
- }
- else if(wolfarray.get(m).wolfhunger()>=3)
- {
- wolfarray.remove(m);
- m--;
- deadwolveshunger=deadwolveshunger+1;
- }
- wolfsize--;
- }
- }
- public static void winter()
- {
- if(wolfarray.size()>0)
- {
- for(int m=0;m<wolfarray.size();m++)
- {
- wolfarray.get(m).agewolf();
- }
- }
- else
- {
- System.out.println("No more wolves");
- System.exit(0);
- }
- if(rabbitarray.size()>0)
- {
- for(int m=0;m<rabbitarray.size();m++)
- {
- rabbitarray.get(m).agerabbit();
- }
- }
- else
- {
- System.out.println("No more rabbits");
- System.exit(0);
- }
- }
- }
- class Wolf
- {
- public static int age;
- public static int hunger=0;
- public Wolf(int newage)
- {
- age=newage;
- }
- public Wolf()
- {
- age=0;
- }
- public static int wolfage()
- {
- return age;
- }
- public static int wolfhunger()
- {
- return hunger;
- }
- public static void agewolf()
- {
- age=age+1;
- }
- public static void hungerwolf(boolean kill)
- {
- if(kill==true)
- {
- hunger=0;
- }
- else
- {
- hunger=hunger+1;
- }
- }
- public static int numWolves(ArrayList<Wolf> wolfage)
- {
- int total=wolfage.size();
- return total;
- }
- public static double avgage(ArrayList<Wolf> wolfage)
- {
- int total=0;
- for(int i=0; i<wolfage.size(); i++)
- {
- total=wolfage.get(i).wolfage()+total;
- }
- double totalage= (double) total;
- double average= totalage/wolfage.size();
- return average;
- }
- }
- class Rabbit
- {
- public static int age;
- public Rabbit(int newage)
- {
- age=newage;
- }
- public static int rabbitage()
- {
- return age;
- }
- public static void agerabbit()
- {
- age=age+1;
- }
- public static int numRabbits(ArrayList<Rabbit> rabbitage)
- {
- int total=rabbitage.size();
- return total;
- }
- public static double avgager(ArrayList<Rabbit> rabbitage)
- {
- int total=0;
- for(int i=0; i<rabbitage.size(); i++)
- {
- total=rabbitage.get(i).rabbitage()+total;
- }
- double totalage= (double) total;
- return totalage/rabbitage.size();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement