petri_dish
changeset 15:5cc5069458a9
Bacteria.py module 0.3
author | Smirnova Victoria |
---|---|
date | Wed, 15 Dec 2010 03:04:54 +0300 |
parents | 4163852eb85b |
children | eec3dd65336c |
files | Bacteria.py |
diffstat | 1 files changed, 41 insertions(+), 12 deletions(-) [+] |
line diff
1.1 --- a/Bacteria.py Tue Dec 07 22:06:14 2010 +0300 1.2 +++ b/Bacteria.py Wed Dec 15 03:04:54 2010 +0300 1.3 @@ -1,4 +1,5 @@ 1.4 -from random import* 1.5 +from random import * 1.6 +from math import * 1.7 1.8 class Bacteria (object): 1.9 def __init__ (self, position, velocity, lifetime, mutated): 1.10 @@ -7,17 +8,20 @@ 1.11 self.lifetime=lifetime 1.12 self.mutated=mutated 1.13 1.14 - def check_collision (self, bacteria): 1.15 + def check_collision (self, bacteria, delta, bact_r): 1.16 for bact in bacteria: 1.17 - if 0<abs(self.position-bact.position)<3: 1.18 + if 0<abs(self.position-bact.position)<delta+2*bact_r: 1.19 return bact 1.20 return false 1.21 1.22 - def move (self, delta_t, radius): 1.23 - pass 1.24 + def move (self, delta_t, radius, delta, bact_r): 1.25 + if abs(self.position)<radius-(bact_r+delta): 1.26 + self.velocity=self.velocity.angleToCoord(-(pi/2-self.velocity.angle())) 1.27 + self.position=self.position*delta_t 1.28 1.29 - def collision (self, other, delta_t): 1.30 - pass 1.31 + def collision (self, other, delta_t, radius, delta, bact_r): 1.32 + self.velocity, other.velocity = other.velocity, self.velocity 1.33 + self.move (delta_t, radius, delta, bact_r) 1.34 1.35 def reprod (type, env, p_max): 1.36 if type=='s': 1.37 @@ -26,14 +30,39 @@ 1.38 p=p_max*(env/100) 1.39 return randrange(0, int(1/p))==0 1.40 1.41 - def asexual (self, bacteria, delta_t, radius): 1.42 + def asexual (self, bacteria, delta_t, radius, delta, bact_r, full_lifetime): 1.43 + if self.find_place_a(bacteria, delta, bact_r): 1.44 + bacteria.append(Bacteria(self.position+Vector(-(bact_r+0.75*delta),0), 1.45 + self.rnd_velocity(), full_lifetime, self.if_mutated())) 1.46 + 1.47 + def sexual (self, other, bacteria, delta_t, radius, delta, bact_r, full_lifetime): 1.48 pass 1.49 1.50 - def sexual (self, other, bacteria, delta_t, radius): 1.51 + def find_place_a (self, bacteria, delta, bact_r): #searches for place for children 1.52 + for bact in bacteria: 1.53 + if 0<abs(bact.position-self.position)<(bact_r*3+delta*2): 1.54 + return false 1.55 + return true 1.56 + 1.57 + 1.58 + def find_place_s (self, other, bacteria, delta, bact_r): 1.59 + for bact in bacteria: 1.60 + if bact_r<abs(bact.position-(self.position+other.position)*(1/2))<((sqrt(2)+1)*bact_r*2+delta*2): 1.61 + return false 1.62 + return true 1.63 + 1.64 + 1.65 + def rnd_velocity(self): 1.66 pass 1.67 1.68 - def find_place_a (self, bacteria): #searches for place for children 1.69 + def if_mutated_a(self): 1.70 + pass 1.71 + 1.72 + def if_mutated__s(self,other): 1.73 pass 1.74 1.75 - def find_place_s (self, other, bacteria): 1.76 - pass 1.77 + 1.78 + 1.79 + 1.80 + 1.81 +