再写一点杨桃

This commit is contained in:
星外之神 2022-04-23 20:59:07 +08:00
parent 01be40c044
commit 26ed451083
2 changed files with 66 additions and 4 deletions

View File

@ -34,7 +34,7 @@ class Car(pg.sprite.Sprite):
def draw(self, surface):
surface.blit(self.image, self.rect)
# 豌豆及孢子类普通子弹
class Bullet(pg.sprite.Sprite):
def __init__(self, x, start_y, dest_y, name, damage, effect=False, passedTorchWood=None):
pg.sprite.Sprite.__init__(self)
@ -107,9 +107,11 @@ class Bullet(pg.sprite.Sprite):
def draw(self, surface):
surface.blit(self.image, self.rect)
# 杨桃的子弹,看作豌豆、孢子类子弹的特殊子类
# 杨桃的子弹
class StarBullet(Bullet):
def __init__(self, x, y, name):
def __init__(self, x, start_y, name, damage, direction): # direction指星星飞行方向
pg.sprite.Sprite.__init__(self)
self.name = name
self.frames = []
self.frame_index = 0
@ -117,7 +119,59 @@ class StarBullet(Bullet):
self.image = self.frames[self.frame_index]
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.rect.y = start_y
self.direction = direction
self.damage = damage
self.state = c.FLY
self.current_time = 0
def loadFrames(self, frames, name):
frame_list = tool.GFX[name]
if name in tool.PLANT_RECT:
data = tool.PLANT_RECT[name]
x, y, width, height = data['x'], data['y'], data['width'], data['height']
else:
x, y = 0, 0
rect = frame_list[0].get_rect()
width, height = rect.w, rect.h
for frame in frame_list:
frames.append(tool.get_image(frame, x, y, width, height))
def load_images(self):
self.fly_frames = []
self.explode_frames = []
fly_name = self.name
explode_name = 'PeaNormalExplode'
self.loadFrames(self.fly_frames, fly_name)
self.loadFrames(self.explode_frames, explode_name)
self.frames = self.fly_frames
def update(self, game_info):
self.current_time = game_info[c.CURRENT_TIME]
if self.state == c.FLY:
if self.rect.y != self.dest_y:
self.rect.y += self.y_vel
if self.y_vel * (self.dest_y - self.rect.y) < 0:
self.rect.y = self.dest_y
self.rect.x += self.x_vel
if self.rect.x > c.SCREEN_WIDTH:
self.kill()
elif self.state == c.EXPLODE:
if (self.current_time - self.explode_timer) > 250:
self.kill()
def setExplode(self):
self.state = c.EXPLODE
self.explode_timer = self.current_time
self.frames = self.explode_frames
self.image = self.frames[self.frame_index]
def draw(self, surface):
surface.blit(self.image, self.rect)
class Plant(pg.sprite.Sprite):

View File

@ -237,6 +237,14 @@ BULLET_DAMAGE_FIREBALL_RANGE = 13
BULLET_EFFECT_ICE = 'ice'
BULLET_EFFECT_UNICE = 'unice'
# 杨桃子弹
# 子弹方向
STAR_FORWARD_UP = 'forwardUp' # 向前上方
STAR_FORWARD_DOWN = 'forwardDown' #向前下方
STAR_BACKWARD = 'backward' #向后
STAR_UPWARD = 'upward' # 向上
STAR_DOWNWARD = 'downward' # 向下
# 僵尸信息
ZOMBIE_IMAGE_RECT = 'zombie_image_rect'
ZOMBIE_HEAD = 'ZombieHead'