Advertisement
Guest User

Untitled

a guest
Feb 28th, 2015
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.75 KB | None | 0 0
  1. import java.util.*;
  2. import java.io.*;
  3.  
  4. public class Simulation
  5. {
  6.  
  7. static int years;
  8. static double killratio;
  9. static int numwolves;
  10. static int initialwage;
  11. static int numrabbits;
  12. static int initialrage;
  13. static ArrayList<Wolf> wolfarray;
  14. static ArrayList<Rabbit> rabbitarray;
  15. static int wolvesborn=0;
  16. static int rabbitsborn=0;
  17. static int killedrabbits=0;
  18. static int deadrabbitsage=0;
  19. static int deadwolvesage=0;
  20. static int deadwolveshunger=0;
  21.  
  22.  
  23. public static void main(String[] args) throws Exception
  24. {
  25. Random generator=new Random(100);
  26. Scanner scan=new Scanner(new FileInputStream(args[0]));
  27. years=scan.nextInt();
  28. killratio=scan.nextDouble();
  29. numwolves=scan.nextInt();
  30. initialwage=scan.nextInt();
  31. numrabbits=scan.nextInt();
  32. initialrage=scan.nextInt();
  33. wolfarray=new ArrayList<Wolf>();
  34. rabbitarray=new ArrayList<Rabbit>();
  35.  
  36.  
  37. for(int i=0;i<numwolves;i++)
  38. {
  39. wolfarray.add(new Wolf(initialwage));
  40. }
  41. for(int i=0;i<numrabbits;i++)
  42. {
  43. rabbitarray.add(new Rabbit(initialrage));
  44. }
  45.  
  46. double averagew= Wolf.avgage(wolfarray);
  47. double averager= Rabbit.avgager(rabbitarray);
  48.  
  49. System.out.println("Welcome to SimWorld");
  50. System.out.println();
  51. System.out.println("At the start of the simulation:");
  52. System.out.println("There are " +numwolves+ " wolves with average age of " +averagew);
  53. System.out.println("There are " +numrabbits+ " rabbits with the average age of " +averager);
  54. System.out.println();
  55.  
  56.  
  57. for(int i=1;i<years+1;i++)
  58. {
  59. System.out.println("At the end of year " +i);
  60.  
  61. spring();
  62. summer(generator);
  63. fall();
  64. winter();
  65. System.out.println("There are " +wolfarray.size()+ " wolves, and their average age is " +Wolf.avgage(wolfarray));
  66. System.out.println("There are " +Rabbit.numRabbits(rabbitarray)+ " rabbits, and their average age is " +Rabbit.avgager(rabbitarray));
  67. System.out.println("There were " +wolvesborn+ " wolves born, " +deadwolvesage+ " wolves died of old age, and " +deadwolveshunger+ "wolves died $
  68. System.out.println("There were "+rabbitsborn+ " rabbits born, " +deadrabbitsage+ " rabbits died of old age, and " +killedrabbits+ "rabbits kill$
  69. wolvesborn=0;
  70. rabbitsborn=0;
  71. killedrabbits=0;
  72. deadrabbitsage=0;
  73. deadwolvesage=0;
  74. deadwolveshunger=0;
  75.  
  76. }
  77.  
  78. }
  79.  
  80. public static void spring()
  81. {
  82. for(int j=0;j<wolfarray.size();j++)
  83. {
  84. if(wolfarray.get(j).wolfage()>=3)
  85. {
  86. wolfarray.add(new Wolf(0));
  87. wolvesborn=wolvesborn+1;
  88. }
  89.  
  90.  
  91. }
  92.  
  93. for(int k=0;k<rabbitarray.size();k++)
  94. {
  95. if(rabbitarray.get(k).rabbitage()>=1)
  96. {
  97. rabbitarray.add(new Rabbit(0));
  98. rabbitarray.add(new Rabbit(0));
  99. rabbitsborn=rabbitsborn+2;
  100. }
  101. }
  102. }
  103. public static void summer(Random number)
  104. {
  105. int dead=0;
  106. for(int m=0;m<wolfarray.size();m++)
  107. {
  108. double chance=number.nextFloat();
  109. double wolfsize=wolfarray.size();
  110. double rabbitsize=rabbitarray.size();
  111.  
  112.  
  113. if(chance<((double)(rabbitsize)/(rabbitsize+wolfsize)))
  114. {
  115. dead=(int)(killratio*rabbitarray.size());
  116. for(int j=0;j<dead;j++)
  117. {
  118. rabbitarray.remove(0);
  119. wolfarray.get(m).hungerwolf(true);
  120. killedrabbits++;
  121. }
  122.  
  123. if(dead<1)
  124. {
  125. rabbitarray.remove(0);
  126. wolfarray.get(m).hungerwolf(true);
  127. killedrabbits++;
  128. }
  129. }
  130. else
  131. {
  132. wolfarray.get(m).hungerwolf(false);
  133. }
  134. }
  135.  
  136. }
  137. public static void fall()
  138. {
  139. int rabbitsize=rabbitarray.size();
  140. int wolfsize=wolfarray.size();
  141. for(int m=0;m<rabbitsize;m++)
  142. {
  143. if(rabbitarray.get(m).rabbitage()>=5)
  144. {
  145. rabbitarray.remove(m);
  146. deadrabbitsage=deadrabbitsage+1;
  147. m--;
  148. rabbitsize--;
  149. }
  150. }
  151. for(int m=0;m<wolfsize;m++)
  152. {
  153. if(wolfarray.get(m).wolfage()>=5)
  154. {
  155. wolfarray.remove(m);
  156. deadwolvesage=deadwolvesage+1;
  157. }
  158. else if(wolfarray.get(m).wolfhunger()>=3)
  159. {
  160. wolfarray.remove(m);
  161. m--;
  162. deadwolveshunger=deadwolveshunger+1;
  163. }
  164. wolfsize--;
  165. }
  166. }
  167. public static void winter()
  168. {
  169. if(wolfarray.size()>0)
  170. {
  171. for(int m=0;m<wolfarray.size();m++)
  172. {
  173. wolfarray.get(m).agewolf();
  174. }
  175. }
  176. else
  177. {
  178. System.out.println("No more wolves");
  179. System.exit(0);
  180. }
  181. if(rabbitarray.size()>0)
  182. {
  183. for(int m=0;m<rabbitarray.size();m++)
  184. {
  185. rabbitarray.get(m).agerabbit();
  186. }
  187. }
  188. else
  189. {
  190. System.out.println("No more rabbits");
  191. System.exit(0);
  192. }
  193. }
  194. }
  195.  
  196. class Wolf
  197. {
  198. public static int age;
  199. public static int hunger=0;
  200.  
  201. public Wolf(int newage)
  202. {
  203. age=newage;
  204. }
  205. public Wolf()
  206. {
  207. age=0;
  208. }
  209. public static int wolfage()
  210. {
  211. return age;
  212. }
  213. public static int wolfhunger()
  214. {
  215. return hunger;
  216. }
  217. public static void agewolf()
  218. {
  219. age=age+1;
  220. }
  221. public static void hungerwolf(boolean kill)
  222. {
  223. if(kill==true)
  224. {
  225. hunger=0;
  226. }
  227. else
  228. {
  229. hunger=hunger+1;
  230. }
  231. }
  232. public static int numWolves(ArrayList<Wolf> wolfage)
  233. {
  234. int total=wolfage.size();
  235. return total;
  236. }
  237. public static double avgage(ArrayList<Wolf> wolfage)
  238. {
  239. int total=0;
  240. for(int i=0; i<wolfage.size(); i++)
  241. {
  242. total=wolfage.get(i).wolfage()+total;
  243. }
  244. double totalage= (double) total;
  245. double average= totalage/wolfage.size();
  246. return average;
  247. }
  248. }
  249.  
  250. class Rabbit
  251. {
  252. public static int age;
  253. public Rabbit(int newage)
  254. {
  255. age=newage;
  256. }
  257. public static int rabbitage()
  258. {
  259. return age;
  260. }
  261. public static void agerabbit()
  262. {
  263. age=age+1;
  264. }
  265. public static int numRabbits(ArrayList<Rabbit> rabbitage)
  266. {
  267. int total=rabbitage.size();
  268. return total;
  269. }
  270. public static double avgager(ArrayList<Rabbit> rabbitage)
  271. {
  272. int total=0;
  273. for(int i=0; i<rabbitage.size(); i++)
  274. {
  275. total=rabbitage.get(i).rabbitage()+total;
  276. }
  277. double totalage= (double) total;
  278. return totalage/rabbitage.size();
  279. }
  280. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement