Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.99 KB | None | 0 0
  1. import random
  2. import math
  3.  
  4. class Animal():
  5. def __init__(self, colour, age, gender):
  6. self.colour = colour
  7. self.age = age
  8. self.gender = gender
  9.  
  10. def get_colour(self):
  11. return self.colour
  12.  
  13. def get_age(self):
  14. return self.age
  15.  
  16. def get_gender(self):
  17. return self.gender
  18.  
  19. def set_colour(self, colour):
  20. self.colour = colour
  21.  
  22. def set_age(self, age):
  23. self.age = age
  24.  
  25. def advance_age(self):
  26. self.age += 1
  27.  
  28. def noise(self):
  29. print("Noise!")
  30.  
  31. class Rabbit(Animal):
  32. def __init__(self, colour, age, ear_type, gender):
  33. super().__init__(colour, age, gender) #calls super constructor or it will be overriden
  34. self.ear_type = ear_type # encapsulation, only public methods are accessed
  35.  
  36. def get_ear_type(self):
  37. return self.ear_type
  38.  
  39. def get_details(self): # example of polymorphism with fox's get_details, same name different code
  40. attributes = "Rabbit is a {} year old {} {} with {} ears!".format(self.age, self.colour, self.gender, self.ear_type)
  41. return attributes
  42.  
  43. def slaughter(self):
  44. self = None
  45.  
  46. def noise(self):
  47. print("Meow!")
  48.  
  49. class Fox(Animal): # inhertience
  50. def __init__(self, colour, age, hungriness, gender, size):
  51. super().__init__(colour, age, gender)
  52. self.hungriness = hungriness
  53. self.size = size
  54.  
  55. def get_hungriness(self):
  56. return self.hungriness
  57.  
  58. def get_size(self):
  59. return self.size
  60.  
  61. def set_hungriness(self, hungriness):
  62. self.hungriness = hungriness
  63.  
  64. def set_size(self, size):
  65. self.size = size
  66.  
  67. def eat(self, rabbits):
  68. if self.hungriness > 0:
  69. self.hungriness -= math.ceil(rabbits/self.size)
  70.  
  71. def advance_hungriness(self):
  72. self.hungriness += 1
  73.  
  74. def get_details(self):
  75. if self.hungriness == 0:
  76. hungriness = "full"
  77. elif self.hungriness == 1:
  78. hungriness = "peckish"
  79. elif self.hungriness == 2:
  80. hungriness = "hungry"
  81. elif self.hungriness == 3:
  82. hungriness = "very hungry"
  83. elif self.hungriness == 4:
  84. hungriness = "starving"
  85. attributes = "Fox is a {} year old {} {} and is {}!".format(self.age, self.size, self.colour, hungriness)
  86. return attributes
  87.  
  88. def noise(self):
  89. print("Oink!")
  90.  
  91. class AnimalGroup():
  92. def __init__(self):
  93. self.container = []
  94. self.capacity = 100
  95.  
  96. def add_animal(self, animal):
  97. if (self.is_full() == False):
  98. self.container.append(animal)
  99. return True
  100. else:
  101. return False
  102.  
  103. def get_fullness(self):
  104. return len(self.container)
  105.  
  106. def get_capacity(self):
  107. return self.capacity
  108.  
  109. def is_full(self):
  110. if len(self.container) >= self.capacity:
  111. return True
  112. else:
  113. return False
  114.  
  115. def exterminate(self):
  116. for i in self.container:
  117. i = None
  118. self.container = []
  119.  
  120. def kill(self, index):
  121. self.container.pop(index)
  122.  
  123. def display(self):
  124. if self.container != []:
  125. for i in self.container:
  126. print(i.get_details())
  127. else:
  128. print("It's empty!")
  129.  
  130. class Warren(AnimalGroup):
  131. def __init__(self):
  132. super().__init__()
  133.  
  134. class FoxGang(AnimalGroup):
  135. def __init__(self):
  136. super().__init__()
  137. self.capacity = 10
  138.  
  139. class Island():
  140. def __init__(self):
  141. self.warrens = []
  142. self.fox_gangs = []
  143.  
  144. def add_warren(self, warren):
  145. self.warrens.append(warren)
  146.  
  147. def get_warrens(self):
  148. return self.warrens
  149.  
  150. def add_fox_gang(self, gang):
  151. self.fox_gangs.append(gang)
  152.  
  153. def get_fox_gangs(self):
  154. return self.fox_gangs
  155.  
  156. def make_rabbits(num_rabbits, warren):
  157. rabbit_colours = ["red", "black", "pink", "blue", "orange", "rainbow", "white"]
  158. rabbit_ear_types = ["floppy", "straight", "no", "swirly"]
  159. rabbit_genders = ["male", "female", "cross fitting vaping 1976 apache attack helicopter"]
  160. for i in range(num_rabbits):
  161. age = random.randint(0,10)
  162. colour = rabbit_colours[random.randint(0,len(rabbit_colours)-1)]
  163. ear_type = rabbit_ear_types[random.randint(0,len(rabbit_ear_types)-1)]
  164. gend_rand = random.randint(0,1000)
  165. if gend_rand >= 0 and gend_rand <= 49:
  166. gend_rand = 0
  167. elif gend_rand >= 500 and gend_rand <= 999:
  168. gend_rand = 1
  169. else:
  170. gend_rand = 2
  171. gender = rabbit_genders[gend_rand]
  172. not_full = warren.add_animal(Rabbit(colour, age, ear_type, gender))
  173. if not_full == False:
  174. print("\nError - Warren is full, no more rabbits can be added to it!!!\n")
  175. break
  176. return warren
  177.  
  178. def make_foxes(num_foxes, fox_gang):
  179. fox_colour = ["black", "orange", "ginger", "green"]
  180. fox_gender = ["male", "female"]
  181. fox_size = ["tiny", "small", "medium", "large", "hugh mungus"]
  182. for i in range(num_foxes):
  183. age = random.randint(0, 15)
  184. colour = fox_colour[random.randint(0,len(fox_colour)-1)]
  185. gender = fox_gender[random.randint(0,len(fox_gender)-1)]
  186. size = fox_size[random.randint(0,len(fox_size)-1)]
  187. hungriness = 0
  188. not_full = fox_gang.add_animal(Fox(colour, age, hungriness, gender, size))
  189. if not_full == False:
  190. print("\nError - Fox gang is full, no more foxes can be added to it!!!\n")
  191. break
  192. return fox_gang
  193.  
  194. def simulation():
  195. island = Island()
  196.  
  197. island.add_warren(Warren())
  198. island.add_fox_gang(FoxGang())
  199.  
  200. make_rabbits(100, island.warrens[0])
  201. make_foxes(10, island.fox_gangs[0])
  202. island.warrens[0].display()
  203. print("")
  204. island.fox_gangs[0].display()
  205. print("")
  206. while True: #run simulation
  207.  
  208. # for i in range(len(island.fox_gangs)):
  209. # for j in range(island.warrens[i].get_capacity()):
  210. # if random.randint(0,12) > 5:
  211. # rabbits_eaten = random.randint(0,10)
  212. # island.fox_gangs[i].container[j].eat(rabbits_eaten)
  213. #for k in range(island.warrens[i].get_capacity()): # deletes rabits that no longer exist due to pop
  214. # island.warrens[i].kill(k)
  215.  
  216.  
  217.  
  218. for i in range(len(island.warrens)):
  219. for j in range(island.warrens[i].get_capacity()):
  220. island.warrens[i].container[j].advance_age()
  221. for i in range(len(island.fox_gangs)):
  222. for j in range(island.fox_gangs[i].get_capacity()):
  223. island.fox_gangs[i].container[j].advance_age()
  224.  
  225. for i in range(len(island.warrens)):
  226. for j in range(island.warrens[i].get_capacity()):
  227. if random.randint(1,500) <= 1:
  228. island.warrens[i].container[j].noise()
  229. for i in range(len(island.fox_gangs)):
  230. for j in range(island.fox_gangs[i].get_capacity()):
  231. if random.randint(1,500) <= 1:
  232. island.fox_gangs[i].container[j].noise()
  233.  
  234.  
  235. for i in range(len(island.warrens)): # old age killer
  236. for j in range(island.warrens[i].get_fullness()): #problem deletes rabbit from list then tries to do stuff to a rabbit that don't exist no more
  237. if island.warrens[i].container[j].get_age() >= 5:
  238. if island.warrens[i].container[j].get_age()/random.randint(1,3) > 5:
  239. island.warrens[i].kill(j)
  240. #print("Dead")
  241.  
  242. for i in range(len(island.fox_gangs)):
  243.  
  244. for j in range(island.fox_gangs[i].get_fullness()): #problem same as above
  245. if island.fox_gangs[i].container[j].get_age() >= 5:
  246. if island.fox_gangs[i].container[j].get_age()/random.randint(1,3) > 6:
  247. island.fox_gangs[i].kill(j)
  248. j -= 1
  249. #print("Dead")
  250. if island.fox_gangs[i].container[j].get_hungriness() == 5:
  251. island.fox_gangs[i].kill(j)
  252.  
  253.  
  254. #island.warrens[0].display()
  255. #print("")
  256. #island.fox_gangs[0].display()
  257.  
  258. def main():
  259. #dave1 = Rabbit("red", 1, "floppy", "male")
  260. #dave2 = Rabbit("blue", 2, "straight", "cross fitting vaping 1976 apache attack helicopter")
  261. #dave3 = Rabbit("pink", 45, "no", "female")
  262. #print(dave1)
  263. #print(dave1.colour) #VERY BAD DON'T DO IT, UNDERSCORES STOP US DOING IT
  264. #print(dave2.get_colour()) #VERY PROFFESINOAL DO IT ALL THE TIME
  265. #warren1.add_bunny(dave1)
  266. #warren1.add_bunny(dave2)
  267. #warren1.add_bunny(dave3)
  268. #warren1.display()
  269. #warren1.exterminate()
  270. #warren1.display()
  271. simulation()
  272.  
  273. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement