Exemple #1
0
    def render(self):
        for agent in self.agents:
            agent.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        for obstacle in self.obstacle:
            obstacle.render()

        if self.show_info:
            infotext = ': '.join(('Radius', str(self.radius)))
            egi.white_pen()
            egi.text_at_pos(0, 487, infotext)
            infotext = ': '.join(('Cohesion', str(self.cohesion)))
            egi.white_pen()
            egi.text_at_pos(0, 448, infotext)
            infotext = ': '.join(('Seperation', str(self.separation)))
            egi.white_pen()
            egi.text_at_pos(0, 461, infotext)
            infotext = ': '.join(('Alignment', str(self.alignment)))
            egi.white_pen()
            egi.text_at_pos(0, 474, infotext)
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #2
0
    def render(self):
        if self.hunter is not None:
            self.hunter.render()
        for agent in self.agents:
            agent.render()
        for hide in self.hideObjects:
            hide.render()
        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.showinfo:
            # added additional info to info text in regards to emergant group behaviour ##2018-04-16
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
            infotext = ': '.join(('Cohesion Modifier', str(self.cohesion)))
            egi.white_pen()
            egi.text_at_pos(0, 12, infotext)
            infotext = ': '.join(('Seperation Modifier', str(self.seperation)))
            egi.white_pen()
            egi.text_at_pos(0, 24, infotext)
            infotext = ': '.join(('Alignment Modifier', str(self.alignment)))
            egi.white_pen()
            egi.text_at_pos(0, 36, infotext)
            infotext = ': '.join(('Radius', str(self.radius)))
            egi.white_pen()
            egi.text_at_pos(0, 48, infotext)
Exemple #3
0
    def render(self):
        for agent in self.agents:
            agent.render()

        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #4
0
	def render(self):
		
		egi.set_stroke(1)

		self.super.render()

		if(self.chosenOne and self.world.drawDebug):
			egi.grey_pen()
			egi.text_at_pos(self.pos.x, self.pos.y, str(self.sickness))
			egi.text_at_pos(self.world.width - 100, self.world.height - 30, str(self._state))
Exemple #5
0
    def render(self):

        egi.set_stroke(1)

        self.super.render()

        if (self.chosenOne and self.world.drawDebug):
            egi.grey_pen()
            egi.text_at_pos(self.pos.x, self.pos.y, str(self.sickness))
            egi.text_at_pos(self.world.width - 100, self.world.height - 30,
                            str(self._state))
Exemple #6
0
    def render(self):
        for agent in self.agents:
            agent.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.showinfo:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #7
0
    def render(self):
        if self.shooter:
            self.shooter.render()

        if self.target:
            self.target.render()

        if self.bullet:
            self.bullet.render()

        if self.show_info:
            infotext = self.shooter.weapon
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #8
0
    def render(self):
        for agent in self.agents:
            agent.render()

        for target in self.targets:
            target.render()

        for projectile in self.projectiles:
            projectile.render()

        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #9
0
    def render(self):
        for agent in self.agents:
            agent.render()

        for enemy in self.enemies:
            enemy.render()

        for projectile in self.projectiles:
            projectile.render()

        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #10
0
    def render(self):
        for projectile in self.projectiles:
            projectile.render()

        if self.target:
            self.target.render()

        if self.attacker:
            self.attacker.render()

        if self.show_info:
            infotext = 'Weapon: ' + self.attacker.weapon
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #11
0
    def render(self):
        self.hunter.render()
        self.cannon.render()

        for projectile in self.projectiles:
            projectile.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.showinfo:
            infotext = ', '.join(
                set(projectile.mode for projectile in self.projectiles))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #12
0
    def render(self):
        for agent in self.agents:
            agent.render()

        self.hunter.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.showinfo:
            controltext = 'Cohesion [Q/W]\nSeparation [T\Y]\nAlignment [K/L]\nNeighbourhood Radius [N/M]'
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 15, controltext)
            egi.text_at_pos(0, 0, infotext)
Exemple #13
0
    def render(self):
        for agent in self.agents:
            agent.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.show_info:
            infotext = \
                'Mode: ' + self.agents[0].mode + \
                ', Local group radius: ' + str(round(self.agents[0].local_group_radius, 2)) + \
                ', Separation: ' + str(round(self.agents[0].separation_multiplier, 2)) + \
                ', Cohesion: '   + str(round(self.agents[0].cohesion_multiplier, 2)) + \
                ', Alignment: '  + str(round(self.agents[0].alignment_multiplier, 2))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #14
0
    def render(self):
        for agent in self.agents:
            agent.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.show_info:
            text = 'Mode: ' + self.agents[0].mode + \
            '\nWander: ' + str(round(self.agents[0].wanderAmount, 2)) + \
            '\nSeparation: ' + str(round(self.agents[0].separationAmount, 2)) + \
            '\nCohesion: ' + str(round(self.agents[0].cohesionAmount, 2)) + \
            '\nAlignment ' + str(round(self.agents[0].alignmentAmount, 2))

            egi.white_pen()
            egi.text_at_pos(10, 420, text)
Exemple #15
0
    def render(self):
        
        for hidingspot in self.hidingspots:
            egi.blue_pen()
            egi.cross(hidingspot, 5)

        for obstacle in self.obstacles:
            obstacle.render()

        self.hunter.render()

        for agent in self.agents:
            agent.render()

        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #16
0
    def render(self):
        for agent in self.agents:
            agent.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.hunter:
            agent.render('GREEN')

        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            infotext += ', '
            infotext += ' , '.join(
                set(agent.attribute for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #17
0
    def render(self):

        self.agent.render()

        for agent in self.enemies:
            agent.render()

        self.targett.render()

        for bullet in self.bullet:
            bullet.render()

        if self.show_info:
            infotext = ', '.join(set(self.agent.mode))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)

        self.refuelst.render()
Exemple #18
0
    def render(self):
        for agent in self.agents:
            agent.render()

        for hunter in self.hunters:
            hunter.render()

        for obstacle in self.obstacles:
            obstacle.render()


        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #19
0
    def render(self):
        for agent in self.agents:
            if agent is not self.hunter:
                agent.render()
            else:
                agent.render("GREEN")

        for obs in self.obstacles:
            obs.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            infotext += ', '
            infotext += ' , '.join(
                set(agent.attribute for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #20
0
    def render(self,delta):


        for agent in self.agents:
            agent.render()

        for obstacle in self.obstacle:
            obstacle.render()

        self.marksman.render()

        self.hitpoint.render()

        for bullet in self.bullet:
            bullet.render()

        if self.show_info:

            infotext = ', '.join(set(bullet.mode for bullet in self.bullet))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #21
0
    def render(self):
        for agent in self.agents:
            if agent is not self.hunter:
                agent.render()
            else:
                agent.render("GREEN")


        for obs in self.obstacles:
            obs.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)


        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            infotext += ', '
            infotext += ' , '.join(set(agent.attribute for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #22
0
    def render(self):
        for agent in self.agents:
            if agent.mode == 'hunt':
                egi.blue_pen()
                for spot in agent.hiding_spots:
                    egi.cross(spot, 10)
            elif agent.mode == 'prey':
                egi.green_pen()
                egi.circle(agent.best_spot, 10)
            agent.render()

        for obstacle in self.obstacles:
            obstacle.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.show_info:
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
Exemple #23
0
	def drawInfo(self):
		
		if not self.showInfo: return
		
		# Formatting
		lineHeight = 24
		offset = (33, 30)
		
		# Loop through and draw each prop
		i = 0
		for key, props in self.info.iteritems():
			# draw the key
			egi.text_color(name='GREY')
			egi.text_at_pos(offset[0] + 0, (offset[1] + i * lineHeight), key)

			# draw the label
			egi.text_color(name='WHITE')
			if('enabled' in props and props['enabled']):
				egi.text_color(name='GREEN')
			
			egi.text_at_pos(offset[0] + 50, (offset[1] + i * lineHeight), props['label'])

			i += 1
Exemple #24
0
    def render(self):
        for agent in self.agents:
            agent.render()

        if self.target:
            egi.red_pen()
            egi.cross(self.target, 10)

        if self.show_info:
            botSpeedText = "Bot Speed(q,w): " + str(agent.max_speed)
            alignFactText = "Alignment Factor(a,s): " + str(
                agent.AlignmentFactor)
            cohFactText = "Cohesion Factor(z,x): " + str(agent.CohesionFactor)
            sepFactText = "Separation Factor(c,v): " + str(
                agent.SeparationFactor)
            agent = self.agents[0]
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
            egi.text_at_pos(150, 0, botSpeedText)
            egi.text_at_pos(150, 13, alignFactText)
            egi.text_at_pos(150, 26, cohFactText)
            egi.text_at_pos(150, 39, sepFactText)
Exemple #25
0
    def render(self):
        for agent in self.agents:
            agent.render()

        if self.target:
            egi.red_pen()
            for obstacle in self.obstacles:
                egi.circle(obstacle.pos, obstacle.radius, filled=True)

        if self.show_info:
            massText = "Mass(q,w): " + str(agent.mass)
            maxTurnText = "Max Turn Force(a,s): " + str(agent.max_force)
            maxSpeedText = "Max Speed(z,x): " + str(agent.max_speed)
            agent = self.agents[0]
            infotext = ', '.join(set(agent.mode for agent in self.agents))
            egi.white_pen()
            egi.text_at_pos(0, 0, infotext)
            egi.text_at_pos(150, 0, massText)
            egi.text_at_pos(150, 13, maxTurnText)
            egi.text_at_pos(150, 26, maxSpeedText)
Exemple #26
0
 world = World(500, 500)
 # add one agent
 world.agents.append(Agent(world))
 world.prey.append(Target(world))
 # unpause the world ready for movement
 world.paused = False
 i = 0
 while not win.has_exit:
     win.dispatch_events()
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
     # show nice FPS bottom right (default)
     delta = clock.tick()
     world.update(delta)
     world.render()
     fps_display.draw()
     egi.text_at_pos(0, 95, "Bullet Type:")
     egi.text_at_pos(80, 95, str(world.bull_type))
     for bull in world.bullets:
         if bull.tagged is True:
             world.bullets.remove(bull)
         elif bull.pos.x >= 900.00 or bull.pos.y >= 900.00:
             world.bullets.remove(bull)
     if world.auto_fire is True and world.prey[0].hit is False:
         world.bullets.append(Weapon(world, world.bull_type))
     for t in world.prey:
         if i < 100:
             i += 1
         else:
             t.hit = False
             i = 0
     # swap the double buffer
Exemple #27
0
    world.agents.append(Agent(world))
    world.agents.append(Agent(world))
    world.agents.append(Agent(world))
    world.agents.append(Agent(world))
    world.agents.append(Agent(world))
    world.agents.append(Agent(world))
    world.agents.append(Agent(world))
    world.agents.append(Agent(world))
    world.agents.append(Agent(world))
    # unpause the world ready for movement
    world.paused = False

    while not win.has_exit:
        win.dispatch_events()
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        # show nice FPS bottom right (default)
        egi.text_at_pos(0, 50, "Seperation:")
        egi.text_at_pos(75, 50, str(world.seperation))
        egi.text_at_pos(0, 65, "Cohesion:")
        egi.text_at_pos(75, 65, str(world.cohesion))
        egi.text_at_pos(0, 80, "Alignmnet:")
        egi.text_at_pos(75, 80, str(world.alignmnet))
        egi.text_at_pos(0, 95, "radius:")
        egi.text_at_pos(45, 95, str(world.radius))
        delta = clock.tick()
        world.update(delta)
        world.render()
        fps_display.draw()
        # swap the double buffer
        win.flip()
Exemple #28
0
def draw_weighting():
    weightingtext = '\n'.join(key + ' : ' + str(value) for key, value in BEHAVIOUR_WEIGHTS.items())
    egi.white_pen()
    egi.text_at_pos(0, world.cy-100, weightingtext)
Exemple #29
0
def render_stats(world):
    egi.text_color((1.0, 1.0, 1.0, 1))
    depthy = -40
    if not world.inputgroup == 0:
        if world.inputgroup == 1:
            egi.text_at_pos(10, depthy,
                            '(Q/W) Game Scale = ' + str(Agent.floatScale))
            egi.text_at_pos(10, depthy - 20,
                            '(E/R) Max Speed = ' + str(Agent.max_speed))
            egi.text_at_pos(10, depthy - 40,
                            '(A/S) Max Force = ' + str(Agent.max_force))
            egi.text_at_pos(10, depthy - 60, '(D/F) Mass = ' + str(Agent.mass))
            egi.text_at_pos(10, depthy - 80,
                            '(Z/X) Friction = ' + str(Agent.friction))
            egi.text_at_pos(10, depthy - 100,
                            '(C/V) Panic Distance = ' + str(Agent.panicDist))
        elif world.inputgroup == 2:
            egi.text_at_pos(
                10, depthy,
                '(Q/W) Waypoint Threshold = ' + str(Agent.waypoint_threshold))
            egi.text_at_pos(10, depthy - 20,
                            '(A) Waypoint Loop = ' + str(Agent.loop))
            egi.text_at_pos(10, depthy - 40, '(S) Randomize Path')
        elif world.inputgroup == 3:
            egi.text_at_pos(
                10, depthy,
                '(Q/W) Wander Distance = ' + str(Agent.wander_dist))
            egi.text_at_pos(
                10, depthy - 20,
                '(E/R) Wander radius = ' + str(Agent.wander_radius))
            egi.text_at_pos(
                10, depthy - 40,
                '(A/S) Wander jitter = ' + str(Agent.wander_jitter))
        elif world.inputgroup == 4:
            egi.text_at_pos(10, depthy,
                            '(Q/W) Cohesion Weight = ' + str(Agent.cohesive))
            egi.text_at_pos(
                10, depthy - 20,
                '(E/R) Seperation Weight = ' + str(Agent.seperated))
            egi.text_at_pos(10, depthy - 40,
                            '(A/S) Alightnment Weight = ' + str(Agent.aligned))
            egi.text_at_pos(10, depthy - 60,
                            '(D/F) Wander Weight = ' + str(Agent.GroupWander))
            egi.text_at_pos(
                10, depthy - 80,
                '(Z/X) Cohesive Range = ' + str(Agent.cohesiveRange))
            egi.text_at_pos(
                10, depthy - 100,
                '(C/V) Seperation Range = ' + str(Agent.seperationRange))
            egi.text_at_pos(
                10, depthy - 120,
                '(T/G) Alignment Range = ' + str(Agent.alignmentRange))
        if not world.inputgroup == 5:
            egi.text_at_pos(10, depthy - 150, '(Y) Show agent info')
            egi.text_at_pos(10, depthy - 170, '(P) Pause')
            egi.text_at_pos(10, depthy - 190, '(O) Next frame (while paused)')
            egi.text_at_pos(10, depthy - 230, '(J) Add Agent')
            egi.text_at_pos(10, depthy - 250, '(K) Add 10 Agents')
    if not world.inputgroup == 5:
        egi.text_at_pos(10, depthy - 210, '(H) Flick through menu')