Exemplo n.º 1
0
    def render(self):
        egi.set_pen_color(name=self.color)
        points = self.world.transform_points(self.vehicle_shape, self.position,
                                             self.heading, self.side,
                                             Vector2D(self.scale, self.scale))
        egi.closed_shape(points)

        #egi.red_pen()
        #egi.circle(self.position, self.panic_radius)

        if self.mode == 'Wander1':  # Disabled for now

            local_position = Vector2D(self.wander_distance, 0)
            world_position = self.world.transform_point(
                local_position, self.position, self.heading, self.side)
            egi.green_pen()
            egi.circle(world_position, self.wander_radius)

            local_position += self.wander_target
            world_position = self.world.transform_point(
                local_position, self.position, self.heading, self.side)
            egi.red_pen()
            egi.circle(world_position, 5)

        elif self.mode == 'Follow path':
            self.path.render()
Exemplo n.º 2
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        # draw the border
        egi.blue_pen()
        egi.closed_shape(self.walls, False)
        egi.red_pen()
        egi.line_with_arrow(self.pos, self.pos + self.vel * 0.5, 5)  #feeler1

        # add some handy debug drawing info lines - force and velocity
        if self.show_info:
            s = 0.5  # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos + self.vel * s,
                                self.pos + (self.force + self.vel) * s, 5)
            egi.line_with_arrow(self.pos,
                                self.pos + (self.force + self.vel) * s, 5)
    def render(self, color=None):
        # graphics,
        ''' Draw the triangle agent with color'''
        # self.graphics = Graphics()
        # draw the path if it exists and the mode is follow.
        if self.mode == 'follow_path':
            self.path.render()
            pass
        # draw the ship.
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        # add some handy debug drawing info lines - force and velocity.
        if self.show_info:
            s = 0.5  # <-- scaling factor.
            # force.
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity.
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change.
            egi.white_pen()
            egi.line_with_arrow(self.pos + self.vel * s,
                                self.pos + (self.force + self.vel) * s, 5)
            egi.line_with_arrow(self.pos,
                                self.pos + (self.force + self.vel) * s, 5)
Exemplo n.º 4
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        #draw hiding spots
        egi.blue_pen()
        egi.circle(self.obstacles[0], 25)
        egi.circle(self.obstacles[1], 50)
        egi.circle(self.obstacles[2], 75)

        #draw detection box
        egi.blue_pen()
        length = 1.0 * (self.speed() / self.max_speed) * 3.0  #db length
        dbox = [
            Point2D(-1.0, 0.6),
            Point2D(length, 0.6),  #new
            Point2D(length, 0.0),  #new
            Point2D(length, -0.6),  #new
            Point2D(-1.0, -0.6)
        ]
        pts = self.world.transform_points(dbox, self.pos, self.heading,
                                          self.side, self.scale)
        egi.closed_shape(pts, False)
Exemplo n.º 5
0
    def draw(self):
        # draw filled box
        egi.set_pen_color(self.color)
        egi.closed_shape(self._pts, filled=True)

        # draw box border
        if cfg['BOXLINES_ON']:
            egi.set_pen_color((.7, .7, .7, 1))
            egi.closed_shape(self._pts, filled=False)

        if self.kind == 'I':
            egi.set_stroke(1)
            egi.set_pen_color(name="RED")
            egi.line(self._pts[0].x + 10, self._pts[0].y - 5,
                     self._pts[0].x + 10, self._pts[0].y - 16)
            egi.line(self._pts[0].x + 5, self._pts[0].y - 11,
                     self._pts[0].x + 16, self._pts[0].y - 11)

        if self.kind == 'P':
            obj_pts = (
                Point2D(self._pts[0].x + 5, self._pts[0].y - 5),  # top left
                Point2D(self._pts[0].x + 15, self._pts[0].y - 4),  # top right
                Point2D(self._pts[0].x + 15,
                        self._pts[0].y - 15),  # bottom right
                Point2D(self._pts[0].x + 5, self._pts[0].y - 15)  # bottom left
            )
            egi.set_stroke(1)
            egi.set_pen_color(name="RED")
            egi.closed_shape(obj_pts, filled=False)

        # centre circle
        if cfg['CENTER_ON']:
            egi.set_pen_color((.3, .3, 1, 1))
            egi.circle(self._vc, 5)
        # box position (simple column,row) (or x,y actually)
        if self.node:
            if cfg['LABELS_ON']:
                if not self.idx_label:
                    info = "%d" % self.idx
                    self.idx_label = pyglet.text.Label(info,
                                                       color=(0, 0, 0, 255),
                                                       anchor_x="center",
                                                       anchor_y="top")
                    info = "(%d,%d)" % (self.pos[0], self.pos[1])
                    self.pos_label = pyglet.text.Label(info,
                                                       color=(0, 0, 0, 255),
                                                       anchor_x="center",
                                                       anchor_y="bottom")
                    self._reposition_labels()
                self.idx_label.draw()
                #self.pos_label.draw()
        if self.marker:
            if not self.marker_label or self.marker_label.text != self.marker:
                self.marker_label = pyglet.text.Label(self.marker,
                                                      color=(255, 0, 0, 255),
                                                      bold=True,
                                                      anchor_x="center",
                                                      anchor_y="center")
                self._reposition_labels()
            self.marker_label.draw()
Exemplo n.º 6
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)

        # draw wander info
        if self.mode == 'wander':
            # calculate the center of the wander circle in front of the agent
            wnd_pos = Vector2D(self.wander_dist, 0)
            wnd_pos = self.world.transform_point(wnd_pos, self.pos,
                                                 self.heading, self.side)
            # draw wander circle
            egi.green_pen()
            egi.circle(wnd_pos, self.wander_radius)
            # draw the wander target (little cirlce on the big circle)
            egi.red_pen()
            wnd_pos = (self.wander_target + Vector2D(self.wander_dist, 0))
            wld_pos = self.world.transform_point(wnd_pos, self.pos,
                                                 self.heading, self.side)
            egi.circle(wld_pos, 3)

        if self.mode == 'follow_path':
            self.path.render()

        # draw it!
        egi.closed_shape(pts)
Exemplo n.º 7
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)

        if (self.mode == 'hunt'):
            wnd_pos = Vector2D(self.wander_dist, 0)
            wld_pos = self.world.transform_point(wnd_pos, self.pos,
                                                 self.heading, self.side)
            egi.green_pen()
            egi.circle(wld_pos, self.wander_radius)
            egi.red_pen()
            wnd_pos = (self.wander_target + Vector2D(self.wander_dist, 0))
            wld_pos = self.world.transform_point(wnd_pos, self.pos,
                                                 self.heading, self.side)
            egi.circle(wld_pos, 3)
        # draw it!
        egi.closed_shape(pts)

        if self.show_info:
            s = 0.5  # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos + self.vel * s,
                                self.pos + (self.force + self.vel) * s, 5)
            egi.line_with_arrow(self.pos,
                                self.pos + (self.force + self.vel) * s, 5)
Exemplo n.º 8
0
 def render(self, color=None):
     ''' Draw the triangle agent with color'''
     egi.set_pen_color(name=self.color)
     pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                       self.heading, self.side, self.scale)
     # draw it!
     egi.closed_shape(pts)
Exemplo n.º 9
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        # draw the border
        egi.blue_pen()
        egi.closed_shape(self.walls, False)
        egi.red_pen()
        egi.line_with_arrow(self.pos, self.pos + self.vel * 0.5, 5)    #feeler1

        # add some handy debug drawing info lines - force and velocity
        if self.show_info:
            s = 0.5 # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos+self.vel * s, self.pos+ (self.force+self.vel) * s, 5)
            egi.line_with_arrow(self.pos, self.pos+ (self.force+self.vel) * s, 5)
Exemplo n.º 10
0
    def render(self, color=None):

        # draw the ship
        egi.set_pen_color(name=self.color)

        egi.cross(self.pos,10)
        egi.circle(self.pos,10)
Exemplo n.º 11
0
    def drawEye(self, color=None):

        if (self.dead):
            egi.set_pen_color(self.color)
            egi.cross(self.renderPosition + self.side * self.body,
                      self.body * 5)
        else:
            egi.set_pen_color(rgba('fff', 0.5))
            egi.circle(self.renderPosition + self.side * self.body, self.body)
Exemplo n.º 12
0
	def drawEye(self, color=None):
		

		if(self.dead):
			egi.set_pen_color(self.color)
			egi.cross(self.renderPosition + self.side * self.body, self.body * 5)
		else:	
			egi.set_pen_color(rgba('fff', 0.5))
			egi.circle(self.renderPosition + self.side * self.body, self.body)
Exemplo n.º 13
0
    def render(self, color=None):
        """Displays the Hunter on the screen"""
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        egi.closed_shape(pts)

        if self.mode == 'follow_path':
            self.path.render()
Exemplo n.º 14
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        # draw the path if it exists and the mode is follow
        if self.mode == 'follow_path':
            self.path.render()

        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        # draw wander info?
        if self.mode == 'wander':
            ## ...
            pass

        #draw neighbour radius
        cntr_pos = Vector2D()
        cntrwld_pos = self.world.transform_point(cntr_pos, self.pos,
                                                 self.heading, self.side)

        egi.white_pen()
        egi.circle(cntrwld_pos, self.neighbour_radius)

        # add some handy debug drawing info lines - force and velocity
        if self.show_info:
            s = 0.5  # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos + self.vel * s,
                                self.pos + (self.force + self.vel) * s, 5)
            egi.line_with_arrow(self.pos,
                                self.pos + (self.force + self.vel) * s, 5)

        if (self.mode == 'wander'):
            #calculate center of the wander circle in front of agent
            wnd_pos = Vector2D(self.wander_dist, 0)
            wld_pos = self.world.transform_point(wnd_pos, self.pos,
                                                 self.heading, self.side)
            #draw the wander circle
            egi.green_pen()
            egi.circle(wld_pos, self.wander_radius)
            #draw the wander target (little circle on big circle)
            egi.red_pen()
            wnd_pos = (self.wander_target + Vector2D(self.wander_dist, 0))
            wnd_pos = self.world.transform_point(wnd_pos, self.pos,
                                                 self.heading, self.side)
            egi.circle(wld_pos, 3)
Exemplo n.º 15
0
 def render(self, color=None):
     ''' Draw the triangle agent with color'''
     if(color == None):
         egi.set_pen_color(name=self.color)
     else:
         egi.set_pen_color(name=color)
     pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                       self.heading, self.side, self.scale)
     # draw it!
     egi.closed_shape(pts)
Exemplo n.º 16
0
    def drawWalls(self):

        tank = '0e59cb'
        egi.set_pen_color(color=rgba(tank, 0.6))
        egi.set_stroke(2)

        self.tankShape[0].y = self.mainWave[0].y
        self.tankShape[-1].y = self.mainWave[-1].y

        egi.unclosed_shape(self.tankShape)
Exemplo n.º 17
0
    def render(self, color=None):
        egi.blue_pen()
        egi.cross(self.predictedtarget, 5)
        ''' Draw the triangle agent with color'''
        # draw the path if it exists and the mode is follow
        if self.mode == 'follow_path':
            ## ...
            self.path.render()
            pass

        if self.is_hit:
            self.visible = False

        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)

        # draw it!
        egi.closed_shape(pts)

        self.is_hit = False

        # draw wander info?
        if self.mode == 'wander':
            wnd_pos = Vector2D(self.wander_dist, 0)
            wld_pos = self.world.transform_point(wnd_pos, self.pos,
                                                 self.heading, self.side)
            # draw the wander circle
            egi.green_pen()
            egi.circle(wld_pos, self.wander_radius)
            # draw the wander target (little circle on the big circle)
            egi.red_pen()
            wnd_pos = (self.wander_target + Vector2D(self.wander_dist, 0))
            wld_pos = self.world.transform_point(wnd_pos, self.pos,
                                                 self.heading, self.side)
            egi.circle(wld_pos, 3)
            ## ...
            pass

        # add some handy debug drawing info lines - force and velocity
        if self.show_info:
            s = 0.5  # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos + self.vel * s,
                                self.pos + (self.force + self.vel) * s, 5)
            egi.line_with_arrow(self.pos,
                                self.pos + (self.force + self.vel) * s, 5)
Exemplo n.º 18
0
    def render(self):
        egi.set_pen_color(self.color)

        frequency = 5
        pulse = sin(self.world._clock * frequency)

        range = 0.2
        pulse = 1 + (pulse * range)
        r = self.boundingRadius * pulse

        egi.circle(self.pos, r, filled=True)
Exemplo n.º 19
0
	def render(self):
		egi.set_pen_color(self.color)

		frequency = 5
		pulse = sin(self.world._clock * frequency)

		range = 0.2
		pulse = 1 + (pulse * range) 
		r = self.boundingRadius * pulse
		
		egi.circle(self.pos, r, filled=True)
Exemplo n.º 20
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        if self.BestHidingSpot is not None:
            egi.white_pen()
            egi.cross(Vector2D(self.BestHidingSpot.x, self.BestHidingSpot.y),
                      5)

        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)
Exemplo n.º 21
0
	def drawWalls(self):



		tank = '0e59cb'
		egi.set_pen_color(color=rgba(tank, 0.6))
		egi.set_stroke(2)

		self.tankShape[0].y = self.mainWave[0].y
		self.tankShape[-1].y = self.mainWave[-1].y

		egi.unclosed_shape(self.tankShape)
Exemplo n.º 22
0
    def draw(self):
        for box in self.boxes:
            box.draw()

        if cfg['EDGES_ON']:
            egi.set_pen_color(name='LIGHT_BLUE')
            for node, edges in self.graph.edgelist.items():
                # print node, edges
                for dest in edges:
                    egi.line_by_pos(self.boxes[node]._vc, self.boxes[dest]._vc)



        if self.path:

            if not self.agent:
                path_pts = []
                for i in range(0,len(self.path.path)):
                    path_pts.append(PointToVector2D(self.boxes[self.path.path[i]]._vc))

                self.agent = Agent()
                self.agent.path.set_pts(path_pts)

            self.agent.update()
            self.agent.render()

            # put a circle in the visited boxes?
            if cfg['BOXUSED_ON']:
                egi.set_pen_color(name="GREEN")
                for i in self.path.closed:
                    egi.circle(self.boxes[i]._vc, 10)

            if cfg['TREE_ON']:
                egi.set_stroke(3)
                # Show open edges
                route = self.path.route
                egi.set_pen_color(name='GREEN')
                for i in self.path.open:
                    egi.circle(self.boxes[i]._vc, 10)
                # show the partial paths considered
                egi.set_pen_color(name='ORANGE')
                for i,j in route.items():
                    egi.line_by_pos(self.boxes[i]._vc, self.boxes[j]._vc)
                egi.set_stroke(1)

            if cfg['PATH_ON']:
                # show the final path delivered
                egi.set_pen_color(name='RED')
                egi.set_stroke(2)
                path = self.path.path
                for i in range(1,len(path)):
                    egi.line_by_pos(self.boxes[path[i-1]]._vc, self.boxes[path[i]]._vc)
                egi.set_stroke(1)
Exemplo n.º 23
0
    def render(self, color=None):
        """ Draw the triangle agent with color"""
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)

        # draw it!
        egi.closed_shape(pts)

        # display each possible hiding location
        for spot in self.hide_locations:
            if spot == self.hide_locations[-1]:
                egi.set_pen_color(name='GREEN')
            egi.cross(spot, 10)
Exemplo n.º 24
0
	def idleSteer(self, delta):

		wanderForce = self.wander(delta) * self.state['wanderInfluence']
		
		flockForce = self.flock(delta) * self.flockingInfluence

		# obstaclesForce = self.obstacleAvoidance(self.world.solids)
		
		
		
		percentFromCenterX = (self.pos.x - self.world.center.x) / self.world.width
		percentFromCenterY = (self.pos.y - self.world.center.y) / self.world.height

		
		
		# Square the falloff
		valueX = -Util.sign(percentFromCenterX)*(self.maxCenterForce * percentFromCenterX**2)
		valueY = -Util.sign(percentFromCenterY)*(self.maxCenterForce * percentFromCenterY**2)
		
		centerForce = Vector2D(valueX, valueY)
		
		
		survivalSteer = self.survivalSteer(delta)

		foodForce = self.foodSteer(delta) * (1 + self.sickness / 10)

		self.maxSpeed = self.stat('speed') - (self.sickness / 2)
		
		



		netForce = wanderForce + flockForce + centerForce + survivalSteer + foodForce

		# print 'self.flockingInfluence', self.flockingInfluence

		if(self.chosenOne and self.world.drawDebug):
			egi.blue_pen()
			egi.line_by_pos(self.pos, self.pos + wanderForce * 5)
			egi.green_pen()
			egi.line_by_pos(self.pos, self.pos + flockForce * 5)
			egi.orange_pen()
			egi.line_by_pos(self.pos, self.pos + netForce * 5)
			
			egi.set_pen_color(name='BROWN')
			egi.line_by_pos(self.pos, self.pos + centerForce * 5)

		return netForce
Exemplo n.º 25
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        # draw the path if it exists and the mode is follow
        if self.mode == 'follow_path':
            ## ...
            self.path.render()

        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        # draw wander info?
        if self.mode == 'wander':
            ## ...
            wnd_pos = Vector2D(self.wander_dist, 0)
            wld_pos = self.world.transform_point(wnd_pos, self.pos, self.heading, self.side)

            egi.green_pen()
            egi.circle(wld_pos, self.wander_radius)

            egi.red_pen()
            wnd_pos = (self.wander_target + Vector2D(self.wander_dist, 0))
            wld_pos = self.world.transform_point(wnd_pos, self.pos, self.heading, self.side)
            egi.circle(wld_pos, 3)

        if self.mode == 'hide':
            egi.green_pen()
            egi.cross(self.besthidingspot, 5)

        # add some handy debug drawing info lines - force and velocity
        if self.show_info:
            s = 0.5 # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos+self.vel * s, self.pos+ (self.force+self.vel) * s, 5)
            egi.line_with_arrow(self.pos, self.pos+ (self.force+self.vel) * s, 5)
Exemplo n.º 26
0
	def drawBody(self, color=None):
		egi.set_pen_color(color)

		if(self.world.drawDebug):
			if(self.isNeighbour): 
				egi.blue_pen()
			if(self.tagged):
				egi.green_pen()
		if(self.chosenOne): 
			if(self.world.drawDebug or self.world.drawComponentForces):
				egi.white_pen()

		pts = self.pointsInWorldSpace(self.vehicle_shape, self.renderPosition)
		# pts = self.world.transform_points(self.vehicle_shape, self.renderPosition, self.heading, self.side, self.scale)
		# draw it!
		egi.closed_shape(pts)

		self.drawEye(color)
Exemplo n.º 27
0
    def idleSteer(self, delta):

        wanderForce = self.wander(delta) * self.state['wanderInfluence']

        flockForce = self.flock(delta) * self.flockingInfluence

        # obstaclesForce = self.obstacleAvoidance(self.world.solids)

        percentFromCenterX = (self.pos.x -
                              self.world.center.x) / self.world.width
        percentFromCenterY = (self.pos.y -
                              self.world.center.y) / self.world.height

        # Square the falloff
        valueX = -Util.sign(percentFromCenterX) * (self.maxCenterForce *
                                                   percentFromCenterX**2)
        valueY = -Util.sign(percentFromCenterY) * (self.maxCenterForce *
                                                   percentFromCenterY**2)

        centerForce = Vector2D(valueX, valueY)

        survivalSteer = self.survivalSteer(delta)

        foodForce = self.foodSteer(delta) * (1 + self.sickness / 10)

        self.maxSpeed = self.stat('speed') - (self.sickness / 2)

        netForce = wanderForce + flockForce + centerForce + survivalSteer + foodForce

        # print 'self.flockingInfluence', self.flockingInfluence

        if (self.chosenOne and self.world.drawDebug):
            egi.blue_pen()
            egi.line_by_pos(self.pos, self.pos + wanderForce * 5)
            egi.green_pen()
            egi.line_by_pos(self.pos, self.pos + flockForce * 5)
            egi.orange_pen()
            egi.line_by_pos(self.pos, self.pos + netForce * 5)

            egi.set_pen_color(name='BROWN')
            egi.line_by_pos(self.pos, self.pos + centerForce * 5)

        return netForce
Exemplo n.º 28
0
    def draw(self):
        for box in self.boxes:
            box.draw()

        if cfg['EDGES_ON']:
            egi.set_pen_color(name='LIGHT_BLUE')
            for node, edges in self.graph.edgelist.items():
                # print node, edges
                for dest in edges:
                    egi.line_by_pos(self.boxes[node]._vc, self.boxes[dest]._vc)

        if self.path:
            # put a circle in the visited boxes?
            if cfg['BOXUSED_ON']:
                egi.set_pen_color(name="GREEN")
                for i in self.path.closed:
                    egi.circle(self.boxes[i]._vc, 10)

            if cfg['TREE_ON']:
                egi.set_stroke(3)
                # Show open edges
                route = self.path.route
                egi.set_pen_color(name='GREEN')
                for i in self.path.open:
                    egi.circle(self.boxes[i]._vc, 10)
                # show the partial paths considered
                egi.set_pen_color(name='ORANGE')
                for i,j in route.items():
                    egi.line_by_pos(self.boxes[i]._vc, self.boxes[j]._vc)
                egi.set_stroke(1)

            if cfg['PATH_ON']:
                # show the final path delivered
                egi.set_pen_color(name='RED')
                egi.set_stroke(2)
                path = self.path.path
                for i in range(1,len(path)):
                    egi.line_by_pos(self.boxes[path[i-1]]._vc, self.boxes[path[i]]._vc)
                egi.set_stroke(1)

        if self.agent:
            self.agent.render()
Exemplo n.º 29
0
    def draw_paths(self):
        if self.path:
            # copied from the box_world

            egi.set_stroke(2)
            # Show open edges
            route = self.path.route
            egi.set_pen_color(name='GREEN')
            for i in self.path.open:
                egi.circle(self.world.boxes[i]._vc, 10)
            # show the partial paths considered
            egi.set_pen_color(name='ORANGE')
            egi.set_stroke(2)
            for i, j in route.items():
                egi.line_by_pos(self.world.boxes[i]._vc,
                                self.world.boxes[j]._vc)
            egi.set_stroke(1)

            # show the final path delivered
            egi.set_pen_color(name='RED')
            egi.set_stroke(2)
            path = self.path.path
            for i in range(1, len(path)):
                egi.line_by_pos(self.world.boxes[path[i - 1]]._vc,
                                self.world.boxes[path[i]]._vc)
            egi.set_stroke(1)
    def draw(self):
        for box in self.boxes:
            box.draw()

        if cfg['EDGES_ON']:
            egi.set_pen_color(name='LIGHT_BLUE')
            for node, edges in self.graph.edgelist.items():
                # print node, edges.
                for dest in edges:
                    egi.line_by_pos(self.boxes[node]._vc, self.boxes[dest]._vc)

        if self.path:
            # put a circle in the visited boxes?
            if cfg['BOXUSED_ON']:
                egi.set_pen_color(name="GREEN")
                for i in self.path.closed:
                    egi.circle(self.boxes[i]._vc, 10)

            if cfg['TREE_ON']:
                egi.set_stroke(3)
                # Show open edges.
                route = self.path.route
                egi.set_pen_color(name='GREEN')
                for i in self.path.open:
                    egi.circle(self.boxes[i]._vc, 10)
                # show the partial paths considered.
                egi.set_pen_color(name='ORANGE')
                for i, j in route.items():
                    egi.line_by_pos(self.boxes[i]._vc, self.boxes[j]._vc)
                egi.set_stroke(1)

            if cfg['PATH_ON']:
                # show the final path delivered
                egi.set_pen_color(name='RED')
                egi.set_stroke(2)
                path = self.path.path
                for i in range(1, len(path)):
                    egi.line_by_pos(self.boxes[path[i - 1]]._vc,
                                    self.boxes[path[i]]._vc)
                egi.set_stroke(1)
Exemplo n.º 31
0
    def drawWaves(self):
        egi.green_pen()
        seed = self.world._clock * 2

        water = self.water
        egi.set_stroke(2)

        egi.set_pen_color(color=rgba(water[0], 0.5))
        egi.unclosed_shape(
            self.createWave(seed=seed,
                            amplitude=7,
                            width=self.size.width,
                            start=Vector2D(self.box.left, self.box.top + 10)))

        egi.set_pen_color(color=rgba(water[1], 0.5))
        self.mainWave = self.createWave(seed=seed / 2,
                                        amplitude=3,
                                        width=self.size.width,
                                        start=Vector2D(self.box.left,
                                                       self.box.top + 0))
        egi.unclosed_shape(self.mainWave)

        egi.set_pen_color(color=rgba(water[2], 0.5))
        egi.unclosed_shape(
            self.createWave(seed=seed / 3,
                            amplitude=10,
                            width=self.size.width,
                            start=Vector2D(self.box.left, self.box.top + 0)))
Exemplo n.º 32
0
    def render(self, color=None):
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        # add some handy debug drawing info lines - force and velocity
        if self.show_info:
            s = 0.5  # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos + self.vel * s,
                                self.pos + (self.force + self.vel) * s, 5)
            egi.line_with_arrow(self.pos,
                                self.pos + (self.force + self.vel) * s, 5)
Exemplo n.º 33
0
    def render(self, color=None):
        """Displays the Hunter on the screen"""
        if self.visible:
            egi.set_pen_color(name=self.color)
            pts = self.world.transform_points(self.vehicle_shape, self.pos, self.heading, self.side, self.scale)

            # draw wander info
            # if self.mode == 'wander':
            #     # calculate the centre of the wander circle in front of the agent
            #     wnd_pos = Vector2D(self.wander_dist, 0)
            #     wnd_pos = self.world.transform_point(wnd_pos, self.pos, self.heading, self.side)
            #     # draw wander circle
            #     egi.green_pen()
            #     egi.circle(wnd_pos, self.wander_radius)
            #     # draw the target (little circle on the big circle)
            #     egi.red_pen()
            #     wnd_pos = (self.wander_target + Vector2D(self.wander_dist, 0))
            #     wld_pos = self.world.transform_point(wnd_pos, self.pos, self.heading, self.side)
            #     egi.circle(wld_pos, 3)

            # draw it
            egi.closed_shape(pts)
Exemplo n.º 34
0
    def render(self, color=None):
        ''' Draw moving target '''
        #calculate target points
        self.movingTarget()
        #draw target using those points
        egi.blue_pen()
        dbox = [
            Point2D(self.x0, self.y0),
            Point2D(self.x1, self.y0),
            Point2D(self.x1, self.y1),
            Point2D(self.x0, self.y1)
        ]
        egi.closed_shape(dbox, False)
        #pos of target
        self.target_pos = Vector2D(self.x0 + self.target_mid.x, self.y1 + self.target_mid.y)

        ''' Draw the triangle agent with color'''
        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        #draw bullets being fired
        egi.green_pen()
        if self.mode == 'rifle' or self.mode == 'rocket' or self.mode == 'handgun' or self.mode == 'grenade':
            if self.step_count == 0:
                egi.circle(self.bullet_pos, self.size)
                self.step_count += 1
            elif self.bullet_pos.y > self.target_pos.y:
                self.step_count = 0
                self.bullet_pos = Vector2D(250,250)
                self.mode = 'aim'
            else:
                self.bullet_pos += self.avg
                egi.circle(self.bullet_pos, self.size)
                self.step_count += 1
Exemplo n.º 35
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        #draw some patrol target
        egi.red_pen()
        for target in self.world.targets:
            egi.cross(target, 10)

        ''' Draw bullets '''
        egi.grey_pen()
        if self.mode == 'fire':
            self.shoot_enemy()

        if self.mode == 'reload':
            self.color = 'YELLOW'
            self.reload_gun()
            if self.ammo == 10:
                self.mode = 'soldier'
                self.color = 'GREEN'
Exemplo n.º 36
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        # draw wander info?
        ## ...
        # calculate the center of the wander circle in front of the agent
        wnd_pos = Vector2D(self.wander_dist, 0)
        wld_pos = self.world.transform_point(wnd_pos, self.pos, self.heading, self.side)
        # draw the wander circle
        egi.green_pen()
        egi.circle(wld_pos, self.radius)
        # draw the wander target (little circle on the big circle)
        egi.red_pen()
        wnd_pos = (self.wander_target + Vector2D(self.wander_dist, 0))
        wld_pos = self.world.transform_point(wnd_pos, self.pos, self.heading, self.side)
        
       # egi.circle(self.pos, self.radius)
        
        # add some handy debug drawing info lines - force and velocity
        if self.show_info:
            s = 0.5 # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos+self.vel * s, self.pos+ (self.force+self.vel) * s, 5)
            egi.line_with_arrow(self.pos, self.pos+ (self.force+self.vel) * s, 5)
Exemplo n.º 37
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        # draw the path if it exists and the mode is follow
        if self.mode == 'follow_path':
            ## ...
            self.path.render()
            pass

        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                        self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)


        
        if self.mode == 'neighbourhood':
            if self.tagged == True:
                self.color = 'BLUE'
            if self.tagged == False:
                self.color = 'ORANGE'
            pass

        # add some handy debug drawing info lines - force and velocity
        if self.show_info:
            s = 0.5 # <-- scaling factor
            # force
            egi.red_pen()
            egi.line_with_arrow(self.pos, self.pos + self.force * s, 5)
            # velocity
            egi.grey_pen()
            egi.line_with_arrow(self.pos, self.pos + self.vel * s, 5)
            # net (desired) change
            egi.white_pen()
            egi.line_with_arrow(self.pos+self.vel * s, self.pos+ (self.force+self.vel) * s, 5)
            egi.line_with_arrow(self.pos, self.pos+ (self.force+self.vel) * s, 5)
Exemplo n.º 38
0
    def render(self, color=None):
        ''' Draw the triangle agent with color'''
        # draw the ship
        egi.set_pen_color(name=self.color)
        pts = self.world.transform_points(self.vehicle_shape, self.pos,
                                          self.heading, self.side, self.scale)
        # draw it!
        egi.closed_shape(pts)

        #draw some patrol target
        egi.red_pen()
        for target in self.world.targets:
            egi.cross(target, 10)
        ''' Draw bullets '''
        egi.grey_pen()
        if self.mode == 'fire':
            self.shoot_enemy()

        if self.mode == 'reload':
            self.color = 'YELLOW'
            self.reload_gun()
            if self.ammo == 10:
                self.mode = 'soldier'
                self.color = 'GREEN'
Exemplo n.º 39
0
	def drawWaves(self):
		egi.green_pen()
		seed = self.world._clock * 2

		water = self.water
		egi.set_stroke(2)

		egi.set_pen_color(color=rgba(water[0], 0.5))
		egi.unclosed_shape(self.createWave(seed= seed, amplitude = 7, width = self.size.width, start = Vector2D(self.box.left, self.box.top + 10) ))
		
		egi.set_pen_color(color=rgba(water[1], 0.5))
		self.mainWave = self.createWave(seed= seed/2, amplitude = 3, width = self.size.width, start = Vector2D(self.box.left, self.box.top + 0) )
		egi.unclosed_shape(self.mainWave)
		
		
		egi.set_pen_color(color=rgba(water[2], 0.5))
		egi.unclosed_shape(self.createWave(seed= seed/3, amplitude = 10, width = self.size.width, start = Vector2D(self.box.left, self.box.top + 0) ))
    def draw(self):
        # draw filled box
        egi.set_pen_color(self.color)
        egi.closed_shape(self._pts, filled=True)

        # draw box border
        if cfg['BOXLINES_ON']:
            egi.set_pen_color((.7, .7, .7, 1))
            egi.closed_shape(self._pts, filled=False)
        # centre circle
        if cfg['CENTER_ON']:
            egi.set_pen_color((.3, .3, 1, 1))
            egi.circle(self._vc, 5)
        # box position (simple column,row) (or x,y actually)
        if self.node:
            if cfg['LABELS_ON']:
                if not self.idx_label:
                    info = "%d" % self.idx
                    self.idx_label = pyglet.text.Label(info,
                                                       color=(0, 0, 0, 255),
                                                       anchor_x="center",
                                                       anchor_y="top")
                    info = "(%d,%d)" % (self.pos[0], self.pos[1])
                    self.pos_label = pyglet.text.Label(info,
                                                       color=(0, 0, 0, 255),
                                                       anchor_x="center",
                                                       anchor_y="bottom")
                    self._reposition_labels()
                self.idx_label.draw()
                #self.pos_label.draw()
        if self.marker:
            if not self.marker_label or self.marker_label.text != self.marker:
                self.marker_label = pyglet.text.Label(self.marker,
                                                      color=(255, 0, 0, 255),
                                                      bold=True,
                                                      anchor_x="center",
                                                      anchor_y="center")
                self._reposition_labels()
            self.marker_label.draw()
Exemplo n.º 41
0
    def draw(self):
        # draw filled box
        egi.set_pen_color(self.color)
        egi.closed_shape(self._pts, filled=True)

        # draw box border
        if cfg['BOXLINES_ON']:
            egi.set_pen_color((.7,.7,.7,1))
            egi.closed_shape(self._pts, filled=False)
        # centre circle
        if cfg['CENTER_ON']:
            egi.set_pen_color((.3,.3,1,1))
            egi.circle(self._vc, 5)
        # box position (simple column,row) (or x,y actually)
        if self.node:
            if cfg['LABELS_ON']:
                if not self.idx_label:
                    info = "%d" % self.idx
                    self.idx_label = pyglet.text.Label(info, color=(0,0,0,255),
                                                       anchor_x="center",
                                                       anchor_y="top")
                    info = "(%d,%d)" % (self.pos[0], self.pos[1])
                    self.pos_label = pyglet.text.Label(info, color=(0,0,0,255),
                                                       anchor_x="center",
                                                       anchor_y="bottom")
                    self._reposition_labels()
                self.idx_label.draw()
                #self.pos_label.draw()
        if self.marker:
            if not self.marker_label or self.marker_label.text != self.marker:
                self.marker_label = pyglet.text.Label(self.marker,
                                                      color=(255,0,0,255),
                                                      bold=True,
                                                      anchor_x="center",
                                                      anchor_y="center")
                self._reposition_labels()
            self.marker_label.draw()
Exemplo n.º 42
0
	def renderBackground(self):
		
		egi.set_pen_color(self.backgroundColor)
		egi.rect(0, self.height, self.width, 0, filled=True)
Exemplo n.º 43
0
 def render(self):
     egi.set_pen_color(name=self.color)
     pts = self.world.transform_points(self.shape, self.pos,
                                       self.heading, self.side, self.scale)
     # draw it!
     egi.closed_shape(pts)
Exemplo n.º 44
0
	def render(self):
		egi.set_pen_color(self.color)
		
		renderShape = self.getRenderShape()

		egi.closed_shape(renderShape)