坦克大战5
1.战斗处理
class Fire:
"""战斗处理"""
def __init__(self,view_manager,screen):
pass
def makemonster(self,view_manager,screen,monsters):
if len(monsters) > 0:
return
if pv.startmake == False:
pv.startmake = True
pv.startmaketime = datetime.datetime.now()
return
lostpass = pv.waitmakedelay - (datetime.datetime.now() - pv.startmaketime).seconds
if lostpass > 0 :
nowfont = view_manager.font[0]
hptxt = nowfont.render('敌军' + str(lostpass) + '秒后到达',1,pv.COLOR_BLUE)
screen.blit(hptxt,(view_manager.screen_width / 2 - 150,view_manager.screen_height / 4))
return
pv.waitmakedelay+=1
pv.startmake = False
j = 0
while j < pv.lastmakemonstersnum:
newmons = Monster(view_manager,screen)
monsters.append(newmons)
j+=1
pv.lastmakemonstersnum+=1
pv.gatenum+=1
def show(self,view_manager,screen,player,monsters):
if pv.gatenum < 0:
pv.gatenum = 0
screen.blit(view_manager.map[pv.gatenum % 2],(0,0))
player.work(screen,view_manager)
if player.is_die() == True:
pv.runstate = pv.RUN_STATE_OVER
return
self.makemonster(view_manager,screen,monsters)
for m in monsters:
m.work(screen,view_manager)
for b in player.bullets:
if b.is_effect == False:
continue
if b.is_bomb == True:
continue
for m in monsters:
rect = m.getrect(view_manager)
if rect != None:
if b.x >= m.x and b.x <= m.x + rect.width and b.y >= m.y and b.y <= m.y + rect.height :
b.is_bomb = True
m.hp-=b.reducval
for b in monsters:
if b.hp <= 0:
monsters.remove(b)
player.kill+=1
for m in monsters:
rect = player.getrect(view_manager)
if rect != None:
for b in m.bullets:
if b.is_effect == False:
continue
if b.is_bomb == True:
continue
if b.x >= player.x and b.x <= player.x + rect.width and b.y >= player.y and b.y <= player.y + rect.height :
b.is_bomb = True
player.hp-=b.reducval
2.炮弹
class Bullet:
"""炮弹类"""
def __init__(self,view_manager,screen,x,y,move):
self.reducval = 15
self.speed = 8
self.move = move
self.x = x
self.y = y
self.is_effect = True
self.is_bomb = False
self.bomstate = 0
def bitmap(self, view_manager):
if self.is_bomb == True:
if self.bomstate <= len(view_manager.bomb) - 1:
self.bomstate+=1
return view_manager.bomb[self.bomstate - 1]
self.is_effect = False
view_manager.sounds[1].play()
return None
if self.move == pv.MOVE_UP or self.move == pv.MOVE_DOWN :
return view_manager.bullet[0]
if self.move == pv.MOVE_LEFT or self.move == pv.MOVE_RIGHT :
return view_manager.bullet[1]
def draw(self,view_manager,screen):
bmp = self.bitmap(view_manager)
if bmp != None:
if self.is_bomb == True:
bodyrect = bmp.get_rect()
screen.blit(bmp,(self.x - bodyrect.width / 2,self.y - bodyrect.height / 2))
else:
screen.blit(bmp,(self.x,self.y))
def move_position(self,view_manager,screen):
if self.move == pv.MOVE_UP:
self.y-=self.speed
if self.move == pv.MOVE_DOWN:
self.y+=self.speed
if self.move == pv.MOVE_LEFT:
self.x-=self.speed
if self.move == pv.MOVE_RIGHT:
self.x+=self.speed
if self.x <= 0 or self.x >= view_manager.screen_width or self.y <= 0 or self.y >= view_manager.screen_height:
self.is_effect = False
python坦克大战(6)常量全局变量以及完整游戏下载