petri_dish
diff bacteria.py @ 22:69a4724e7cac
added help and statistics
author | Yashina Ksenia <ksenia_yashina@kodomo.fbb.msu.ru> |
---|---|
date | Thu, 23 Dec 2010 16:58:48 +0300 |
parents | f55481ff4bb5 |
children |
line diff
1.1 --- a/bacteria.py Mon Dec 20 02:38:11 2010 +0300 1.2 +++ b/bacteria.py Thu Dec 23 16:58:48 2010 +0300 1.3 @@ -51,7 +51,7 @@ 1.4 1.5 def asexual(self, bacteria, delta_t, radius, delta, bact_r, full_lifetime): 1.6 if self.find_place_a(bacteria, delta, bact_r)\ 1.7 - and not(self.check_dish_wall(self.position,radius,delta,2*bact_r)): 1.8 + and not(self.check_dish_wall(self.position,radius,delta,3*bact_r)): 1.9 pos1=self.position + vector.Vector(-(bact_r + 0.75*delta),0) 1.10 vel1=vector.Vector(1,0).angleToCoord(self.velocity.angle()) 1.11 bacteria.append(Bacteria(pos1, self.rnd_velocity(pi), 1.12 @@ -60,35 +60,38 @@ 1.13 bacteria.append(Bacteria(pos2, self.rnd_velocity(0), 1.14 full_lifetime, self.if_mutated_a())) 1.15 bacteria.remove(self) 1.16 - return 1.17 - self.move(bacteria,delta_t,radius,delta,bact_r) 1.18 + return 1 1.19 + return 0 1.20 1.21 1.22 def sexual (self, other, bacteria, delta_t, radius, delta, bact_r, 1.23 full_lifetime): 1.24 + num_of_mut=1 1.25 center = (self.position+other.position)*0.5 1.26 if self.find_place_s(other, bacteria, delta, bact_r) and\ 1.27 - not(self.check_dish_wall(center,radius,delta,bact_r*(1+sqrt(2)))): 1.28 + not(self.check_dish_wall(center,radius,delta,bact_r*3)): 1.29 bacteria.append(Bacteria(center + 1.30 vector.Vector(-(bact_r*sqrt(2) + 0.75*delta),0), 1.31 self.rnd_velocity(pi), full_lifetime, 1.32 - self.if_mutated_s(other))) 1.33 + self.if_mutated_s(other,num_of_mut))) 1.34 bacteria.append(Bacteria(center + 1.35 vector.Vector((bact_r*sqrt(2) + 0.75*delta),0), 1.36 self.rnd_velocity(0), full_lifetime, 1.37 - self.if_mutated_s(other))) 1.38 + self.if_mutated_s(other,num_of_mut))) 1.39 bacteria.append(Bacteria(center + 1.40 vector.Vector(0, -(bact_r*sqrt(2) + 0.75*delta)), 1.41 self.rnd_velocity(3*pi/2), full_lifetime, 1.42 - self.if_mutated_s(other))) 1.43 + self.if_mutated_s(other,num_of_mut))) 1.44 bacteria.append(Bacteria(center + 1.45 vector.Vector(0, (bact_r*sqrt(2) + 0.75*delta)), 1.46 self.rnd_velocity(pi/2), full_lifetime, 1.47 - self.if_mutated_s(other))) 1.48 + self.if_mutated_s(other,num_of_mut))) 1.49 bacteria.remove(other) 1.50 bacteria.remove(self) 1.51 + return num_of_mut 1.52 else: 1.53 self.collision(other,bacteria,delta_t,radius,delta,bact_r) 1.54 + return 0 1.55 1.56 def find_place_a(self, bacteria, delta, bact_r): #searches for place for children 1.57 for bact in bacteria: 1.58 @@ -113,7 +116,10 @@ 1.59 def if_mutated_a(self): 1.60 return self.mutated 1.61 1.62 - def if_mutated_s(self,other): 1.63 - if self.mutated + other.mutated == 0: 1.64 - return False 1.65 - return random.randrange(0, 3 - (self.mutated+other.mutated)) == 0 1.66 + def if_mutated_s(self,other,n): 1.67 + if self.mutated==False and other.mutated == False: 1.68 + return False 1.69 + r = (random.randint(0, 3) == 0) 1.70 + if r: 1.71 + n+=1 1.72 + return r