Example #1
0
	def __init__(self,blob,speed=1.0,jump_velocity=0.5):
		self.blob=blob
		self.__speed=speed
		self.jump_velocity=jump_velocity
		self.was_moving_right=True
		self.mrm=Matrix44.z_rotation(radians( self.__speed))
		self.mlm=Matrix44.z_rotation(radians(-self.__speed))
		self.swapm=Matrix44.z_rotation(radians(180))

		self.vel=0.0

		self.on_floor=False

		self.bob=0.0
		self.bob_dir=1.0
		self.bob_mtx=numpy.array([
				1.0,0.0,0.0,0.0,
				0.0,1.0,0.0,0.0,
				0.0,0.0,1.0,0.0,
				0.0,0.0,0.0,1.0,
				])
Example #2
0
	def tick(self):
		self.bob_mtx[9]=self.bob*0.6
		self.vel-=GRAVITY
		self.blob.position[2]+=self.vel
		self.on_floor=False
		rh=get_game().get_ring_height()+self.blob.size/2.0
		if rh>self.blob.position[2]:
			self.blob.position[2]=rh
			self.vel=0
			self.on_floor=True
		#apply damage
		enemies=list(get_game().mgr_team.obs[(self.blob.team+1)%2])
		me=Vector3(self.blob.position)
		for enemy in enemies:
			if self.vel<0.0 and not self.on_floor and not enemy.dead:
				them=Vector3(enemy.position)
				dist=(me-them).get_length()
				if 2*dist<self.blob.size+enemy.size:
					self.blob.position[2]-=self.vel
					enemy.damage(self.blob)
					self.on_floor=True
					self.jump()
					self.on_floor=False
					break
			elif self.on_floor and enemy.dead:
				them=Vector3(enemy.position)
				dist=(me-them).get_length()
				if 2*dist<self.blob.size+enemy.size:
					self.blob.position[2]-=self.vel
					enemy.remove_from_world()
					self.blob.size+=enemy.food*1.4
					game=get_game()
					if game.tower_height-1>=0 and self.blob.size>game.rings[game.tower_height-1].strength:
						game.tower_height-=1
						game.rings[game.tower_height].remove_from_world()
						game.rings=game.rings[:-1]
						remaining=len(game.rings)
						if remaining==2:
							Spawner(Enemy2,150).add_to_world()
						elif remaining==1:
							Spawner(Enemy3,75).add_to_world()
						elif remaining==0:
							inst=Enemy4()
							rot=random.randint(1,360)
							m=Matrix44.z_rotation(radians(rot))
							inst.zrot-=rot
							v=Vector3(inst.position)
							inst.position=list(m.transform(v))
							inst.add_to_world()
Example #3
0
	def tick(self):
		self.timer-=1
		if self.timer<=0:
			if len(get_game().mgr_team.obs[1])>=4:
				self.timer+=random.randint(1,150)
			else:
				self.timer=self.timeout
				inst=self.klass()
				rot=random.randint(1,360)
				m=Matrix44.z_rotation(radians(rot))
				inst.zrot-=rot
				v=Vector3(inst.position)
				inst.position=list(m.transform(v))
				#player=list(get_game().mgr_team.obs[0])
				#if player:
				#	player=player[0]
				#	inst.position=player.position[:]
				#	inst.position[2]+=10.0
				inst.add_to_world()