Exemplo n.º 1
0
 def __init__(self, surface, target, dna=None, start=None):
     self.surface = surface
     self.target = target
     x = surface.get_width()
     y = surface.get_height()
     if not start:
         self.start = Vector2D(x / 2, y - 100)
     else:
         self.start = start
     self.pos = self.start.add(Vector2D(0, -20))
     self.velocity = Vector2D.zero_vector()
     gravity = Vector2D(0, 9.807)
     zero = Vector2D.zero_vector()
     self.acceleration = zero
     if dna:
         self.dna = dna
     else:
         self.dna = DNA()
     self.done = False
     self.detonated = False
     self.crashed = False
     self.step = 0
     self.fitness = 0
     self.distances = []
     self.obstacle = pg.Rect((x * 0.30, y * 0.6), (x * 0.4, 20))
     self.isParent = False
     self.min_dist = 99999
Exemplo n.º 2
0
    def update(self):
        gravity = Vector2D(0, 9.807)
        zero = Vector2D.zero_vector()
        if self.pos.distance(self.target) < self.min_dist:
            self.min_dist = self.pos.distance(self.target)

        # if self.pos.x > self.surface.get_width() or self.pos.x < 0:
        #     self.crashed = True
        #
        #
        # if self.pos.y > self.surface.get_height() or self.pos.y < 0:
        #     self.crashed = True

        if self.obstacle.collidepoint(*self.pos()):
            self.crashed = True

        if self.pos.distance(self.target) < 20:
            self.done = True
            self.pos = Vector2D(*self.target())

        if not self.done:
            self.distances.append(self.pos.distance(self.target))
            self.apply_force(gravity.div(200))
            self.apply_force(self.dna.genes[self.step])
            self.velocity = self.velocity.add(self.acceleration)
            self.pos = self.pos.add(self.velocity)
            self.acceleration = zero
            self.step += 1
        else:
            pass
Exemplo n.º 3
0
    def __init__(self, lifespan=None, genes=None):
        if not lifespan:
            self.lifespan = 300
        else:
            self.lifespan = lifespan
        if genes:
            self.genes = genes
        else:
            self.genes = []
            force = Vector2D.zero_vector()
            for _ in range(self.lifespan):

                g_force = force.random_vector()
                g_force.set_magnitude(0.1)
                self.genes.append(g_force)
        self.isMutant = False