Example #1
0
	def init( self ):
		number = 0
		item = None

		self.locked = 0
		self.enableLighting()
		self.enableSmoothDrawing()
		self.enableFastPhysics()
		self.setFastPhysicsIterations( 5 )
		self.floor = breve.createInstances( breve.Floor, 1 )
		self.floor.catchShadows()
		self.floor.setET( 0.900000 )
		self.floor.setMu( 1.000000 )
		self.setBackgroundTextureImage( breve.createInstances( breve.Image, 1 ).load( 'images/clouds.png' ) )
		self.enableReflections()
		self.setBackgroundColor( breve.vector( 0.400000, 0.600000, 0.900000 ) )
		self.monkeys = breve.createInstances( breve.Monkeys, 15 )
		for item in self.monkeys:
			item.setNumber( number )
			number = ( number + 1 )


		self.pickDrivers()
		self.lockMenu = self.addMenu( '''Lock Driver''', 'toggleDriverLock' )
		self.addMenuSeparator()
		self.addMenu( '''Save Current Genome''', 'saveCurrentGenome' )
		self.addMenu( '''Load Into Current Genome''', 'loadIntoCurrentGenome' )
		self.schedule( 'changeDrivers', ( self.getTime() + 20.000000 ) )
		self.displayCurrentDriver()
		self.wigglyThing = breve.createInstances( breve.Creature, 1 )
		self.wigglyThing.initWith( self.seats[ 0 ].getGenome() )
		self.wigglyThing.move( breve.vector( 0, 3, 0 ) )
		self.offsetCamera( breve.vector( -3, 3, 13 ) )
		self.watch( self.wigglyThing )
Example #2
0
	def init( self ):
		number = 0
		item = None

		self.locked = 0
		self.setRandomSeedFromDevRandom()
		self.enableFastPhysics()
		self.setIntegrationStep( 0.004000 )
		self.enableLighting()
		self.moveLight( breve.vector( 0, 10, 0 ) )
		self.setBackgroundColor( breve.vector( 0.400000, 0.600000, 0.900000 ) )
		self.setMountainSkybox()
		self.terrain = breve.createInstances( breve.Terrain, 1 )
		self.terrain.generate( 0.340000, 40 )
		self.terrain.setScale( 6 )
		self.terrain.setValleyColor( breve.vector( 0.350000, 0.800000, 0.450000 ) )
		self.terrain.setPeakColor( breve.vector( 1.000000, 1.000000, 1.000000 ) )
		self.enableShadowVolumes()
		self.walker = breve.createInstances( breve.Creature, 1 )
		self.walker.move( breve.vector( 0, 6, 0 ) )
		self.offsetCamera( breve.vector( 3, 13, -13 ) )
		self.watch( self.walker )
		self.monkeys = breve.createInstances( breve.Monkeys, 15 )
		for item in self.monkeys:
			item.setNumber( number )
			number = ( number + 1 )


		self.pickDrivers()
		self.lockMenu = self.addMenu( '''Lock Driver''', 'toggleDriverLock' )
		self.addMenuSeparator()
		self.addMenu( '''Save Current Genome''', 'saveCurrentGenome' )
		self.addMenu( '''Load Into Current Genome''', 'loadIntoCurrentGenome' )
		self.schedule( 'changeDrivers', ( self.getTime() + 20.000000 ) )
		self.displayCurrentDriver()
Example #3
0
	def init( self ):
		floor = None

		self.enableLighting()
		self.moveLight( breve.vector( 0, 20, 20 ) )
		self.autoCameraMenu = self.addMenu( '''Automatic Camera Control''', 'setAutoCameraMode' )
		self.manualCameraMenu = self.addMenu( '''Manual Camera Control''', 'setManualCameraMode' )
		self.autoCameraMode = 1
		self.autoCameraMenu.check()
		self.manualCameraMenu.uncheck()
		self.addMenuSeparator()
		self.addMenu( '''Flock Nicely''', 'flockNicely' )
		self.addMenu( '''Randomize and Evolve''', 'randomizeAndEvolve' )
		self.addMenu( '''Evolve without Randomizing''', 'evolveWithoutRandomizing' )
		self.addMenuSeparator()
		self.drawEveryFrameMenu = self.addMenu( '''Draw Every Frame''', 'setDrawEveryFrame' )
		self.skipFramesIfNecessaryMenu = self.addMenu( '''Skip Frames if Necessary''', 'setSkipFramesIfNecessaryMenu' )
		self.drawEveryFrameMenu.check()
		self.skipFramesIfNecessaryMenu.uncheck()
		self.cloudTexture = breve.createInstances( breve.Image, 1 ).load( 'images/clouds.png' )
		self.setBackgroundTextureImage( self.cloudTexture )
		floor = breve.createInstances( breve.Stationary, 1 )
		floor.register( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 100, 2, 100 ) ), breve.vector( 0, -5, 0 ) )
		floor.catchShadows()
		self.birds = breve.createInstances( breve.Birds, 60 )
		self.feeders = breve.createInstances( breve.Feeders, 2 )
		self.randomizeAndEvolve()
		self.offsetCamera( breve.vector( 5, 1.500000, 6 ) )
		self.enableShadows()
		self.disableText()
	def crossover_push(self, newBird, parent1, parent2):
		newBird.pushInterpreter.clearStacks()
		error = True

		c1 = breve.createInstances( breve.PushProgram, 1 )
		c2 = breve.createInstances( breve.PushProgram, 1 )
		c3 = breve.createInstances( breve.PushProgram, 1 )
		parent1.pushInterpreter.copyCodeStackTop( c1 )
		if ( c1.getSize() > 0 ):
			parent2.pushInterpreter.copyCodeStackTop( c2 )
			if ( c2.getSize() > 0 ):
				c3.crossover( c1, c2, newBird.pushInterpreter )

				if len(c3.getList()) > 0:
					print "diversity", parent1.pushCode.getTopLevelDifference(parent2.pushCode)
					print "diversity", parent1.pushCode.getTopLevelDifference(c3)
					print "diversity", parent2.pushCode.getTopLevelDifference(c3)

					newBird.pushInterpreter.pushCode( c3 )
					a = self.object3.pushCode
					self.object3.pushCode = c3
					c3 = a
					error = False

		if error:
			newBird.pushInterpreter.pushCode( c1 )
			a = self.object3.pushCode
			self.object3.pushCode = c1
			c1 = a

		breve.deleteInstances( c1 )
		breve.deleteInstances( c2 )
		breve.deleteInstances( c3 )
	def addBlockSensor( self, location , axis, ang, function, lowerBound = -1000, upperBound = 1000):
		'''Adds a sensor at location on the vehicle.  This method returns the sensor which is created, a OBJECT(BraitenbergSensor).  You'll use the returned object to connect it to the vehicle's wheels.'''

		''' This sensor only interacts  with blocks. '''
		joint = None
		sensor = None

		sensor = breve.createInstances( breve.BraitenbergBlockSensor, 1 )
		sensor.setShape( self.sensorShape )
		
		activationFunction = breve.createInstances(breve.BraitenbergActivationObject, 1)
		activationFunction.setType(function)
		activationFunction.setLowerBound(lowerBound)
		activationFunction.setUpperBound(upperBound)
		sensor.setActivationObject( activationFunction )
		
		joint = breve.createInstances( breve.RevoluteJoint, 1 )
		joint.setRelativeRotation( axis, ang )
			
		joint.link( breve.vector( 1, 0, 0 ), location, breve.vector( 0, 0, 0 ), sensor, self.bodyLink )
		joint.setDoubleSpring( 300, 0.010000, -0.010000 )
		self.addDependency( joint )
		self.addDependency( sensor )
		sensor.setColor( breve.vector( 0, 0, 0 ) )
		self.sensors.append( sensor )
		return sensor
	def init( self ):
		filename = "3c.txt"
		f = open(filename, "r")
	
		#Reads the limits of the maze.
	
		#Reads the maze itself.
		text = f.readlines()

		#Iterates over the lines.
		for i in xrange(len(text)):
			for t in xrange(len(text[i])):
				if (text[i][t] == "o"):
					self.obj = breve.createInstances ( breve.BraitenbergOlfaction, 1)
					self.obj.move( breve.vector(i*3, 0, t*2))  
					self.obj.setIntensity(1.5)
				elif (text[i][t] == "s"):
					self.obj = breve.createInstances ( breve.BraitenbergSound, 1)
					self.obj.move( breve.vector(i*3, 0, t*2))  
					self.obj.setIntensity(1.5)
				elif (text[i][t] == "l"):
					self.obj = breve.createInstances ( breve.BraitenbergLight, 1)
					self.obj.move( breve.vector(i*3, 0, t*2))  
					self.obj.setIntensity(1.5)
				elif (text[i][t] == "b"):
					self.obj = breve.createInstances ( breve.BraitenbergBlock, 1)
					self.obj.move( breve.vector(i*3, 0, t*2))
					
		
		'''Creates the first vehicle.'''
		self.vehicle = breve.createInstances( breve.Braitenberg3c, 1 )
		self.watch( self.vehicle )
			
		self.vehicle.move(breve.vector(10,1,60))
		self.vehicle.rotate(breve.vector(0,1,0),0)
Example #7
0
 def init(self):
     self.shape = breve.createInstances(breve.Cube, 1).initWith(breve.vector(1000, 5, 1000))
     self.move(breve.vector(0, -2.500000, 0))
     self.setShape(self.shape)
     self.setColor(breve.vector(0.350000, 0.800000, 0.450000))
     self.catchShadows()
     self.setTextureImage(breve.createInstances(breve.Image, 1).load("images/noise.png"))
Example #8
0
	def crossover( self ):
		c3 = None
		c2 = None
		c1 = None

		c1 = breve.createInstances( breve.PushProgram, 1 )
		c2 = breve.createInstances( breve.PushProgram, 1 )
		c3 = breve.createInstances( breve.PushProgram, 1 )
		self.pushInterpreter.copyCodeStackTop( c1 )
		if ( c1.getSize() > 0 ):
			self.pushInterpreter.popCodeStack()
			self.pushInterpreter.copyCodeStackTop( c2 )
			if ( c2.getSize() > 0 ):
				self.pushInterpreter.popCodeStack()
				c3.crossover( c1, c2, self.pushInterpreter )
				self.pushInterpreter.pushCode( c3 )

			else:
				self.pushInterpreter.pushCode( c1 )




		breve.deleteInstances( c1 )
		breve.deleteInstances( c2 )
		breve.deleteInstances( c3 )
Example #9
0
    def init(self):
        # create the light for the vehicle to follow
        self.light = breve.createInstances(breve.BraitenbergLight, 1)
        self.light.move(breve.vector(10, 1, 0))

        # create the vehicle
        self.vehicle = breve.createInstances(breve.BraitenbergVehicle, 1)
        self.vehicle.move(breve.vector( 0, 2, 5))

        # create and add the wheels to the vehicle
        self.leftWheel = self.vehicle.addWheel(breve.vector(-0.500000, 0, -1.500000))
        self.rightWheel = self.vehicle.addWheel(breve.vector( -0.500000, 0, 1.500000))

        # make sure the wheels don't spin if there are no lights around
        self.leftWheel.setNaturalVelocity(1) 
        self.rightWheel.setNaturalVelocity(1)

        # create and attach sensors to the vehicle
        self.rightSensor = self.vehicle.addSensor(breve.vector(2.000000, 0.400000, 1.500000))
        self.leftSensor = self.vehicle.addSensor(breve.vector(2.000000, 0.400000, -1.500000))

        # link the sensors to the wheels
        self.leftSensor.link(self.leftWheel)
        self.rightSensor.link(self.rightWheel)
        
        # set the sensor bias
        self.leftSensor.setBias(-.125)
        self.rightSensor.setBias(-.125)

        # make sure we watch our vehicle
        self.watch(self.vehicle)
	def init( self ):
		'''Initializes the Control object by setting up default values for  variables such as the size of the integration timestep.  Subclasses of Control may override these defaults in their own init functions.'''

		self.cameraPointer = breve.breveInternalFunctionFinder.getMainCameraPointer( self)
		self.stationaryTexture = breve.createInstances( breve.Image, 1 )
		self.stationaryTexture.load( 'images/checkerpink.png' )
		self.camera = breve.createInstances( breve.Camera, 1 )
		self.addDependency( self.camera )
		self.camera.setCameraPointer( self.cameraPointer )
		self.shadowCatcherDefined = 0
		self.setIntegrationStep( 0.005000 )
		self.setIterationStep( 0.050000 )
		self.enableDrawEveryFrame()
		self.setBackgroundColor( breve.vector( 0.500000, 0.700000, 1.000000 ) )
		self.setFogColor( breve.vector( 0.800000, 0.800000, 0.800000 ) )
		self.xRot = 0.000000
		self.yRot = 0.000000
		self.moveLight( breve.vector( 0, 0, 0 ) )
		self.pointCamera( breve.vector( 0, 0, 0 ), breve.vector( 0, 0, 30 ) )
		self.setBackgroundScrollRate( 0.001000, 0.000100 )
		self.lightMenu = self.addMenu( '''Use Lighting''', 'toggleLighting' )
		self.drawMenu = self.addMenu( '''Use Smooth Shading''', 'toggleSmooth' )
		self.shadowMenu = self.addMenu( '''Draw Shadows''', 'toggleShadows' )
		self.fogMenu = self.addMenu( '''Draw Fog''', 'toggleFog' )
		self.reflectMenu = self.addMenu( '''Draw Reflections''', 'toggleReflections' )
		self.blurMenu = self.addMenu( '''Use Motion Blur''', 'toggleBlur' )
		self.addMenuSeparator()
		self.movieMenu = self.addMenu( '''Record Movie to "simulation.mpeg"''', 'toggleRecordingToMovie' )
		self.addMenu( '''Save Snapshot to "simulation.png"''', 'saveSnapshotToFile' )
		self.enableSmoothDrawing()
		self.disableLighting()
		self.addMenuSeparator()
		self.genericShape = breve.createInstances( breve.Sphere, 1 ).initWith( 1.000000 )
		self.genericLinkShape = breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 0.100000, 1, 0.100000 ) )
	def init( self ):
		self.vehicle = breve.createInstances( breve.BraitenbergVehicle, 1 )
		self.vehicle.move(breve.vector(2,1,10))
		self.vehicle.rotate(breve.vector(0,1,0),3.14)
		self.watch( self.vehicle )

		self.block = breve.createInstances( breve.BraitenbergSound,1)
		self.block.move( breve.vector(2,1,15))
		self.block = breve.createInstances( breve.BraitenbergSound,1)
		self.block.move( breve.vector(-18,1,15))


		'''Adds wheels and sensors.'''
		lWheel = self.vehicle.addWheel (breve.vector( 0, 0, -1.5 ))
		rWheel = self.vehicle.addWheel (breve.vector( 0, 0, 1.5 ))

		#Correct values
		lFrontSensor = self.vehicle.addSensor (breve.vector( 2.2, 0.1, -1.4 ), breve.vector( 0.75, 0, 1 ),1, "Sounds")
		rFrontSensor = self.vehicle.addSensor (breve.vector( 2.2, 0.1, 1.4 ),breve.vector( -0.75, 0, 1 ),1, "Sounds")
		lFrontSensor.setActivationType("gauss")
		rFrontSensor.setActivationType("gauss")
		
		'''Links the sensors to the wheels.'''
		lFrontSensor.link(rWheel)
		rFrontSensor.link(lWheel)

		#Correct values
		lWheel.setNaturalVelocity(1.16)
		rWheel.setNaturalVelocity(1.16)

		#Correct values
		lFrontSensor.setBias(0.005)
		rFrontSensor.setBias(0.005)
	
		breve.myBraitenbergControl = myBraitenbergControl
 def init( self ):
     self.vehicle = breve.createInstances( breve.BraitenbergVehicle, 1 )
     self.watch( self.vehicle )
     
     #Wheels and Sensors
     front_left = self.vehicle.addWheel(breve.vector(0,0,-1.5))
     front_right = self.vehicle.addWheel(breve.vector(0,0,1.5))
     
     leftLightSensor = self.vehicle.addSensor(breve.vector(1.82, 0.1, -1.8),breve.vector( 1, 0, 0 ),1,"Lights")
     rightLightSensor = self.vehicle.addSensor(breve.vector(1.82, 0.1, 1.8),breve.vector( -1, 0, 0 ),1,"Lights")
     
     leftLightSensor.link(front_right)
     rightLightSensor.link(front_left)
     leftLightSensor.setUpperBound(0.028)
     rightLightSensor.setUpperBound(0.028)
     leftLightSensor.setUpperX(0.07811)
     rightLightSensor.setUpperX(0.07811)
     
     light = breve.createInstances( breve.BraitenbergLight, 1 )
     light.move( breve.vector (0, 1, 7.5))
     light.setIntensity(1.5)
     light = breve.createInstances( breve.BraitenbergLight, 1 )
     light.move( breve.vector (0, 1, -9))
     light.setIntensity(1.5)
     
     front_left.setNaturalVelocity(0.950)
     front_right.setNaturalVelocity(0.950)
     
         
     breve.myBraitenbergControl = myBraitenbergControl
Example #13
0
	def initShape( self, chromosomes ):
		self.bodyWidth = 4
		self.bodyDepth = 1 
		self.bodyHeight = 4

		footWidth = 2.5
		self.footHeight = 0.3

		self.legLength = 2
		self.legWidth = 0.5

		self.startingHeight = 2 * self.legLength + self.bodyHeight

		lowerLegShape = breve.Cube().initWith( breve.vector( self.legWidth , self.legWidth , self.legLength )) 
		upperLegShape = breve.Cube().initWith( breve.vector( self.legWidth , self.legWidth , self.legLength ))
		footShape = breve.Cube().initWith( breve.vector( footWidth, footWidth, self.footHeight ))
		bodyShape = breve.Cube().initWith( breve.vector( self.bodyWidth, self.bodyDepth, self.bodyHeight ) )
	
		self.bodyLink = breve.Link()
		self.lowerLegs = breve.createInstances( breve.Links, NBR_LEGS )
		self.upperLegs = breve.createInstances( breve.Links, NBR_LEGS )
		self.feet = breve.createInstances( breve.Links, NBR_LEGS )

		[ link.setShape(upperLegShape) for link in self.upperLegs ]
		[ link.setShape(lowerLegShape) for link in self.lowerLegs ]
		[ link.setShape(footShape) for link in self.feet ]

		self.bodyLink.setShape( bodyShape )

		#Used for resetting the walker position
		self.allLinks = [self.bodyLink] + self.upperLegs + self.lowerLegs + self.feet
	def addBlockSensor( self, location , axis, ang, viewAngle, function, name = "BlockSensor"):
		'''Adds a sensor at location on the vehicle.  This method returns the sensor which is created, a OBJECT(BraitenbergSensor).  You'll use the returned object to connect it to the vehicle's wheels.'''

		''' This sensor only interacts  with blocks. '''
		joint = None
		sensor = None

		sensor = breve.createInstances( breve.BraitenbergBlockSensor, 1 )
		sensor.setShape( self.sensorShape )
		
		activationFunction = breve.createInstances(breve.BraitenbergActivationObject, 1)
		activationFunction.setType(function)
		sensor.setActivationObject( activationFunction )
		sensor.activationObject.setName( name)
		
		'''Sets the angle of the sensor'''
		sensor.setSensorAngle(viewAngle)
		
		joint = breve.createInstances( breve.FixedJoint, 1 )
		joint.setRelativeRotation( axis, ang )
			
		joint.link( location, breve.vector( 0, 0, 0 ), sensor, self.bodyLink )
		joint.setDoubleSpring( 300, 0.010000, -0.010000 )
		self.addDependency( joint )
		self.addDependency( sensor )
		sensor.setColor( breve.vector( 0, 0, 0 ) )
		self.sensors.append( sensor )
		return sensor
	def dropDead(self, corpse=True):
		if corpse:
			c = breve.createInstances( breve.Corpse, 1 )
			c.move( self.getLocation() )
			c.setColor (self.getColor() )
			c.energy = self.energy
			#c.lastScale = self.lastScale
			c.shape = self.shape
			c.setShape( c.shape )
			c.myPoint( breve.vector( 0, 1, 0 ), self.getVelocity())
			
			self.lastScale = 1
			self.shape = breve.createInstances( breve.myCustomShape, 1 )
			self.setShape( self.shape )
			self.adjustSize()


		self.setColor(breve.vector(0,0,0))
		#just to don't overlap the animation 
		self.changePos(-9999,9999)
		self.changeVel(0,0)
		self.changeAccel(0,0)
		self.age = 0
		self.energy = 1
		self.isAlive = False
		self.controller.pollPredators.append(self)
		self.controller.numDeadPredators += 1
	def addSensor( self, location , axis, angle, viewAngle, type, function, name = "Sensor"):
		'''Adds a sensor at location on the vehicle.  This method returns the sensor which is created, a OBJECT(BraitenbergLightSensor).  You'll use the returned object to connect it to the vehicle's wheels.'''

		'''This sensor can interact with light, smell and sound. The final type of the sensor is defined by a method of the sensor itself.'''
		joint = None
		sensor = None

		sensor = breve.createInstances( breve.BraitenbergSensor, 1 )
		sensor.setShape( self.sensorShape )
		
		activationFunction = breve.createInstances(breve.BraitenbergActivationObject, 1)
		activationFunction.setType(function)
		sensor.setActivationObject( activationFunction )
		sensor.activationObject.setName( name)
		
		'''Sets the angle of the sensor'''
		sensor.setSensorAngle(viewAngle)
		
		joint = breve.createInstances( breve.FixedJoint, 1 )
		joint.setRelativeRotation( axis, angle )
			
		joint.link( location, breve.vector( 0, 0, 0 ), sensor, self.bodyLink )
		joint.setDoubleSpring( 300, 0.010000, -0.010000 )
		self.addDependency( joint )
		self.addDependency( sensor )
		
		sensor.setType(type)
			
		self.sensors.append( sensor )
		self.sensorsList.append( sensor )
		return sensor
Example #17
0
	def iterate(self):
		self.age = self.getAge()

		if self.age >= BIRTH_TIME:
			sex = random()

			if sex < 0.5: #TODO restore 0.5
				from Male import MaleVehicle
				child = breve.createInstances(MaleVehicle, 1)

			else:
				from Female import FemaleVehicle
				child = breve.createInstances(FemaleVehicle, 1)

			child.move(self.getLocation())
			child.rotate(d.UP, math.pi*2*random())

			if self.getController().unwatch(self):
				self.getController().watch(child) # Continue to watch the child (if the egg was the camera target)

			breve.deleteInstances(self)
			return
		
		shape = breve.createInstances(breve.Sphere, 1).initWithSphere(self.age/BIRTH_TIME*(MAX_SIZE-MIN_SIZE)+MIN_SIZE)
		self.setShape(shape)
		self.offset(breve.vector(0,0.01,0))
Example #18
0
	def initJoints( self ):
		self.upperLegJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)
		self.lowerLegJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)
		self.footJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)

		self.allJoints = self.upperLegJoints + self.lowerLegJoints + self.footJoints
		map(self.addDependency, self.allJoints)

		left = breve.vector( self.bodyWidth / 2.0, 0, self.bodyHeight/2 )
		right = breve.vector( -self.bodyWidth / 2.0, 0, self.bodyHeight/2 )
		bodyOffsets = [left, right]

		legOffset = breve.vector( 0, 0, self.legLength/2.0)
		footOffset = breve.vector( 0, 0, self.footHeight/2.0)
		
		#bodyOffset specifies the point the joints links to on the body, 
		#and upperLegOffset specifies the point on the leg to link to.
		for i in range(0, NBR_LEGS):
			self.upperLegJoints[i].link( ROTATION_NORMAL, bodyOffsets[i], -legOffset, self.upperLegs[ i ], self.bodyLink )
			self.lowerLegJoints[i].link( ROTATION_NORMAL, legOffset, -legOffset, self.lowerLegs[ i ], self.upperLegs[ i ] )
			self.footJoints[i].link( ROTATION_NORMAL, legOffset + footOffset, breve.vector( 0, 0, 0 ), self.feet[ i ], self.lowerLegs[ i ] )
		
		self.upperLegJoints.setDoubleSpring( 700, 0.800000, -0.800000 )
		self.lowerLegJoints.setDoubleSpring( 700, 0.800000, -0.800000 )
		self.footJoints.setDoubleSpring( 999, 0.400000, -0.400000 ) #kolla

		[ joint.setStrengthLimit( 500 ) for joint in self.allJoints ] #400 innan
		self.setRoot( self.bodyLink )
    def init( self ):
        self.vehicle = breve.createInstances( breve.BraitenbergVehicle, 1 )
        self.watch( self.vehicle )
        self.vehicle.move(breve.vector(2,1,10))
        self.vehicle.rotate(breve.vector(0,1,0),3.14)
        self.block = breve.createInstances( breve.BraitenbergSound,1)
        self.block.move( breve.vector(2,1,15))
        self.block = breve.createInstances( breve.BraitenbergSound,1)
        self.block.move( breve.vector(-20,1,15))
        


        #Wheels and Sensors
        front_left = self.vehicle.addWheel(breve.vector(0,0,-1.5))
        front_right = self.vehicle.addWheel(breve.vector(0,0,1.5))
        
        leftSoundSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),breve.vector( 0.75, 0, 1 ), 1, "Sounds")
        rightSoundSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),breve.vector( -0.75, 0, 1 ), 1, "Sounds")
        leftSoundSensor.setActivationType("gauss")
        rightSoundSensor.setActivationType("gauss")
        leftSoundSensor.setGauss(0.20, 0.101)
        rightSoundSensor.setGauss(0.20, 0.101)
        leftSoundSensor.link(front_right)
        rightSoundSensor.link(front_left)
        
        front_left.setNaturalVelocity(1.2)
        front_right.setNaturalVelocity(1.2)
        
        leftSoundSensor.setBias(0.12)
        rightSoundSensor.setBias(0.12)
        
            
        breve.myBraitenbergControl = myBraitenbergControl
Example #20
0
	def init( self ):
		brush = None

		self.disableText()
		self.vel = ( 1.000000 + breve.randomExpression( 9 ) )
		self.acc = breve.randomExpression( 1000 )
		self.radius = ( 1.000000 + breve.randomExpression( 5 ) )
		if ( self.getArgumentCount() == 2 ):
			self.file = self.getArgument( 1 )

		else:
			self.file = 'images/jon.png'

		self.image = breve.createInstances( breve.Image, 1 ).load( self.file )
		self.blur = 0.992000
		if ( self.blur > 0.992000 ):
			self.blur = 0.992000

		self.blur = 1.000000
		self.setBackgroundColor( breve.vector( 0, 0, 0 ) )
		self.enableBlur()
		self.setBlurFactor( self.blur )
		self.radius = ( self.radius * ( self.image.getWidth() / 300.000000 ) )
		self.vel = ( self.vel * ( self.image.getWidth() / 300.000000 ) )
		self.acc = ( self.acc * ( self.image.getWidth() / 300.000000 ) )
		self.shape = breve.createInstances( breve.Sphere, 1 ).initWith( self.radius )
		brush = breve.createInstances( breve.Image, 1 ).load( 'images/brush.png' )
		breve.createInstances( breve.Painters, 200 ).setBitmapImage( brush )
		self.zoom = ( self.image.getWidth() + 10 )
		self.offsetCamera( breve.vector( 0, 0, self.zoom ) )
		self.setZClip( ( self.zoom + 100 ) )
Example #21
0
	def initShape( self, chromosomes ):
		self.bodyWidth = chromosomes[BODY_WIDTH]
		self.bodyLength = self.bodyWidth # might remove

		footWidth = chromosomes[FOOT_WIDTH]
		self.footHeight = FOOT_HEIGHT

		self.upperLegLength = chromosomes[UPPER_LEG_WIDTH]
		self.lowerLegLength = chromosomes[LOWER_LEG_WIDTH]

		self.startingHeight = self.upperLegLength + self.lowerLegLength + self.footHeight + 5

		lowerLegShape = breve.Cube().initWith( breve.vector( LEG_WIDTH , LEG_WIDTH , self.lowerLegLength )) 
		upperLegShape = breve.Cube().initWith( breve.vector( LEG_WIDTH , LEG_WIDTH , self.upperLegLength ))
		footShape = breve.Cube().initWith( breve.vector( footWidth, footWidth, self.footHeight ))
		bodyShape = breve.Cube().initWith( breve.vector( self.bodyWidth, self.bodyWidth, 0.400000 ) )
	
		self.bodyLink = breve.Link()
		self.lowerLegs = breve.createInstances( breve.Links, NBR_LEGS )
		self.upperLegs = breve.createInstances( breve.Links, NBR_LEGS )
		self.feet = breve.createInstances( breve.Links, NBR_LEGS )

		[ link.setShape(upperLegShape) for link in self.upperLegs ]
		[ link.setShape(lowerLegShape) for link in self.lowerLegs ]
		[ link.setShape(footShape) for link in self.feet ]

		self.bodyLink.setShape( bodyShape )

		#Used for resetting the walker position
		self.allLinks = [self.bodyLink] + self.upperLegs + self.lowerLegs + self.feet
Example #22
0
	def createPopulation( self ):
		n = 0

		if self.pop1:
			breve.deleteInstances( self.pop1 )

		if self.pop2:
			breve.deleteInstances( self.pop2 )

		self.pop1 = breve.createInstances( breve.PushGPIndividuals, self.populationSize )
		self.pop2 = breve.createInstances( breve.PushGPIndividuals, self.populationSize )
		self.pop1.setInterpreter( self.interpreter )
		self.pop2.setInterpreter( self.interpreter )
		self.current = self.pop1
		self.next = self.pop2
		if self.seed:
			self.pop1[ 0 ].parse( self.seed )

		n = 0
		while ( n < self.countFitnessCases() ):
			self._solutionCountsGeneration.append( 0.000000 )
			self._solutionCountsTotal.append( 0.000000 )
			self._solutionRatesGeneration.append( 0.000000 )
			self._solutionRatesTotal.append( 0.000000 )

			n = ( n + 1 )

		self.inited = 1
	def initJoints( self ):
		self.upperLegJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)
		self.lowerLegJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)

		self.allJoints = self.upperLegJoints + self.lowerLegJoints
		map(self.addDependency, self.allJoints)

		frontRight = breve.vector( self.bodyWidth / 2.0, -self.bodyWidth / 2.0, 0.2 )
		frontLeft = breve.vector( self.bodyWidth / 2.0, self.bodyWidth / 2.0, 0.2 )
		rearRight = breve.vector( -self.bodyWidth / 2.0, -self.bodyWidth / 2.0, 0.2 )
		rearLeft = breve.vector( -self.bodyWidth / 2.0, self.bodyWidth / 2.0, 0.2 )
		bodyOffsets = [frontLeft, frontRight, rearLeft, rearRight]

		upperLegOffset = breve.vector( 0, 0, self.upperLegLength/2.0)
		lowerLegOffset = breve.vector( 0, 0, self.lowerLegLength/2.0)
		
		#bodyOffset specifies the point the joints links to on the body, 
		#and upperLegOffset specifies the point on the leg to link to.
		for i in range(0, NBR_LEGS):
			self.upperLegJoints[i].link( ROTATION_NORMAL, bodyOffsets[i], -upperLegOffset, self.upperLegs[ i ], self.bodyLink )
			self.lowerLegJoints[i].link( ROTATION_NORMAL, upperLegOffset, -lowerLegOffset, self.lowerLegs[ i ], self.upperLegs[ i ] )

		self.upperLegJoints.setDoubleSpring( 700, 0.800000, -0.800000 )
		self.lowerLegJoints.setDoubleSpring( 700, 0.800000, -0.800000 )

		[ joint.setStrengthLimit( 500 ) for joint in self.allJoints ] #400 innan
		self.setRoot( self.bodyLink )
Example #24
0
	def init( self ):
		self.server = breve.createInstances( breve.NetworkServer, 1 )
		self.server.listen( 59175 )
		self.server.setUploadRecipient( self )
		self.emigrationPercent = 3
		self.transfer = breve.createInstances( breve.PushProgramTransporter, 1 )
		self.port = 59175
    def init(self):
        """"""

        print """ola"""
        breve.createInstances(breve.myAgents, 40)
        breve.createInstances(breve.Floor, 1).setSize(breve.vector(50, 0.100000, 50))
        self.pointCamera(breve.vector(0, 0, 0), breve.vector(0, 40, 80))
	def init( self ):
		self.setBackgroundColor( breve.vector( 0, 0, 0 ) )
		self.setDisplayTextColor( breve.vector( 1, 1, 1 ) )
		self.setIterationStep(1.0)

		self.object1 = breve.createInstances( breve.CustomObject, 1)
		self.object2 = breve.createInstances( breve.CustomObject, 1)
		self.object3 = breve.createInstances( breve.CustomObject, 1)

		self.object1.pushInterpreter.pushVector( breve.vector(1, 2, 3) )
		self.object2.pushInterpreter.pushVector( breve.vector(100, 200, 300) )

		# first run
		self.object1.pushInterpreter.clearStacks()
		self.object1.pushInterpreter.run( self.object1.pushCode )
		print self.object1.pushInterpreter.getVectorStackTop()

		self.object2.pushInterpreter.clearStacks()
		self.object2.pushInterpreter.run( self.object1.pushCode )
		print self.object2.pushInterpreter.getVectorStackTop()

		print self.object3.pushCode.getList()
		# crossover
		self.crossover_push(self.object3, self.object1, self.object2)

		print self.object1.pushCode.getList(), self.object1.pushCode.getSize()
		print self.object2.pushCode.getList(), self.object2.pushCode.getSize()
		print self.object3.pushCode.getList(), self.object3.pushCode.getSize()

		# second run
		'''self.object1.pushInterpreter.clearStacks()
Example #27
0
	def addRandomBirdsIfNecessary( self ):
		numBirds = 0

		numBirds = breve.length( breve.allInstances( "Birds" ) )
		if ( numBirds < 10 ):
			breve.createInstances( breve.Bird, 1 ).initializeRandomly()
			self.randomBirdsAdded = ( self.randomBirdsAdded + 1 )
			self.addRandomBirdsIfNecessary()
Example #28
0
    def __init__(self):
	breve.Stationary.__init__( self )
	self.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( self.controller.config.getValue("mapWidth"), self.controller.config.getValue("mapHeight"), 0.0001 )) )
	self.setTextureImage( breve.createInstances( breve.SongFieldTexture, 1 ) )
        self.setColor(breve.vector(0,0,0))
        self.setTransparency(1.)
	self.move( breve.vector( 0, 0, 0.006 ) )
        self.setRotation( breve.vector(0,0,1),1.5708)
	def iterate( self ):
		self.updateNeighbors()

		self.numBirds = 0
		for bird in breve.allInstances( "Bird" ):
			if bird.isAlive:
				bird.fly()
				self.numBirds += 1

		self.numPred = 0
		for predator in breve.allInstances( "Predator" ):
			if predator.isAlive:
				predator.fly()
				self.numPred += 1

		self.totalFoodSupply = 0
		for feeder in breve.allInstances( "Feeder" ):
			if feeder.rapid:
				feeder.rapidGrow()
				self.totalFoodSupply += feeder.VirtualEnergy
			self.totalFoodSupply += feeder.energy
			if feeder.energy <= 0 and not feeder.rapid:
				breve.deleteInstances( feeder )
		self.addRandomFeederIfNecessary(rapid=True)

		for corpse in breve.allInstances( "Corpse" ):
			corpse.changeColor()
			if sum(corpse.getColor()) <= 0:	
				breve.deleteInstances( corpse.shape )
				breve.deleteInstances( corpse )

		self.current_generation += 1
		if self.current_generation % self.breeding_season == 0:
			if breve.length(self.pollBirds) < self.breeding_inc*self.numBirds:
				new_birds = int(math.ceil(self.breeding_inc*self.numBirds)) - breve.length(self.pollBirds)
				breve.createInstances( breve.Bird, new_birds).dropDead(False)

			if breve.length(self.pollPredators) < self.breeding_inc*self.numPred:
				new_preds = int(math.ceil(self.breeding_inc*self.numPred)) - breve.length(self.pollPredators)
				breve.createInstances( breve.Predator, new_preds).dropDead(False)

			for i in range(int(math.ceil(self.breeding_inc*self.numBirds))):
				self.evolutionayAlgorithm(self.pollBirds)
			if self.numPred < self.numBirds*self.max_pop_predadors:
				for i in range(int(min(math.ceil(self.breeding_inc*self.numPred), self.numBirds*self.max_pop_predadors))):
					self.evolutionayAlgorithm(self.pollPredators)


		self.setDisplayText("Birds Alive: "+str(self.numBirds), xLoc = -0.950000, yLoc = -0.650000, messageNumber = 2, theColor = breve.vector( 1, 1, 1 ))
		self.setDisplayText("Predators Alive: "+str(self.numPred), xLoc = -0.950000, yLoc = -0.750000, messageNumber = 3, theColor = breve.vector( 1, 1, 1 ))
		self.setDisplayText("Dead Birds: "+str(self.num_dead_birds), xLoc = -0.950000, yLoc = -0.850000, messageNumber = 0, theColor = breve.vector( 1, 1, 1 ))
		self.setDisplayText("Dead Predators: "+str(self.num_dead_predators), xLoc = -0.950000, yLoc = -0.950000, messageNumber = 1, theColor = breve.vector( 1, 1, 1 ))

		# needed to move the agents with velocity and acceleration
		# also needed to detect collisions
		# print str(self.numBirdsBirth)

		breve.Control.iterate( self )
Example #30
0
	def init( self ):
		self.setIntegrationStep( 0.100000 )
		self.setIterationStep( 0.200000 )
		self.setBackgroundColor( breve.vector( 0, 0, 0 ) )
		self.setZClip( 1000 )
		self.disableText()
		self.lightmap = breve.createInstances( breve.Image, 1 ).load( 'images/lightmap.png' )
		self.particles = breve.createInstances( breve.Particles, 700 )
		self.pointCamera( breve.vector( 0, 0, 0 ), breve.vector( 0.000000, 0.000000, 100.000000 ) )
Example #31
0
	def dropDead(self, corpse=True):
		if corpse:
			c = breve.createInstances( breve.Corpse, 1 )
			c.move( self.getLocation() )
			c.setColor (self.getColor() )
			c.energy = self.energy
			#c.lastScale = self.lastScale
			c.adjustSize()
			c.myPoint( breve.vector( 0, 1, 0 ), self.getVelocity())

		self.setColor(breve.vector(0,0,0))
		#just to don't overlap the animation 
		self.changePos(-9999,9999)
		self.changeVel(0,0)
		self.changeAccel(0,0)
		self.age = 0
		self.energy = 1
		self.isAlive = False
		self.controller.pollPredators.append(self)
		self.controller.numDeadPredators += 1
Example #32
0
    def mutate(self, temp_object):
        print temp_object.pushCode.getList()

        c = breve.createInstances(breve.PushProgram, 1)
        temp_object.pushInterpreter.copyCodeStackTop(c)
        c.mutate(temp_object.pushInterpreter)
        self.object1.pushInterpreter.clearStacks()

        if len(c.getList()) > 0:
            print "diversity", temp_object.pushCode.getTopLevelDifference(c)
            print temp_object.pushCode.getTopLevelSize(), c.getTopLevelSize()

            temp_object.pushInterpreter.pushCode(c)
            b = temp_object.pushCode
            temp_object.pushCode = c
            breve.deleteInstances(b)
        else:
            temp_object.pushInterpreter.pushCode(temp_object.pushCode)

        print temp_object.pushCode.getList()
	def createPredators(self, num):
		# latin hypercubes
		if num < 1:
			return

		size = (int) (math.floor(num**0.5))
		num_segments_x = (self.maxX-self.minX)/size
		num_segments_y = (self.maxY-self.minY)/size

		for i in range(size):
			for j in range(size):
				x = random.uniform((float) (i*num_segments_x+self.minX), (float) ((i+1)*num_segments_x+self.minX))
				y = random.uniform((float)(j*num_segments_y+self.minY), (float)((j+1)*num_segments_y+self.minY))
				if breve.length(self.pollPredators) < 1:
					temp_predator = breve.createInstances( breve.Predator, 1)
					temp_predator.initializeRandomly(x, y, random.choice(["m", "f"]))
				else:
					temp_predator = self.pollPredators[0]
					self.pollPredators.remove(temp_predator)
					temp_predator.initializeRandomly(x, y, random.choice(["m", "f"]))
Example #34
0
	def createPreys(self, num):
		# latin hypercubes
		if num < 1:
			return

		size = (int) (math.floor(num**0.5))
		num_segments_x = (self.maxX-self.minX)/size
		num_segments_y = (self.maxY-self.minY)/size

		for i in range(size):
			for j in range(size):
				x = random.uniform((float) (i*num_segments_x+self.minX), (float) ((i+1)*num_segments_x+self.minX))
				y = random.uniform((float)(j*num_segments_y+self.minY), (float)((j+1)*num_segments_y+self.minY))
				if breve.length(self.pollPreys) < 1:
					temp_prey = breve.createInstances( breve.Prey, 1)
					temp_prey.initializeRandomly(x,y,'m')
				else:
					temp_prey = self.pollPreys[0]
					temp_prey.isAlive = True
					self.pollPreys.remove(temp_prey)
					temp_prey.initializeRandomly(x,y,'m')
    def autoSimplify(self, p):
        '''Programs generated through genetic programming are often complicated and  difficult to understand.  This method attempts to simplify an evolved   push program while maintaining the same fitness. <P> Each time this method is invoked, a random simplification is preformed  on the program p.  If the simplification does not harm the fitness, p is modified to contain the simplification, otherwise, nothing happens. This method should be called repeatedly -- perhaps 100 times or more  to aggressively simplify an unweildy program.'''

        newFitness = 0
        fitness = 0
        newProgram = None

        fitness = self.computeZeroDurationFitness(p)
        newProgram = breve.createInstances(breve.PushGPIndividual, 1)
        newProgram.copyFrom(p)
        if breve.randomExpression(1):
            newProgram.deleteRandomSubtree()
        else:
            newProgram.flattenRandomSubtree()

        newFitness = self.computeZeroDurationFitness(newProgram)
        if (newFitness == fitness):
            p.copyFrom(newProgram)

        breve.deleteInstances(newProgram)
        return p
	def initWith( self, xpos, zpos ):
		self.height = ( 2 * 0.250000 )
		self.front = breve.createInstances( breve.Mobile, 1 )
		self.front.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 1, self.height, 11 ) ) )
		self.front.move( breve.vector( ( xpos - 1 ), ( ( 0.500000 * self.height ) + 0.100000 ), ( ( zpos + ( 11.000000 / 2.000000 ) ) - 0.500000 ) ) )
		self.front.setColor( breve.vector( 0.000000, 0.600000, 0.100000 ) )
		self.front.enablePhysics()
		self.back = breve.createInstances( breve.Mobile, 1 )
		self.back.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 1, self.height, 11 ) ) )
		self.back.move( breve.vector( ( xpos + 11 ), ( ( 0.500000 * self.height ) + 0.100000 ), ( ( zpos + ( 11.000000 / 2.000000 ) ) - 0.500000 ) ) )
		self.back.setColor( breve.vector( 0.000000, 0.600000, 0.100000 ) )
		self.back.enablePhysics()
		self.left = breve.createInstances( breve.Mobile, 1 )
		self.left.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 11, self.height, 1 ) ) )
		self.left.move( breve.vector( ( xpos + ( ( 11.000000 / 2.000000 ) - 0.500000 ) ), ( ( 0.500000 * self.height ) + 0.100000 ), ( zpos - 1 ) ) )
		self.left.setColor( breve.vector( 0.000000, 0.600000, 0.100000 ) )
		self.left.enablePhysics()
		self.right = breve.createInstances( breve.Mobile, 1 )
		self.right.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 11, self.height, 1 ) ) )
		self.right.move( breve.vector( ( xpos + ( ( 11.000000 / 2.000000 ) - 0.500000 ) ), ( ( 0.500000 * self.height ) + 0.100000 ), ( zpos + 11 ) ) )
		self.right.setColor( breve.vector( 0.000000, 0.600000, 0.100000 ) )
		self.right.enablePhysics()
		return self
Example #37
0
    def setupTest(self, i):
        l = None
        low = breve.vector()
        lowest = 0

        for l in breve.allInstances("Links"):
            breve.deleteInstances(l.getShape())

        breve.deleteInstances(breve.allInstances("Links"))
        breve.deleteInstances(breve.allInstances("Joints"))
        if self.body:
            breve.deleteInstances(self.body)

        self.body = breve.createInstances(breve.MultiBody, 1)
        self.body.setRoot(self.parser.parseTopLevel(i.getGenome().getRoot()))
        self.body.disableSelfCollisions()
        self.addDependency(self.body)
        self.schedule('checkPenetration', (self.getTime() + 8.000000))
        self.setDisplayText('''Preparing to test %s...''' % (i), -0.950000,
                            -0.950000)
        self.updateText()
        self.running = 0
Example #38
0
    def iterate(self):
        if self.current_generation < 5000:
            if not self.movie:
                self.movie = breve.createInstances(breve.Movie, 1)
                self.movie.record('BOID_simple.mpeg')

            self.updateNeighbors()

            birds = breve.allInstances("Bird")

            for bird in birds:
                bird.fly()

            self.current_generation += 1

            # needed to move the agents with velocity and acceleration
            # also needed to detect collisions
            breve.Control.iterate(self)

        elif self.movie:
            self.movie.close()
            breve.deleteInstances(self.movie)
            self.movie = None
Example #39
0
    def init(self):
        self.startTexture = breve.createInstances(breve.Image,
                                                  1).load('images/star.png')
        self.flag = breve.createInstances(breve.Mobile, 1)
        self.flag.disablePhysics()
        self.flag.setBitmapImage(self.startTexture)
        self.flag.setColor(breve.vector(1, 1, 0))
        self.flag.setLabel('Start')
        self.flag.disableShadows()
        self.setMountainSkybox()
        self.blockTexture = breve.createInstances(breve.Image,
                                                  1).load('images/noise.png')
        self.floor = breve.createInstances(breve.Floor, 1)
        self.floor.setTextureImage(
            breve.createInstances(breve.Image, 1).load('images/ground.png'))
        self.floor.setColor(breve.vector(0.800000, 0.800000, 0.800000))
        self.setSkyboxImages([
            'images/MountainBoxFront.png', 'images/MountainBoxBack.png',
            'images/MountainBoxLeft.png', 'images/MountainBoxRight.png',
            'images/MountainBoxTop.png', 'images/MountainBoxBottom.png'
        ])
        self.enableFastPhysics()
        self.setFastPhysicsIterations(20)
        self.enableShadowVolumes()
        self.parser = breve.createInstances(breve.MorphologyParser, 1)
        self.ga = self.controller.dearchiveXml('breveCreatures.xml')

        if (not self.ga):
            self.ga = breve.createInstances(breve.SimsGA, 1)
            self.ga.setFitnessTestDuration(30)
            self.ga.setIndividualClass('SimsGAIndividual')
            self.ga.setPopulationSize(25)
            self.ga.setCrossoverPercent(30)
            self.ga.setMutationPercent(30)
            self.ga.setSpatialRadius(4)

        self.addDependency(self.ga)
        self.updateText()
Example #40
0
	def addSensor( self, location, rotation, direction, type ):
		'''Adds a sensor at location on the vehicle.  This method returns the sensor which is created, a OBJECT(BraitenbergSensor).  You'll use the returned object to connect it to the vehicle's wheels.'''

		joint = None
		sensor = None
		
		if type=="Lights":
			sensor = breve.createInstances( breve.BraitenbergLightSensor, 1 )
			sensor.setColor( breve.vector( 1, 0, 0 ) )
			
		elif type=="Smells":
			sensor = breve.createInstances( breve.BraitenbergSmellSensor, 1 )
			sensor.setColor( breve.vector( 0, 1, 0 ) )
		
		elif type=="Sounds":
			sensor = breve.createInstances( breve.BraitenbergSoundSensor, 1 )
			sensor.setColor( breve.vector( 0, 0, 1 ) )
		
		elif type=="Blocks":
			sensor = breve.createInstances( breve.BraitenbergBlockSensor, 1 )
			sensor.setColor( breve.vector( 0, 0, 0 ) )
		elif type=="Balls":
			sensor = breve.createInstances( breve.BraitenbergBallSensor, 1 )
			sensor.setColor( breve.vector( 0.5, 0.3, 0.1 ) )
		
		sensor.setType(type)
		sensor.setShape( self.sensorShape )
		joint = breve.createInstances(breve.FixedJoint,1)
		if direction>0:
			joint.setRelativeRotation(rotation, 1.570000)
		else:
			joint.setRelativeRotation(rotation, -1.570000)
		joint.link( location, breve.vector( 0, 0, 0 ), sensor, self.bodyLink )
		joint.setDoubleSpring( 300, 0.010000, -0.010000 )
		self.addDependency( joint )
		self.addDependency( sensor )
		self.sensors.append( sensor )
		return sensor
 def init(self):
     self.interpreter = breve.createInstances(breve.PushInterpreter, 1)
     self.interpreter.clearStacks()
     self.interpreter.readConfig('PushTest.config')
     self.interpreter.addInstruction(self, 'callback2', 'CALLBACKTEST2')
     self.interpreter.addInstruction(self, 'callback', 'CALLBACKTEST')
Example #42
0
    def addMenuSeparator(self):
        '''Adds a separator menu item--really just an empty menu item.'''

        return breve.createInstances(breve.MenuItem,
                                     1).createMenu('', self, '')
 def init(self):
     breve.createInstances(breve.PushTest, 1).go()
 def init(self):
     self.shape = breve.createInstances(breve.PolygonCone,
                                        1).initWith(5, 0.200000, 0.100000)
     self.setShape(self.shape)
     self.adjustSize()
     self.setNeighborhoodSize(10.0)
	def init( self ):
		self.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 1, 1, 1 ) ) )
		self.enablePhysics()
 def init(self):
     breve.createInstances(breve.CustomShapeAgent, 1)
     self.enableLighting()
    def iterate(self):
        self.updateNeighbors()

        self.numBirds = 0
        for bird in breve.allInstances("Bird"):
            if bird.isAlive:
                bird.fly()
                self.numBirds += 1

        self.numPred = 0
        for predator in breve.allInstances("Predator"):
            if predator.isAlive:
                predator.fly()
                self.numPred += 1

        self.totalFoodSupply = 0
        for feeder in breve.allInstances("Feeder"):
            if feeder.rapid:
                feeder.rapidGrow()
                self.totalFoodSupply += feeder.VirtualEnergy
            self.totalFoodSupply += feeder.energy
            if feeder.energy <= 0 and not feeder.rapid:
                breve.deleteInstances(feeder)
        self.addRandomFeederIfNecessary(rapid=True)

        for corpse in breve.allInstances("Corpse"):
            corpse.changeColor()
            if sum(corpse.getColor()) <= 0:
                breve.deleteInstances(corpse.shape)
                breve.deleteInstances(corpse)

        self.current_generation += 1
        if self.current_generation % self.breeding_season == 0:
            if breve.length(
                    self.pollBirds) < self.breeding_inc * self.numBirds:
                new_birds = int(math.floor(
                    self.breeding_inc * self.numBirds)) - breve.length(
                        self.pollBirds)
                breve.createInstances(breve.Bird, new_birds).dropDead(False)

            if breve.length(
                    self.pollPredators) < self.breeding_inc * self.numPred:
                new_preds = int(math.floor(
                    self.breeding_inc * self.numPred)) - breve.length(
                        self.pollPredators)
                breve.createInstances(breve.Predator,
                                      new_preds).dropDead(False)

            for i in range(
                    int(math.floor(self.breeding_inc * self.numBirds)) / 2):
                self.evolutionayAlgorithm(self.pollBirds)
            if self.numPred < self.numBirds * self.max_pop_predadors:
                for i in range(
                        int(
                            min(math.floor(self.breeding_inc * self.numPred),
                                self.numBirds * self.max_pop_predadors)) / 2):
                    self.evolutionayAlgorithm(self.pollPredators)

        self.setDisplayText("Birds Alive: " + str(self.numBirds),
                            xLoc=-0.950000,
                            yLoc=-0.650000,
                            messageNumber=2,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Predators Alive: " + str(self.numPred),
                            xLoc=-0.950000,
                            yLoc=-0.750000,
                            messageNumber=3,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Dead Birds: " + str(self.num_dead_birds),
                            xLoc=-0.950000,
                            yLoc=-0.850000,
                            messageNumber=0,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Dead Predators: " + str(self.num_dead_predators),
                            xLoc=-0.950000,
                            yLoc=-0.950000,
                            messageNumber=1,
                            theColor=breve.vector(1, 1, 1))

        # needed to move the agents with velocity and acceleration
        # also needed to detect collisions
        # print str(self.numBirdsBirth)

        breve.Control.iterate(self)
Example #48
0
	def init( self ):
		self.setShape( breve.createInstances( breve.Sphere, 1 ).initWith( breve.randomExpression( 1.000000 ) ) )
		self.setColor( breve.randomExpression( breve.vector( 1, 1, 1 ) ) )
		self.move( ( breve.randomExpression( breve.vector( 10, 0, 10 ) ) + breve.vector( -5, 15, -5 ) ) )
		self.enablePhysics()
Example #49
0
	def dropBall( self ):
		breve.createInstances( breve.Ball, 1 )
 def init(self):
     self.setShape(
         breve.createInstances(breve.Cube, 1).initWith(
             breve.vector(0.500000, 0.500000, 0.500000)))
    def init(self):
        x = 0
        y = 0
        z = 0
        startblock = 0
        endblock = 0
        numsprings = 0
        NUMEDGESONSIDE = 0
        p1 = 0
        p2 = 0
        xoff1 = 0
        yoff1 = 0
        zoff1 = 0
        xoff2 = 0
        yoff2 = 0
        zoff2 = 0
        complength = 0

        NUMEDGESONSIDE = (3 - 1)
        self.NODES = ((3 * 3) * 3)
        self.setBackgroundColor(breve.vector(0.700000, 0.700000, 0.700000))
        self.pointCamera(breve.vector(0, 10, 0), breve.vector(70, 20, 70))
        self.nodes = breve.createInstances(breve.Nodes, self.NODES)
        self.nodes.enablePhysics()
        x = 0
        while (x < 3):
            y = 0
            while (y < 3):
                z = 0
                while (z < 3):
                    startblock = ((x + (y * 3)) + ((z * 3) * 3))
                    self.nodes[startblock].move(
                        breve.vector(((x * 9) - ((3 / 2) * 9)), ((y * 9) + 20),
                                     ((z * 9) - ((3 / 2) * 9))))

                    z = (z + 1)

                y = (y + 1)

            x = (x + 1)

        self.setGravity(breve.vector(0, -9.800000, 0))
        breve.createInstances(breve.Floor, 1)
        x = 0
        while (x < NUMEDGESONSIDE):
            y = 0
            while (y < NUMEDGESONSIDE):
                z = 0
                while (z < NUMEDGESONSIDE):
                    p1 = 0
                    while (p1 < 7):
                        p2 = (p1 + 1)
                        while (p2 < 8):
                            xoff1 = (p1 % 2)
                            yoff1 = ((p1 / 2) % 2)
                            if (p1 < 4):
                                zoff1 = 0

                            else:
                                zoff1 = 1

                            xoff2 = (p2 % 2)
                            yoff2 = ((p2 / 2) % 2)
                            if (p2 < 4):
                                zoff2 = 0

                            else:
                                zoff2 = 1

                            complength = (
                                breve.breveInternalFunctionFinder.sqrt(
                                    self, ((((xoff1 - xoff2)**2) +
                                            ((yoff1 - yoff2)**2)) +
                                           ((zoff1 - zoff2)**2))) * 9)
                            if (complength > 0):
                                startblock = (((x + xoff1) +
                                               ((y + yoff1) * 3)) +
                                              (((z + zoff1) * 3) * 3))
                                endblock = (((x + xoff2) + ((y + yoff2) * 3)) +
                                            (((z + zoff2) * 3) * 3))
                                breve.createInstances(
                                    breve.Spring,
                                    1).connect(self.nodes[startblock],
                                               self.nodes[endblock],
                                               breve.vector(0, 0, 0),
                                               breve.vector(0, 0,
                                                            0), complength, 5)
                                numsprings = (numsprings + 1)

                            p2 = (p2 + 1)

                        p1 = (p1 + 1)

                    z = (z + 1)

                y = (y + 1)

            x = (x + 1)

        self.nodes[0].setVelocity(breve.vector(100, 0, 0))
        print '''NumSprings = %s''' % (numsprings)
Example #52
0
 def init(self):
     self.light = breve.createInstances(breve.BraitenbergLight, 1)
     self.light.move(breve.vector(10, 1, 0))
     self.vehicle = breve.createInstances(breve.BraitenbergVehicle, 1)
     self.watch(self.vehicle)
    def init(self):
        self.vehicle = breve.createInstances(breve.BraitenbergVehicle, 1)
        self.vehicle.move(breve.vector(10, 0, 10))
        self.watch(self.vehicle)

        #Wheels and Sensors
        front_left = self.vehicle.addWheel(breve.vector(0, 0, -1.5))
        front_right = self.vehicle.addWheel(breve.vector(0, 0, 1.5))

        leftSoundSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),
                                                 breve.vector(0, 0, 1), 1,
                                                 "Sounds")
        rightSoundSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),
                                                  breve.vector(0, 0, 1), 1,
                                                  "Sounds")
        leftSoundSensor.link(front_right)
        rightSoundSensor.link(front_left)
        leftSoundSensor.setLeftSensor(1)
        leftSoundSensor.setBias(-0.5)
        rightSoundSensor.setBias(-0.5)

        leftLightSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),
                                                 breve.vector(0, 0, 1), 1,
                                                 "Lights")
        rightLightSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),
                                                  breve.vector(0, 0, 1), 1,
                                                  "Lights")
        leftLightSensor.link(front_left)
        rightLightSensor.link(front_right)

        leftSmellSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),
                                                 breve.vector(0, 0, 1), 1,
                                                 "Smells")
        rightSmellSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),
                                                  breve.vector(0, 0, 1), 1,
                                                  "Smells")
        leftSmellSensor.link(front_left)
        rightSmellSensor.link(front_right)

        leftSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),
                                            breve.vector(0, 0, 1), 1, "Blocks")
        rightSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),
                                             breve.vector(0, 0, 1), 1,
                                             "Blocks")
        leftSensor.link(front_left)
        rightSensor.link(front_right)

        front_left.setNaturalVelocity(1.2)
        front_right.setNaturalVelocity(1.2)

        # Surrounding blocks

        for i in range(20):
            #WEST
            breve.createInstances(breve.BraitenbergSound,
                                  1).move(breve.vector(i * 3, 0, 0))
            #NORTH
            breve.createInstances(breve.BraitenbergSound,
                                  1).move(breve.vector(60, 0, i * 3))
            #EAST
            breve.createInstances(breve.BraitenbergSound,
                                  1).move(breve.vector(i * 3, 0, 58))
            #SOUTH
            breve.createInstances(breve.BraitenbergSound,
                                  1).move(breve.vector(0, 0, i * 3))

        # objects
        for i in range(5):
            x = random() * 58
            y = random() * 58
            breve.createInstances(breve.BraitenbergLight,
                                  1).move(breve.vector(x, 0, y))
        for i in range(5):
            x = random() * 58
            y = random() * 58
            breve.createInstances(breve.BraitenbergSmell,
                                  1).move(breve.vector(x, 0, y))
        for i in range(5):
            x = random() * 58
            y = random() * 58
            breve.createInstances(breve.BraitenbergBlock,
                                  1).move(breve.vector(x, 0, y))

        breve.myBraitenbergControl = myBraitenbergControl
Example #54
0
 def init(self):
     breve.createInstances(breve.TransparentCube, 1)
     self.setBackgroundColor(breve.vector(0, 0, 0))
     self.enableLighting()
     self.moveLight(breve.vector(0, 20, 0))
 def init(self):
     self.myPythonObject = breve.createInstances(breve.PythonBridgeObject,
                                                 1)
     print self.myPythonObject.testVector(breve.vector(1, 1, 1))
Example #56
0
    def iterate(self):
        self.updateNeighbors()

        # moviment of Prey
        self.numPreys = 0
        for prey in breve.allInstances("Prey"):
            if prey.isAlive:
                prey.fly()
                self.numPreys += 1

        # moviment of Predator
        self.numPredators = 0
        for predator in breve.allInstances("Predator"):
            if predator.isAlive:
                predator.fly()
                self.numPredators += 1

        # management of the energy from feeders
        self.totalFoodSupply = 0
        for feeder in breve.allInstances("Feeder"):
            if feeder.rapid:
                feeder.rapidGrow()
                self.totalFoodSupply += feeder.VirtualEnergy
            self.totalFoodSupply += feeder.energy
            if feeder.energy <= 0 and not feeder.rapid:
                breve.deleteInstances(feeder)
        self.addRandomFeederIfNecessary(rapid=True)

        # vanish corpse
        for corpse in breve.allInstances("Corpse"):
            corpse.changeColor()
            if sum(corpse.getColor()) <= 0:
                breve.deleteInstances(corpse.shape)
                breve.deleteInstances(corpse)
            print corpse.getColor()

        self.current_generation += 1
        # breeding
        if self.current_generation % self.breeding_season == 0:
            # preys
            tam_prey = int(math.ceil((self.breeding_inc * self.numPreys) / 2))
            if breve.length(self.pollPreys) < tam_prey * 2:
                new_prey = tam_prey - breve.length(self.pollPreys)
                breve.createInstances(breve.Prey, new_prey).dropDead(False)
            for i in range(tam_prey):
                self.evolutionayAlgorithm(self.pollPreys)

            # predators
            predator_max = self.numPreys * self.max_pop_predadors
            predator_breed = self.breeding_inc * self.numPredators
            tam_predator = int(math.ceil(
                min(predator_max, predator_breed) / 2))
            if breve.length(self.pollPredators) < tam_predator * 2:
                new_preds = tam_predator - breve.length(self.pollPredators)
                breve.createInstances(breve.Predator,
                                      new_preds).dropDead(False)
            for i in range(tam_predator):
                self.evolutionayAlgorithm(self.pollPredators)
        # immigrants
        else:
            if self.numPreys < 0.2 * self.initialNumPreys:
                self.revive(self.pollPreys,
                            math.floor(0.15 * self.initialNumPreys))
                self.createPreys(math.floor(0.05 * self.initialNumPreys))
            if self.numPredators < 0.2 * self.initialNumPredators:
                self.revive(self.pollPredators,
                            math.floor(0.15 * self.initialNumPredators))
                self.createPredators(
                    math.floor(0.05 * self.initialNumPredators))

        # checkpoint
        if self.isToSave and self.current_generation % (self.breeding_season *
                                                        25) == 0:
            self.save_data()

        self.setDisplayText("Generation: " + str(
            (int)(math.ceil(self.current_generation / self.breeding_season))),
                            xLoc=-0.950000,
                            yLoc=-0.550000,
                            messageNumber=5,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Preys Alive: " + str(self.numPreys),
                            xLoc=-0.950000,
                            yLoc=-0.650000,
                            messageNumber=4,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Predators Alive: " + str(self.numPredators),
                            xLoc=-0.950000,
                            yLoc=-0.750000,
                            messageNumber=3,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Dead Preys: " + str(self.numDeadPreys),
                            xLoc=-0.950000,
                            yLoc=-0.850000,
                            messageNumber=2,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Dead Predators: " + str(self.numDeadPredators),
                            xLoc=-0.950000,
                            yLoc=-0.950000,
                            messageNumber=1,
                            theColor=breve.vector(1, 1, 1))

        # needed to move the agents with velocity and acceleration
        # also needed to detect collisions
        # print str(self.numBirdsBirth)
        breve.Control.iterate(self)
Example #57
0
 def init(self):
     # self.shape = breve.createInstances( breve.PolygonCone, 1 ).initWith( 5, 0.200000, 0.100000 )
     self.shape = breve.createInstances(breve.myCustomShape, 1)
     self.setShape(self.shape)
     self.adjustSize()
     self.setNeighborhoodSize(self.controller.neighborRadius)
 def init(self):
     self.setShape(breve.createInstances(breve.myCustomShape, 1))
     self.setColor(breve.randomExpression(breve.vector(1, 1, 1)))
Example #59
0
 def init(self):
     self.shape = breve.createInstances(breve.Sphere, 1).initWith(0.300000)
     self.setShape(self.shape)
     self.setColor(breve.vector(1, 1, 0))
Example #60
0
 def init(self):
     self.genome = breve.createInstances(breve.GADirectedGraph, 1)
     self.randomize()
     self.addDependency(self.genome)