def explode(self, Game, collide=None): if collide != None: collide.stain_black(self.pos_x, self.pos_y) Game.screen.blit(collide.image, collide.rect) explosion(int(self.pos_x), int(self.pos_y), Game) Game.sprites.remove(self) Game.change_turn()
def update(self): self.checkbounds() self.autopilot() self.rect = self.rect.move(self.movement) if self.fire == 1 and self.waitTime % 10 == 1: self.shoot() if self.health <= 0: (x, y) = self.rect.center if pygame.mixer.get_init(): self.explosion_sound.play(maxtime=1000) explosion(x, y, 100) self.kill()
def __init__(self,pygame,dispsurf,enviorment,settings,turretpos,turretlen,collisionboxes): #set moving states self.pygame=pygame self.dispsurf=dispsurf self.enviorment=enviorment self.settings=settings self.turretpos=turretpos self.collisionboxes=collisionboxes #calculate initial position and velocity angle=self.settings.angleturret #create bullit outside tank so we don't have problem with it blowing itself self.pos0=(self.turretpos[0]+turretlen*cos(angle),self.turretpos[1]-turretlen*sin(angle)) self.pos=self.pos0 self.v0=(VEL*cos(angle),-VEL*sin(angle)) self.v=self.v0 self.time=0 #explosion variables self.exploded=0 self.explosionstep=0 #create explosion class self.explosion=explosion(pygame,dispsurf,EXPLOSIONNUM,EXPLOSIONRAD,collisionboxes)
def __init__(self, pygame, dispsurf, enviorment, settings, turretpos, turretlen, collisionboxes): #set moving states self.pygame = pygame self.dispsurf = dispsurf self.enviorment = enviorment self.settings = settings self.turretpos = turretpos self.collisionboxes = collisionboxes #calculate initial position and velocity angle = self.settings.angleturret #create bullit outside tank so we don't have problem with it blowing itself self.pos0 = (self.turretpos[0] + turretlen * cos(angle), self.turretpos[1] - turretlen * sin(angle)) self.pos = self.pos0 self.v0 = (VEL * cos(angle), -VEL * sin(angle)) self.v = self.v0 self.time = 0 #explosion variables self.exploded = 0 self.explosionstep = 0 #create explosion class self.explosion = explosion(pygame, dispsurf, EXPLOSIONNUM, EXPLOSIONRAD, collisionboxes)
def __init__(self, dispsurf, pygame, enviorment, settings, bullits, collisionboxes): self.dispsurf = dispsurf self.pygame = pygame self.enviorment = enviorment self.settings = settings self.anum = 0 self.bullits = bullits #global bullits list, we add all bullits to this self.health = HEALTH self.killed = 0 self.killsteps = 0 self.collisionboxes = collisionboxes #add self to collisionbox array, box includes turret and bottom part of tank #need to pass self as argument to collisionbox method self.mycollisionbox = collisionbox( self, dispsurf, SXTANK, SYTANKTOT, (self.settings.posx, enviorment.sizey - (enviorment.heightground + self.settings.posy + SYTANKTOT / 2.0))) self.collisionboxes.append(self.mycollisionbox) #variables connected to killing tank self.myclouds = [] self.explosion = explosion(pygame, dispsurf, EXPLOSIONNUM, EXPLOSIONRAD, collisionboxes) self.turrettraj = (0, 0) self.spinrate = randint(-100, 100) / 300.0 self.v0 = (randint(-40, 40) / 100.0, randint(-400, -200) / 50.0 ) #initial velocity of turret if we kill tank
def update(self): self.checkbounds() self.autopilot() self.rect = self.rect.move(self.movement) if self.fire == 1 and self.waitTime % 10 == 1: self.shoot() if self.health <= 0: (x, y) = self.rect.center if pygame.mixer.get_init(): self.explosion_sound.play(maxtime=1000) explosion(x, y, 75) self.kill() self.index += 1 self.index = self.index % 7 self.image = self.images[self.index] self.image = pygame.transform.rotate(self.image, 90) self.images[self.index] = self.image
def stone_code(): global Game,Score if Game and len(stones)==0: n = random.randint(-1,1) for i in range(-1,2): if i==n: continue stone = class_stone(i) stone.load("image/stone2.png",300,300,4) stones.append(stone) elif Game: if stones[0].y>SCREEN_HEIGHT/3 and len(stones)<=2: n = random.randint(-1,1) for i in range(-1,2): if i==n: continue stone = class_stone(i) stone.load("image/stone2.png",300,300,4) stones.append(stone) for i in range(len(stones)-1,-1,-1): stones[i].update(ticks,SPEED) stones[i].draw(screen) if Game and stones[i].y>= SCREEN_HEIGHT/20*7 and stones[i].y <= SCREEN_HEIGHT/20*11 and ufo.locate==stones[i].track and abs(ufo.x-stones[i].x)<200: del stones[i] if shield.visable: stone_break.play() Score -= 100 continue print("GameOver 遊戲結束") print("獲得分數:",int(Score)) explosion_sound.play() Game = 0 explosions.append(explosion(screen)) explosions[0].load("image/exp2.png",62,62,4,ufo.x,ufo.y) continue if stones[i].y>SCREEN_HEIGHT: del stones[i]