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()
def tick(self): if not self.dead: if get_game().keys["left"]: self.behaviour.move_left() elif get_game().keys["right"]: self.behaviour.move_right() else: self.behaviour.stop_movement() if get_game().keys[" "]: self.behaviour.jump() old_level=get_game().tower_height self.behaviour.tick() if old_level!=get_game().tower_height: self.cam.follow=True elif self.behaviour.on_floor: self.cam.follow=False
def damage(self,source): d=0.2 if self.team==1 else source.damage_mod*source.size/10.0 self.size-=d for i in range(4): Damage(self).add_to_world() if self.size<=0.6*self.original_size and self.team==1 or self.size<0.3 and self.team==0: self.dead=True if self.team==0: get_game().set_img("assets/fail.bmp") get_game().restart=True self.xrot=-90.0 self.col_amb=[c*0.5 for c in self.col_amb] self.col_diff=[c*0.5 for c in self.col_diff] self.col_spec=[c*0.5 for c in self.col_spec] self.col_amb [3]=1.0 self.col_diff[3]=1.0 self.col_spec[3]=1.0
def __init__(self,size,color): Blob.__init__(self,size,color) self.position[1]=-5.0 self.position[2]=0.5+get_game().get_ring_height()+60.0 self.zrot=90.0 self.team=1 self.behaviour=BlobBehaviourPlayerOnRing(self,speed=0.6,jump_velocity=0.3) self.dead=False self.direction_right=True self.damage_mod=1.0
def __init__(self): global PLAYER PLAYER=self Blob.__init__(self,1,green) self.cam=None self.position[1]=-5.0 self.position[2]=0.5+get_game().get_ring_height()+30.0 self.zrot=90.0 self.team=0 self.behaviour=BlobBehaviourPlayerOnRing(self,speed=2.4,jump_velocity=0.4) self.dead=False
def setup_model(self): glMatrixMode(GL_MODELVIEW) glLoadIdentity() eye=self.position center=self.target if self.ob is not None: if self.follow: center=[self.ob.position[i]+self.offset[i] for i in range(3)] eye=[center[i]*4.0 for i in range(3)] eye[2]=center[2]+1.0 else: center=[self.ob.position[i]+self.offset[i] for i in range(3)] center[2]=get_game().get_ring_height()+2.5 eye=[center[i]*4.0 for i in range(3)] eye[2]=center[2]+1.0 up=[0.0,0.0,1.0] args=eye+center+up gluLookAt(*args)
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()
def add_to_world(self): get_game().mgr_game.add_object(self)
def remove_from_world(self): Visual.remove_from_world(self) get_game().mgr_game.remove_object(self)
def add_to_world(self): Visual.add_to_world(self) get_game().mgr_game.add_object(self)
def tick(self): if self.dead: get_game().set_img("assets/win.bmp") get_game().restart=True Enemy.tick(self)
def add_to_world(self): Visual.add_to_world(self) cam=self.cam=Cam(ob=self) get_game().mgr_render.cam=cam get_game().mgr_game.add_object(self) get_game().mgr_team.add_object(self,self.team)
def remove_from_world(self): get_game().mgr_render.remove_object(self)
def add_to_world(self): get_game().mgr_render.add_object(self,self.transparent)