add plant spikeweed

zhangcongyu_branch
marblexu 6 years ago
parent f4faa5873b
commit 078c21eab8

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -12,13 +12,13 @@ CARD_LIST_NUM = 8
card_name_list = [c.CARD_SUNFLOWER, c.CARD_PEASHOOTER, c.CARD_SNOWPEASHOOTER, c.CARD_WALLNUT, card_name_list = [c.CARD_SUNFLOWER, c.CARD_PEASHOOTER, c.CARD_SNOWPEASHOOTER, c.CARD_WALLNUT,
c.CARD_CHERRYBOMB, c.CARD_THREEPEASHOOTER, c.CARD_REPEATERPEA, c.CARD_CHOMPER, c.CARD_CHERRYBOMB, c.CARD_THREEPEASHOOTER, c.CARD_REPEATERPEA, c.CARD_CHOMPER,
c.CARD_PUFFMUSHROOM, c.CARD_POTATOMINE, c.CARD_SQUASH] c.CARD_PUFFMUSHROOM, c.CARD_POTATOMINE, c.CARD_SQUASH, c.CARD_SPIKEWEED]
plant_name_list = [c.SUNFLOWER, c.PEASHOOTER, c.SNOWPEASHOOTER, c.WALLNUT, plant_name_list = [c.SUNFLOWER, c.PEASHOOTER, c.SNOWPEASHOOTER, c.WALLNUT,
c.CHERRYBOMB, c.THREEPEASHOOTER, c.REPEATERPEA, c.CHOMPER, c.CHERRYBOMB, c.THREEPEASHOOTER, c.REPEATERPEA, c.CHOMPER,
c.PUFFMUSHROOM, c.POTATOMINE, c.SQUASH] c.PUFFMUSHROOM, c.POTATOMINE, c.SQUASH, c.SPIKEWEED]
plant_sun_list = [50, 100, 175, 50, 150, 325, 200, 150, 0, 25, 50] plant_sun_list = [50, 100, 175, 50, 150, 325, 200, 150, 0, 25, 50, 100]
plant_frozen_time_list = [0, 5000, 5000, 10000, 5000, 5000, 5000, 5000, 8000, 8000, 8000] plant_frozen_time_list = [0, 5000, 5000, 10000, 5000, 5000, 5000, 5000, 8000, 8000, 8000, 8000]
all_card_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] all_card_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
def getSunValueImage(sun_value): def getSunValueImage(sun_value):
font = pg.font.SysFont(None, 22) font = pg.font.SysFont(None, 22)

@ -560,4 +560,38 @@ class Squash(Plant):
self.animate_interval = 300 self.animate_interval = 300
def getPosition(self): def getPosition(self):
return self.orig_pos return self.orig_pos
class Spikeweed(Plant):
def __init__(self, x, y):
Plant.__init__(self, x, y, c.SPIKEWEED, c.PLANT_HEALTH, None)
self.animate_interval = 200
self.attack_timer = 0
def loadImages(self, name, scale):
self.loadFrames(self.frames, name, 0.9, c.WHITE)
self.select_image = self.frames[0]
def setIdle(self):
print('spikeweed idle')
self.animate_interval = 200
self.state = c.IDLE
def canAttack(self, zombie):
if (self.rect.x <= zombie.rect.right and
(self.rect.right >= zombie.rect.x)):
return True
return False
def setAttack(self, zombie_group):
print('spikeweed attack')
self.zombie_group = zombie_group
self.animate_interval = 50
self.state = c.ATTACK
def attacking(self):
if (self.current_time - self.attack_timer) > 2000:
self.attack_timer = self.current_time
for zombie in self.zombie_group:
if self.canAttack(zombie):
zombie.setDamage(1, False)

@ -33,6 +33,7 @@ class Zombie(pg.sprite.Sprite):
self.animate_interval = 150 self.animate_interval = 150
self.ice_slow_ratio = 1 self.ice_slow_ratio = 1
self.ice_slow_timer = 0 self.ice_slow_timer = 0
self.hit_timer = 0
self.speed = 1 self.speed = 1
def loadFrames(self, frames, name, image_x, colorkey=c.BLACK): def loadFrames(self, frames, name, image_x, colorkey=c.BLACK):
@ -118,8 +119,12 @@ class Zombie(pg.sprite.Sprite):
return return
self.frame_index = 0 self.frame_index = 0
self.animate_timer = self.current_time self.animate_timer = self.current_time
self.image = self.frames[self.frame_index] self.image = self.frames[self.frame_index]
if(self.current_time - self.hit_timer) >= 200:
self.image.set_alpha(255)
else:
self.image.set_alpha(192)
def getTimeRatio(self): def getTimeRatio(self):
return self.ice_slow_ratio return self.ice_slow_ratio
@ -136,6 +141,7 @@ class Zombie(pg.sprite.Sprite):
def setDamage(self, damage, ice): def setDamage(self, damage, ice):
self.health -= damage self.health -= damage
self.hit_timer = self.current_time
if ice: if ice:
self.setIceSlow() self.setIceSlow()

@ -7,6 +7,7 @@
"BulletMushRoom":{"x":0, "y":1, "width":55, "height":21}, "BulletMushRoom":{"x":0, "y":1, "width":55, "height":21},
"PotatoMine":{"x":0, "y":0, "width":75, "height":55}, "PotatoMine":{"x":0, "y":0, "width":75, "height":55},
"Squash":{"x":10, "y":140, "width":80, "height":86}, "Squash":{"x":10, "y":140, "width":80, "height":86},
"SquashAim":{"x":10, "y":140, "width":80, "height":86} "SquashAim":{"x":10, "y":140, "width":80, "height":86},
"Spikeweed":{"x":3, "y":0, "width":80, "height":35}
} }
} }

@ -200,6 +200,8 @@ class Level(tool.State):
self.plant_groups[map_y].add(plant.PotatoMine(x, y)) self.plant_groups[map_y].add(plant.PotatoMine(x, y))
elif self.plant_name == c.SQUASH: elif self.plant_name == c.SQUASH:
self.plant_groups[map_y].add(plant.Squash(x, y)) self.plant_groups[map_y].add(plant.Squash(x, y))
elif self.plant_name == c.SPIKEWEED:
self.plant_groups[map_y].add(plant.Spikeweed(x, y))
self.menubar.decreaseSunValue(self.plant_cost) self.menubar.decreaseSunValue(self.plant_cost)
self.menubar.setCardFrozenTime(self.plant_name) self.menubar.setCardFrozenTime(self.plant_name)
@ -236,7 +238,7 @@ class Level(tool.State):
rect = frame_list[0].get_rect() rect = frame_list[0].get_rect()
width, height = rect.w, rect.h width, height = rect.w, rect.h
if plant_name == c.POTATOMINE or plant_name == c.SQUASH: if plant_name == c.POTATOMINE or plant_name == c.SQUASH or plant_name == c.SPIKEWEED:
color = c.WHITE color = c.WHITE
else: else:
color = c.BLACK color = c.BLACK
@ -269,7 +271,7 @@ class Level(tool.State):
for i in range(self.map_y_len): for i in range(self.map_y_len):
for zombie in self.zombie_groups[i]: for zombie in self.zombie_groups[i]:
plant = pg.sprite.spritecollideany(zombie, self.plant_groups[i], collided_func) plant = pg.sprite.spritecollideany(zombie, self.plant_groups[i], collided_func)
if plant and zombie.state == c.WALK: if plant and plant.name != c.SPIKEWEED and zombie.state == c.WALK:
zombie.setAttack(plant) zombie.setAttack(plant)
plant.setAttacked() plant.setAttacked()
@ -336,6 +338,16 @@ class Level(tool.State):
if plant.canAttack(zombie): if plant.canAttack(zombie):
plant.setAttack(zombie, self.zombie_groups[i]) plant.setAttack(zombie, self.zombie_groups[i])
break break
elif plant.name == c.SPIKEWEED:
can_attack = False
for zombie in self.zombie_groups[i]:
if plant.canAttack(zombie):
can_attack = True
break
if plant.state == c.IDLE and can_attack:
plant.setAttack(self.zombie_groups[i])
elif plant.state == c.ATTACK and not can_attack:
plant.setIdle()
else: else:
if (plant.state == c.IDLE and zombie_len > 0): if (plant.state == c.IDLE and zombie_len > 0):
for zombie in self.zombie_groups[i]: for zombie in self.zombie_groups[i]:

Loading…
Cancel
Save