gitee地址



代码过多,可以去我的资源里下载

图片资源等都在资源里,只需积分下载即可,遇到无法下载可以加我QQ273309802

这里附上连接

https://download.csdn.net/download/qq_43900956/15724867?spm=1001.2014.3001.5503

import pygame,sys
import timeimport random
pygame.init()
pygame.mixer.init()
FRAM_PER_SECONDS=7
clock =pygame.time.Clock()
WIDTH=1290
HEIGHT=715
load_img_x=1290/2-376/2
load_img_y=715/2-224/2
load_animate=False
check=1 #关卡--标志
pause=False
#加载动画及音效
font = pygame.font.SysFont(None,50,True)# 字体  True 打开抗锯齿
load_music=pygame.mixer.Sound("music/11046.wav")
start_music=pygame.mixer.Sound("music/战斗背景音效.wav")
back_music=pygame.mixer.Sound("music/BGM_1 (1)_02.wav")
green_jn=pygame.mixer.Sound("music/敌人技能.wav")
green_attack_music=pygame.mixer.Sound("music/怪叫.wav")
player_hit_music=pygame.mixer.Sound("music/机甲受伤.wav")
walk_music=pygame.mixer.Sound("music/机器走路.wav")
jump_music=pygame.mixer.Sound("music/弹跳.wav")
diren_die_music=pygame.mixer.Sound("music/坦克爆炸.wav")
jn_music=pygame.mixer.Sound("music/激光声游戏喷射_1_3.wav")
attack_music=pygame.mixer.Sound("music/敌人普攻_01_1.wav")
check_music=pygame.mixer.Sound("music/升级或者获得奖励.wav")
feiti_music=pygame.mixer.Sound("music/机器故障.wav")
game_over_music=pygame.mixer.Sound("music/我一定会回来的.wav")
life_add_music=pygame.mixer.Sound("music/加血.wav")player_hit_music.set_volume(0.5)
check_music.set_volume(0.2)
green_attack_music.set_volume(0.1)
back_music.set_volume(0)
jn_music.set_volume(1)
start_music.set_volume(0.5)
load_music.set_volume(1)#出始地图
map_img=pygame.image.load("map_img/left.jpg")
start_back=pygame.image.load("load_img/start_back2.png")
set_font = pygame.font.SysFont("KaiTi", 47)# load_music.play()screen=pygame.display.set_mode((WIDTH,HEIGHT),pygame.FULLSCREEN)
# screen=pygame.display.set_mode((WIDTH,HEIGHT))
# screen.fill((16,16,16))
screen.blit(start_back,(0,0))pygame.display.set_caption("空 洞 机 甲   -   -   -   -   -  ( 河软空洞传奇工作室  版权所有  Copyright @  2020 )                                                  感                        谢                        支                        持")
pygame.display.set_icon(start_back)
#
load_image=() #开始动画列表
load_count=1 #开始动画加载
start_flag=False#是否开始
start_music.play(-1)#游戏开始音效
for pic_num in range(1,30):if pic_num<10:load_image+=(pygame.image.load("./load_img/jz00"+str(pic_num)+".png"),)elif pic_num>9:load_image+=(pygame.image.load("./load_img/jz0"+str(pic_num)+".png"),)class walk_sound():def __init__(self,src):self.sound=pygame.mixer.Sound(src)self.sound.set_volume(1)def music_play(self):self.sound.play()def music_stop(self):self.sound.stop()#关卡动画
class check_fun(object):check_list = []for pic_num in range(1, 13):check_list+=(pygame.image.load("./right_check/箭头" + str(pic_num) + ".png"),)def __init__(self):self.check_count=1def draw(self,screen):if self.check_count>=12:self.check_count=1if self.check_count:screen.blit(self.check_list[self.check_count],(1100,290))self.check_count+=1#机甲玩家角色
class Player(object):flc_list=()                            #机甲o技能列表lizi_list = ()                         #粒子特效1 列表lizi2_list = ()                        #粒子特效2 列表lizi3_list =()                         #粒子特效3 列表walk_right = ()                        #机甲 向左走列表walk_left = ()                         #机甲 向左走列表jn_list = ()                           #机甲i技能列表jump_list = ()                         #机甲跳跃技能列表hit_list = ()                          #机甲受伤列表attack_list_one=()                     #近攻 第一段 列表attack_list_two = ()                   #近攻 第二段列表attack_list_three = ()                 #近攻 第三段列表life_list=()                           #机甲受伤 列表die_list=()                             #机甲 血量 列表all_tuple=()stand_list = ()HP_tuple=()cd_tuple=()level_tuple=()for pic_num in range(1,13):level_tuple+=(pygame.image.load("./Update/"+str(pic_num)+".png"),)for pic_num in range(1,17):all_tuple+=(pygame.image.load("./jn/BIG/1 ("+str(pic_num)+").png"),)for pic_num in range(1,12):cd_tuple+=(pygame.image.load("./cd/cd"+str(pic_num)+".png"),)for pic_num in range(1,17):HP_tuple+=(pygame.image.load("./HP/"+str(pic_num)+".png"),)for pic_num in range(1,65):die_list+=(pygame.image.load("./die/die ("+str(pic_num)+").png"),)for pic_num in range(1,33):flc_list+=(pygame.image.load("./jn/flc ("+str(pic_num)+").png"),)for pic_num in range(1,49):lizi_list+=(pygame.image.load("./fire/"+str(pic_num)+".png"),)for pic_num in range(1,34):lizi2_list+=(pygame.image.load("./huohua/"+str(pic_num)+".png"),)for pic_num in range(1,81):lizi3_list+=(pygame.image.load("./huohua2/"+str(pic_num)+".png"),)for pic_num in range(1,5):life_list+=(pygame.image.load("./hit/ss (1).png"),)life_list+=(pygame.image.load("./hit/ss (2).png"),)for pic_num in range(1,13):walk_right+=(pygame.image.load("./walk/walk ("+str(pic_num)+").png"),)for pic_num in range(12,0,-1):walk_left+=(pygame.image.load("./walk/walk ("+str(pic_num)+").png"),)for pic_num in range(1, 25):stand_list+=(pygame.image.load("./stand/stand (" + str(pic_num) + ").png"),)for pic_num in range(1,41):jn_list+=(pygame.image.load("./jn/jn ("+str(pic_num)+").png"),)for pic_num in range(1,39):jump_list+=(pygame.image.load("./jump/jump ("+str(pic_num)+").png"),)for pic_num in range(1,48):hit_list+=(pygame.image.load("./hit/jd ("+str(pic_num)+").png"),)for pic_num in range(1,14):attack_list_one+=(pygame.image.load("./attack/1attack ("+str(pic_num)+").png"),)for pic_num in range(1,7):attack_list_two+=(pygame.image.load("./attack/2attack ("+str(pic_num)+").png"),)for pic_num in range(1,12):attack_list_three+=(pygame.image.load("./attack/3attack ("+str(pic_num)+").png"),)def __init__(self,x,y,width,height):self.x=xself.y=yself.width=widthself.height=heightself.speed=1self.left=Falseself.right=Trueself.stand=Trueself.jump=Falseself.i=Falseself.hit=Falseself.attack=0self.stand_count=1#站立的图片索引self.walk_count=1#步行的图片索引self.jump_count=1#跳跃的图片索引self.jn_count=1#技能i的图片索引self.hit_count=1#受伤的图片索引self.attack_Bool=Falseself.attack_one_count = 1#一段普攻的图片索引self.attack_two_count = 1  # 二段普攻的图片索引self.attack_three_count = 1  # 三段普攻的图片索引self.life=100self.t=10self.hit_box = (self.x, self.y, self.width, self.height)  # 碰撞框的位置 大小变量self.kill_enemy=0self.life_remove_bool=Falseself.life_count=0self.lizi_count=1self.lizi2_count = 1self.flc_count=0self.lizi3_count=1self.HP_count=0self.cd_count=0self.all_count=0self.cd=Falseself.levelAdd=Falseself.level=1self.flc=Falseself.die=Falseself.all=Falseself.die_count=0self.level_count=0self.HP_img=pygame.image.load("./HP/电池.png")self.skill_img = pygame.image.load("./HP/skill_num.png")self.player_img = pygame.image.load("./HP/head.png")self.win_bool=Falseself.lifeAdd=Falseself.all_lenth=50def draw(self,screen):if self.all_count>=16:self.all_count=0self.all=Falseself.all_lenth=50if player.all_count>14:U_Testing(enemylist)U_Testing(enemylist2)U_Testing(enemylist3)U_Testing(enemylist4)if self.cd_count>=11:self.cd_count=0self.cd=Falseif self.HP_count == 2:life_add_music.play()if self.HP_count>=16:life_add_music.stop()self.HP_count=0self.lifeAdd = Falseif self.level_count==2:life_add_music.play()if self.level_count>=12:life_add_music.stop()if self.level_count>=12:self.level_count=0self.levelAdd = Falseif self.lizi_count>=48:self.lizi_count=1if self.lizi2_count>=33:self.lizi2_count=1if self.lizi3_count>=80:self.lizi3_count=1if self.lizi2_count:screen.blit(self.lizi2_list[self.lizi2_count], (-100, 500))screen.blit(self.lizi2_list[self.lizi2_count], (200, 500))screen.blit(self.lizi2_list[self.lizi2_count], (500, 500))screen.blit(self.lizi2_list[self.lizi2_count], (800, 500))screen.blit(self.lizi2_list[self.lizi2_count], (1100, 500))self.lizi2_count += 1# if self.lizi3_count:#     screen.blit(self.lizi3_list[self.lizi3_count], (-100, -120))#     screen.blit(self.lizi3_list[self.lizi3_count], (200, -200))#     screen.blit(self.lizi3_list[self.lizi3_count], (500, -120))#     screen.blit(self.lizi3_list[self.lizi3_count], (800, -200))#     screen.blit(self.lizi3_list[self.lizi3_count], (1100, -120))#     self.lizi3_count += 1if self.lizi_count:screen.blit(self.lizi_list[self.lizi_count], (-100, 600))screen.blit(self.lizi_list[self.lizi_count], (200, 550))screen.blit(self.lizi_list[self.lizi_count], (500, 600))screen.blit(self.lizi_list[self.lizi_count], (800, 550))screen.blit(self.lizi_list[self.lizi_count], (1100, 600))self.lizi_count+=1if self.die_count >=64:self.die_count=0self.life=100self.kill_enemy=0self.die = Falseself.stand = Truereturnif self.stand_count>=24:self.stand_count=1if self.flc_count>=32:self.flc_count=0self.flc=Falseif self.life_count>=8:self.life_count=0self.life_remove_bool=Falseif self.attack_one_count>=13:self.attack_one_count=1self.stand=Trueself.attack_Bool = Falseif self.attack_two_count>=6:self.attack_two_count=1self.stand = Trueself.attack_Bool = Falseif self.attack_three_count>=11:self.attack_three_count=1self.stand = Trueself.attack_Bool = Falseif self.walk_count>=12:self.walk_count=1if self.jump_count>=38:self.jump_count=1if self.jn_count>=40:self.jn_count=1if self.hit_count>=47:self.hit_count=1if self.die_count==20:diren_die_music.play()if self.life_remove_bool and not self.die:screen.blit(self.life_list[self.life_count],(self.x,self.y))if self.life_count==0:player_hit_music.play()elif self.life_count==5:player_hit_music.stop()self.stand=Falseself.i = Falseself.j = Falseself.left=Falseself.right=Falseself.jump = Falseself.flc = Falseself.life_count+=1elif self.stand and not self.jump and not self.i and not self.flc  and not self.hit and not self.attack_Bool and not self.life_remove_bool and not self.die:screen.blit(self.stand_list[self.stand_count],(self.x,self.y))self.stand_count+=1elif self.right and not self.stand and not self.jump and not self.i and not self.flc  and not self.hit and not self.attack_Bool and not self.life_remove_bool and not self.die:  # 如果没有站立中 并且left=True,screen.blit(self.walk_right[self.walk_count], (self.x,self.y))  # 绘制马里奥self.walk_count += 1if self.walk_count==2:walk_music.play()elif self.walk_count==1:walk_music.stop()elif self.left and not self.stand and not self.jump and not self.i and not self.flc and not self.hit and not self.attack_Bool and not self.life_remove_bool and not self.die:  # 如果没有站立中 并且left=True,screen.blit(self.walk_left[self.walk_count], (self.x,self.y))  # 绘制马里奥self.walk_count += 1if self.walk_count==2:walk_music.play()elif self.walk_count==1:walk_music.stop()elif self.flc  and not self.die:if self.flc_count==1:feiti_music.play()if self.flc_count==20:feiti_music.stop()screen.blit(self.flc_list[self.flc_count], (self.x, self.y-120))self.flc_count += 1elif self.i  and not self.die:screen.blit(self.jn_list[self.jn_count],(self.x,self.y-75))self.jn_count+=1if self.jn_count == 2:jn_music.play()elif self.jn_count == 1:jn_music.stop()elif self.jump and not self.attack_Bool and not self.die:screen.blit(self.jump_list[self.jump_count],(self.x,self.y-75))self.jump_count+=1if self.jump_count == 2:jump_music.play()elif self.jump_count == 1:jump_music.stop()elif self.attack==1 and self.attack_Bool and not self.die:screen.blit(self.attack_list_one[self.attack_one_count],(self.x,self.y))self.attack_one_count += 1if self.attack_one_count==2:attack_music.play()elif self.attack_one_count==1:attack_music.stop()elif self.attack==2 and self.attack_Bool and not self.die:screen.blit(self.attack_list_two[self.attack_two_count],(self.x,self.y))self.attack_two_count += 1if self.attack_two_count == 2:attack_music.play()elif self.attack_two_count == 1:attack_music.stop()elif self.attack==3 and self.attack_Bool and not self.die:screen.blit(self.attack_list_three[self.attack_three_count],(self.x,self.y))self.attack_three_count += 1if self.attack_three_count == 2:attack_music.play()elif self.attack_three_count == 1:attack_music.stop()elif self.hit and not self.die:screen.blit(self.hit_list[self.hit_count],(self.x,self.y))self.hit_count+=1elif self.die:self.life = 0self.skill = Falseself.attack = Falsescreen.blit(self.die_list[self.die_count],(self.x-100,self.y-20))self.die_count+=1self.hit_box = (self.x, self.y, self.width, self.height)if self.levelAdd:LEVAdd = font.render("LEVEL UP ", True, (255, 0, 0))screen.blit(LEVAdd, (player.x - 50, player.y - 50))screen.blit(self.level_tuple[self.level_count],(self.x-40,self.y-90))self.level_count+=1if self.lifeAdd:screen.blit(self.HP_tuple[self.HP_count],(self.x,self.y-40))self.HP_count+=1if self.all:self.all_lenth+=50screen.blit(self.all_tuple[self.all_count],(self.x+self.all_lenth,self.y+(self.height/2)-210))self.all_count+=1#是否胜利if self.kill_enemy>=7:self.win_bool=Trueelse:self.win_bool=False#敌人死亡删除
def die_enemy_green():enemylist.pop()
def die_enemy_grey():enemylist2.pop()
def die_enemy_pink():enemylist3.pop()
def die_enemy_Boss():enemylist4.pop()#BIG   BOSS
class Boss(object):walk_tuple = ()         #走路元组skill_tuple = ()        #远攻元组attack_tuple = ()       #近攻元组life_remove_tuple = ()          #受伤元组die_tuple = ()          #死亡元组arm_tuple = ()          #胳膊元组for pic_num in range(1,13):walk_tuple += (pygame.image.load("./yellow/walk1/1 ("+str(pic_num)+").png"),)for pic_num in range(1,34):skill_tuple += (pygame.image.load("./yellow/skill/skill ("+str(pic_num)+").png"),)for pic_num in range(1,30):attack_tuple += (pygame.image.load("./yellow/attack/attack ("+str(pic_num)+").png"),)for pic_num in range(1,40):life_remove_tuple += (pygame.image.load("./yellow/hit/hit ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,7):arm_tuple += (pygame.image.load("./yellow/arm/arm ("+str(pic_num)+").png"),)def __init__(self,x,y,start,end):self.x = xself.y = yself.width = 149self.height = 122self.area = [start,end]self.Yarea = [390-self.height,640-self.height]self.walk_count = 0             #走路图片索引self.skill_count = 0            #远攻图片索引self.attack_count = 0           #近攻图片索引self.life_count = 0              #倒地图片索引self.die_count = 0              #逃跑图片索引self.arm_count = 0              #胳膊图片索引self.life = 0                  #boss生命值self.speed = 1.5                #x轴移动速度self.speed_Y = 1.9              #y轴移动速度self.hit_box = (self.x,self.y,self.width,self.height)       #碰撞检测self.die = Falseself.walk = Trueself.skill=Falseself.attack=Falseself.life_remove_bool=Falseself.Enemy_Y = 0                #保留受伤 Y轴 位置self.enemy_img = pygame.image.load("./HP/enemy_yellow.png")      #生命值图标self.game_start_Bool = True                 #加载血条长度def draw(self,screen):global HP_img_bossglobal HP_bool_bossif self.game_start_Bool:self.life+=0.5if self.life>15:self.life=15self.game_start_Bool=Falseself.move()if self.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = Falseif self.arm_count>=6:self.arm_count=0if self.life_count>=39:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True# 敌方走路if self.walk_count>=12:self.walk_count=0#敌方远程攻击if self.skill_count==20 and not self.life_remove_bool and not self.die:if collision_check_tanke(player, enemylist4[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True# 敌方近程攻击if self.attack_count == 17 and not self.life_remove_bool and not self.die:if collision_check_tanke_yellow(player, enemylist4[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True#敌方 远程 技能if self.skill_count >= 33:self.skill_count = 0self.skill=Falseself.walk=True# 敌方 近程 技能if self.attack_count >= 29:self.attack_count = 0self.attack = Falseself.walk = True#坦克死亡if self.die_count >= 60:HP_img_boss = Prop_Hp(random.randint(int(self.x), int(self.x + self.width)), random.randint(int(self.y), int(self.y + self.height)))HP_bool_boss=Trueplayer.kill_enemy+=1self.die_count=0self.skill_count=0self.die=Falseself.walk=Trueself.speed_Y*=2.5self.speed*=2.5self.life=0self.game_start_Bool = Trueself.y=500game_over_music.stop()die_enemy_Boss()return#死亡音效if self.die_count==20:game_over_music.play()if self.life_remove_bool:self.walk=Falseself.skill = Falseself.attack = Falsescreen.blit(self.life_remove_tuple[self.life_count], (self.x, self.y))self.life_count += 1# self.y = player.y + player.height - enemylist4[0].height - 10elif self.skill and not  self.life_remove_bool:if self.skill_count==15:green_jn.play()if self.skill_count==1:green_jn.stop()screen.blit(self.skill_tuple[self.skill_count], (self.x-150, self.y-50))self.skill_count+=1elif self.attack and not  self.life_remove_bool:screen.blit(self.attack_tuple[self.attack_count],(self.x-250,self.y))self.attack_count+=1if self.attack_count == 10 and self.attack:green_attack_music.play()if self.attack_count == 29 or not self.attack:green_attack_music.stop()if self.speed>0 and self.walk and not self.die:self.skill = Falsescreen.blit(self.walk_tuple[self.walk_count],(self.x,self.y))self.walk_count+=1elif  self.speed<0 and self.walk:screen.blit(self.walk_tuple[self.walk_count],(self.x,self.y))self.walk_count+=1elif self.die:self.life = 0self.skill = Falseself.attack = Falseif self.die_count%2==0 and self.die_count<20:pygame.time.delay(10)screen.fill([0, 0, 0])# 敌人 死亡特效elif  self.die_count%2==1 and self.die_count<20:pygame.time.delay(10)screen.fill([255, 0, 0])# 敌人 死亡特效self.x += 11screen.blit(self.arm_tuple[self.arm_count],(700,500))self.arm_count+=1screen.blit(self.die_tuple[self.die_count],(self.x,self.y))self.die_count+=1# 绘制血条screen.blit(self.enemy_img, (1160, 0))pygame.draw.rect(screen, (218, 234, 87), (600 + (15 - self.life) * (540 / 15), 40, (540 / 15) * self.life, 30))if self.game_start_Bool == False and self.life < 15:pygame.draw.rect(screen, (102, 115, 44), (600, 40, 540 - (540 / 15 * self.life), 30))# 敌人移动类def move(self):#遇敌人反向if collision_check_fanxiang(player, enemylist4[0]) or collision_check_fanxiang( enemylist4[0], player) :enemylist4[0].speed = enemylist4[0].speed * -1# 当机甲没有进行攻击时if player.walk_right  or player.stand:#敌人远程技能if collision_check_tanke(player, enemylist4[0])  and not self.life_remove_bool and not self.die  and not self.attack and ( player.stand or player.left or player.right ) and not player.die :self.skill=Trueself.walk = False# 敌人近程技能if collision_check_tanke_yellow(player, enemylist4[0]) and not self.life_remove_bool and not self.die  and not self.skill and ( player.stand or player.left or player.right ) and not player.die:self.attack = Trueself.walk = Falseif self.die_count >= 60:returnif self.walk:# y移动if self.speed_Y>0  and not self.die:if self.y<self.Yarea[1]+self.speed_Y:self.y += self.speed_Yelse:self.speed_Y=self.speed_Y*(-1)self.y+=self.speed_Yself.walk_count=0elif  self.speed_Y<0  and not self.die:if self.y>self.Yarea[0]-self.speed_Y:self.y+=self.speed_Yelse:self.speed_Y = self.speed_Y * (-1)self.y += self.speed_Yself.walk_count = 0if self.speed>0 and not self.die:# X移动if self.x<self.area[1]+self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0elif self.speed<0  and not self.die:# X移动if self.x>self.area[0]-self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0#敌人  BOSS 章鱼
class Enemy_pink(object):walk_left=()walk_right=()die_list = ()life_remove_list = ()falsh_list=()skill_list=()attack_list = ()for pic_num in range(1,83):attack_list+=(pygame.image.load("./pink/attack/attack1 ("+str(pic_num)+").png"),)for pic_num in range(1,17):walk_left+=(pygame.image.load("./pink/walk/"+str(pic_num)+".png"),)for pic_num in range(16,0,-1):walk_right+=(pygame.image.load("./pink/walk/"+str(pic_num)+".png"),)for pic_num in range(1,51):skill_list+=(pygame.image.load("./pink/skill2/"+str(pic_num)+".png"),)#敌人 先起飞 再死亡for pic_num in range(1,58):die_list+=(pygame.image.load("./pink/die/die ("+str(pic_num)+").png"),)# 减血for pic_num in range(1,29):life_remove_list+=(pygame.image.load("./pink/hit/hit ("+str(pic_num)+").png"),)def __init__(self,x,y,start,end):self.x=xself.y=yself.width=361self.height=179self.area=[start,end]self.Yarea = [440, 500] # Y轴 运动 区间self.walk_count=1self.speed=-2self.speed_Y=1.9self.life=0self.hit_box = (self.x, self.y, self.width, self.height)self.die=Falseself.walk=Trueself.die_count=1self.life_count=1self.skill_count=1self.attack_count=0self.life_remove_bool=Falseself.skill=Falseself.attack = Falseself.Enemy_Y=0  #保留受伤 Y轴 位置self.enemy_img = pygame.image.load("./HP/enemy_pink.png")self.HP_img = pygame.image.load("./HP/电池.png")self.game_start_Bool=Truedef draw(self,screen):global HP_img_pinkglobal HP_bool_pinkif self.game_start_Bool:self.life+=0.17if self.life>3:self.life=3self.game_start_Bool=Falseself.move()if self.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = Falseif self.life_count>=28:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True# 敌方走路if self.walk_count>=16:self.walk_count=0#敌方远程攻击if self.skill_count==30 and not self.life_remove_bool and not self.die:if collision_check_tanke_jincheng(player, enemylist3[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True# 敌方近程攻击if self.attack_count == 50 and not self.life_remove_bool and not self.die:if collision_check_tanke(player, enemylist3[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True#敌方 远程 技能if self.skill_count >= 50:self.skill_count = 0self.skill=Falseself.walk=True# 敌方 近程 技能if self.attack_count >= 82:self.attack_count = 0self.attack = Falseself.walk = True#坦克死亡if self.die_count >= 57:HP_img_pink = Prop_Hp(random.randint(int(self.x), int(self.x + self.width)), random.randint(int(self.y), int(self.y + self.height)))HP_bool_pink=Trueplayer.kill_enemy+=1self.die_count=0self.skill_count=0self.die=Falseself.walk=Trueself.speed_Y*=2.5self.speed*=2.5self.life=0self.game_start_Bool=Truediren_die_music.stop()die_enemy_pink()return#死亡音效if self.die_count==20:diren_die_music.play()if self.life_remove_bool:# if player.jump or player.i:#     self.y = player.y + player.height - enemylist3[0].height - 10self.walk=Falseself.skill = Falseself.attack = Falsescreen.blit(self.life_remove_list[self.life_count], (self.x, self.y))self.life_count += 1# self.y = player.y + player.height - enemylist3[0].height - 10elif self.skill and not  self.life_remove_bool:if self.skill_count==15:green_jn.play()if self.skill_count==1:green_jn.stop()screen.blit(self.skill_list[self.skill_count], (self.x-150, self.y-50))self.skill_count+=1elif self.attack and not  self.life_remove_bool:screen.blit(self.attack_list[self.attack_count],(self.x-250,self.y-100))self.attack_count+=1if self.attack_count == 10 and self.attack:green_attack_music.play()if self.attack_count == 55 or not self.attack:green_attack_music.stop()if self.speed>0 and self.walk and not self.die:self.skill = Falsescreen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1elif  self.speed<0 and self.walk:screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1elif self.die:self.life = 0self.skill = Falseself.attack = Falseif self.die_count%2==0 and self.die_count<20:pygame.time.delay(20)screen.fill([0, 0, 0])# 敌人 死亡特效elif  self.die_count%2==1 and self.die_count<20:pygame.time.delay(20)screen.fill([255, 0, 0])# 敌人 死亡特效# if self.die_count<13:#     self.y = player.y + player.height - self.height - 10screen.blit(self.die_list[self.die_count],(self.x,self.y))self.die_count+=1# 绘制血条screen.blit(self.enemy_img, (1040, -45))pygame.draw.rect(screen, (235, 35, 200), (600 + (3 - self.life) * (540 / 3), 40, (540 / 3) * self.life, 30))if self.game_start_Bool == False and self.life < 3:pygame.draw.rect(screen, (80, 0, 100), (600, 40, 540 - (540 / 3 * self.life), 30))# 敌人移动类def move(self):#遇敌人反向if collision_check_fanxiang(player, enemylist3[0]) or collision_check_fanxiang( enemylist3[0], player) :enemylist3[0].speed = enemylist3[0].speed * -1# 当机甲没有进行攻击时if player.walk_right  or player.stand:#敌人远程技能if collision_check_tanke_jincheng(player, enemylist3[0])  and not self.life_remove_bool and not self.die  and not self.attack and ( player.stand or player.left or player.right ):self.skill=Trueself.walk = False# 敌人近程技能if collision_check_tanke(player, enemylist3[0]) and not self.life_remove_bool and not self.die  and not self.skill and ( player.stand or player.left or player.right ):self.attack = Trueself.walk = Falseif self.die_count >= 57:returnif self.walk:# y移动if self.speed_Y>0  and not self.die:if self.y<self.Yarea[1]+self.speed_Y:self.y += self.speed_Yelse:self.speed_Y=self.speed_Y*(-1)self.y+=self.speed_Yself.walk_count=0elif  self.speed_Y<0  and not self.die:if self.y>self.Yarea[0]-self.speed_Y:self.y+=self.speed_Yelse:self.speed_Y = self.speed_Y * (-1)self.y += self.speed_Yself.walk_count = 0if self.speed>0 and not self.die:# X移动if self.x<self.area[1]+self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0elif self.speed<0  and not self.die:# X移动if self.x>self.area[0]-self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0#灰色敌人
class Enemy_grey(object):  # 声明灰色敌人类walk_left=()walk_right=()die_list = ()life_remove_list = ()falsh_list=()skill_list=()# attack_list=()for pic_num in range(2, 0, -1):  # 循环敌人向右行走的图片walk_right+=(pygame.image.load("./grey/walk/walk (" + str(pic_num) + ").png"),)# 加载向右行走的图片for pic_num in range(1, 3):  # 循环敌人向左行走的图片walk_left+=(pygame.image.load("./grey/walk/walk (" + str(pic_num) + ").png"),)# 加载向左行走的图片for pic_num in range(1,22):skill_list+=(pygame.image.load("./grey/skill/skill ("+str(pic_num)+").png"),)#敌人 先起飞 再死亡for pic_num in range(1,36):die_list+=(pygame.image.load("./grey/hit/hit ("+str(pic_num)+").png"),)for pic_num in range(1,45):die_list+=(pygame.image.load("./grey/die/die ("+str(pic_num)+").png"),)# 减血for pic_num in range(1,24):life_remove_list+=(pygame.image.load("./grey/hit/hit ("+str(pic_num)+").png"),)def __init__(self,x,y,start,end):self.x=xself.y=yself.width=124self.height=100self.area=[start,end]self.Yarea = [370, 430] # Y轴 运动 区间self.walk_count=0self.speed=-1.9self.speed_Y=1.9self.life=0self.hit_box = (self.x, self.y, self.width, self.height)self.die=Falseself.walk=Trueself.die_count=1self.life_count=1self.skill_count=1self.attack_count = 0self.life_remove_bool=Falseself.attack=Falseself.skill=Falseself.Enemy_Y=0  #保留受伤 Y轴 位置self.enemy_img = pygame.image.load("./HP/enemy_grey.png")self.HP_img = pygame.image.load("./HP/电池.png")self.game_start_Bool=Truedef draw(self,screen):global HP_img_greyglobal HP_bool_greyif self.game_start_Bool:self.life+=0.145if self.life > 3:self.life = 3self.game_start_Bool = Falseself.move()# 敌方受击#检测生命if self.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = False# if self.life_count==2:#     self.Enemy_Y=self.yif self.life_count>=23:# self.y=self.Enemy_Yself.life_count=1self.life_remove_bool=Falseself.walk=True# 敌方走路if self.walk_count==2:self.walk_count=0#机甲掉血if self.skill_count==12 and not self.life_remove_bool and not self.die:if collision_check_tanke_green(player, enemylist2[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True#敌方技能if self.skill_count >= 21:self.skill_count = 1self.skill=Falseself.walk=True#坦克死亡if self.die_count >= 78:HP_img_grey = Prop_Hp(random.randint(int(self.x), int(self.x + self.width)), random.randint(int(self.y), int(self.y + self.height)))HP_bool_grey=Trueplayer.kill_enemy += 1self.die_count=1self.skill_count = 1self.die=Falseself.walk=Trueself.speed_Y*=2.4self.speed*=2.4self.life=0self.game_start_Bool=Truediren_die_music.stop()die_enemy_grey()return# 死亡音效if self.die_count==35:diren_die_music.play()if self.life_remove_bool:self.skill = Falseself.walk = Falseself.attack = Falseif player.jump or player.i:self.y = player.y + player.height - enemylist2[0].height - 10screen.blit(self.life_remove_list[self.life_count], (self.x-20, self.y-80))self.life_count += 1elif self.skill and not  self.life_remove_bool:screen.blit(self.skill_list[self.skill_count], (self.x-120, self.y))self.skill_count+=1if self.speed>0 and self.walk and not self.die:self.skill = Falsescreen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1elif  self.speed<0 and self.walk and not self.die:screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1elif self.die:self.life = 0self.skill = Falseself.attack = Falseif self.die_count%2==0 and self.die_count<20:pygame.time.delay(20)screen.fill([0, 0, 0])# 敌人 死亡特效elif  self.die_count%2==1 and self.die_count<20:pygame.time.delay(20)screen.fill([255, 0, 0])# 敌人 死亡特效# if self.die_count<20:#     self.y=player.y+player.height-self.height-10-120# else:#     self.y = self.Enemy_Yself.die_count+=1screen.blit(self.die_list[self.die_count], (self.x, self.y))# 绘制血条screen.blit(self.enemy_img, (1150, 63))pygame.draw.rect(screen, (130, 200, 200), (600 + (3 - self.life) * (540 / 3), 100, (540 / 3) * self.life, 30))if self.game_start_Bool == False and self.life < 3:pygame.draw.rect(screen, (50, 75, 75), (600, 100, 540 - (540 / 3 * self.life), 30))# 敌人移动类def move(self):#遇敌人反向if collision_check_fanxiang(player, enemylist2[0]) or collision_check_fanxiang( enemylist2[0], player) :enemylist2[0].speed = enemylist2[0].speed * -1# 当机甲没有进行攻击时if player.walk_right or player.walk_right or player.stand:#远攻if collision_check_tanke(player, enemylist2[0])  and not self.life_remove_bool and not self.die:self.skill=Trueself.walk = Falseif self.walk:# y移动if self.speed_Y>0  and not self.die:if self.y<self.Yarea[1]+self.speed_Y:self.y += self.speed_Yelse:self.speed_Y=self.speed_Y*(-1)self.y+=self.speed_Yself.walk_count=0elif  self.speed_Y<0  and not self.die:if self.y>self.Yarea[0]-self.speed_Y:self.y+=self.speed_Yelse:self.speed_Y = self.speed_Y * (-1)self.y += self.speed_Yself.walk_count = 0if self.speed>0 and not self.die:# X移动if self.x<self.area[1]+self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0elif self.speed<0  and not self.die:# X移动if self.x>self.area[0]-self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0#敌人 绿色坦克
class Enemy(object):walk_left=()walk_right=()die_list = ()life_remove_list = ()falsh_list=()skill_list=()attack_list = ()for pic_num in range(1,24):attack_list+=(pygame.image.load("./green/attack/attack ("+str(pic_num)+").png"),)for pic_num in range(1,9):walk_left+=(pygame.image.load("./green/walk/walk ("+str(pic_num)+").png"),)for pic_num in range(8,0,-1):walk_right+=(pygame.image.load("./green/walk/walk ("+str(pic_num)+").png"),)for pic_num in range(1,38):skill_list+=(pygame.image.load("./green/skill/skill ("+str(pic_num)+").png"),)#敌人 先起飞 再死亡for pic_num in range(1,40):die_list+=(pygame.image.load("./green/die/hit ("+str(pic_num)+").png"),)for pic_num in range(1,65):die_list+=(pygame.image.load("./green/die/die ("+str(pic_num)+").png"),)# 减血for pic_num in range(1,24):life_remove_list+=(pygame.image.load("./green/die/hit ("+str(pic_num)+").png"),)def __init__(self,x,y,start,end):self.x=xself.y=yself.width=133self.height=95self.area=[start,end]self.Yarea = [300, 360] # Y轴 运动 区间self.walk_count=1self.speed=-1.5self.speed_Y=1.9self.life=0self.hit_box = (self.x, self.y, self.width, self.height)self.die=Falseself.walk=Trueself.die_count=1self.life_count=1self.skill_count=1self.attack_count=0self.life_remove_bool=Falseself.skill=Falseself.attack = Falseself.Enemy_Y=0  #保留受伤 Y轴 位置self.enemy_img=pygame.image.load("./HP/enemy_green.png")self.game_start_Bool=Truedef draw(self,screen):global HP_img_greenglobal HP_bool_greenif self.game_start_Bool:self.life+=0.12if self.life > 3:self.life = 3self.game_start_Bool = Falseself.move()if self.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = False# 敌方受击# if self.life_count==2:#     self.Enemy_Y=self.yif self.life_count>=23:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True# 敌方走路if self.walk_count>=8:self.walk_count=0#敌方远程攻击if self.skill_count==25 and not self.life_remove_bool and not self.die:if collision_check_tanke(player, enemylist[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True# 敌方近程攻击if self.attack_count == 14 and not self.life_remove_bool and not self.die:if collision_check_tanke_jincheng(player, enemylist[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True#敌方 远程 技能if self.skill_count >= 37:self.skill_count = 0self.skill=Falseself.walk=True# 敌方 近程 技能if self.attack_count >= 23:self.attack_count = 0self.attack = Falseself.walk = True#坦克死亡if self.die_count >= 103:HP_img_green = Prop_Hp(random.randint(int(self.x), int(self.x + self.width)), random.randint(int(self.y), int(self.y + self.height)))HP_bool_green=Trueplayer.kill_enemy+=1self.die_count=0self.skill_count=0self.die=Falseself.walk=Trueself.speed_Y*=2.2self.speed*=2.2self.life=0self.game_start_Bool=Truediren_die_music.stop()die_enemy_green()return#死亡音效if self.die_count==40:diren_die_music.play()if self.life_remove_bool:if player.jump or player.i:self.y = player.y + player.height - enemylist[0].height - 10self.walk=Falseself.skill = Falseself.attack = Falsescreen.blit(self.life_remove_list[self.life_count], (self.x, self.y))self.life_count += 1# self.y = player.y + player.height - enemylist[0].height - 10if self.skill and not  self.life_remove_bool:if self.skill_count==20:green_jn.play()if self.skill_count==1:green_jn.stop()screen.blit(self.skill_list[self.skill_count], (self.x-150, self.y-90))self.skill_count+=1if self.attack_count == 1 and self.attack :green_attack_music.play()if self.attack_count == 15 or not self.attack:green_attack_music.stop()if self.attack and not  self.life_remove_bool:screen.blit(self.attack_list[self.attack_count],(self.x-50,self.y))self.attack_count+=1if self.speed>0 and self.walk and not self.die:self.skill = Falsescreen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1elif  self.speed<0 and self.walk:screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1elif self.die:self.skill = Falseself.attack = Falseself.life = 0if self.die_count%2==0 and self.die_count<20:pygame.time.delay(20)screen.fill([0, 0, 0])# 敌人 死亡特效elif  self.die_count%2==1 and self.die_count<20:pygame.time.delay(20)screen.fill([255, 0, 0])# 敌人 死亡特效screen.blit(self.die_list[self.die_count],(self.x,self.y))self.die_count+=1# 绘制血条screen.blit(self.enemy_img, (1125, 120))pygame.draw.rect(screen, (0, 200, 115), (600 + (3 - self.life) * (540 / 3), 160, (540 / 3) * self.life, 30))if self.game_start_Bool == False and self.life < 3:pygame.draw.rect(screen, (0, 65, 20), (600, 160, 540 - (540 / 3 * self.life), 30))# 敌人移动类def move(self):#遇敌人反向if collision_check_fanxiang(player, enemylist[0]) or collision_check_fanxiang( enemylist[0], player) :enemylist[0].speed = enemylist[0].speed * -1#当机甲没有进行攻击时if player.walk_right or player.walk_right or player.stand:#敌人远程技能if collision_check_tanke(player, enemylist[0])  and not self.life_remove_bool and not self.die  and not self.attack:self.skill=Trueself.walk = False# 敌人近程技能if collision_check_tanke_jincheng(player, enemylist[0]) and not self.life_remove_bool and not self.die  and not self.skill:self.attack = Trueself.walk = Falseif self.die_count >= 63:returnif self.walk:# y移动if self.speed_Y>0  and not self.die:if self.y<self.Yarea[1]+self.speed_Y:self.y += self.speed_Yelse:self.speed_Y=self.speed_Y*(-1)self.y+=self.speed_Yself.walk_count=0elif  self.speed_Y<0  and not self.die:if self.y>self.Yarea[0]-self.speed_Y:self.y+=self.speed_Yelse:self.speed_Y = self.speed_Y * (-1)self.y += self.speed_Yself.walk_count = 0if self.speed>0 and not self.die:# X移动if self.x<self.area[1]+self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0elif self.speed<0  and not self.die:# X移动if self.x>self.area[0]-self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0#血瓶
class Prop_Hp(object):def __init__(self,x,y):self.x=xself.y=yself.width=64self.height=64self.HP=2self.imglist=[pygame.image.load("./HP/HP.png"),pygame.image.load("./HP/HP2.png"),pygame.image.load("./HP/HP3.png"),pygame.image.load("./HP/gun.png"),pygame.image.load("./HP/gun2.png"),pygame.image.load("./HP/gun3.png"),pygame.image.load("./HP/gun4.png")]self.ran=random.randint(0,6)self.img=self.imglist[self.ran]def draw(self,screen):global HP_bool_greenglobal HP_bool_greyglobal HP_bool_pinkscreen.blit(self.img,(self.x,self.y))if HP_bool_grey:if HP_img_grey.imglist.index(HP_img_grey.img)>2:if collision_check_tanke_HP(player, HP_img_grey):player.levelAdd = Trueplayer.level += 1player.life += 5if player.life > 100:player.life = 100HP_bool_grey = Falseelse:if collision_check_tanke_HP(player, HP_img_grey):player.lifeAdd=Trueplayer.life += 5if player.life >= 100:player.life=100HP_bool_grey=Falseif HP_bool_green:if HP_img_green.imglist.index(HP_img_green.img) > 2:if collision_check_tanke_HP(player, HP_img_green):player.levelAdd = Trueplayer.level += 1player.life += 5if player.life > 100:player.life = 100HP_bool_green = Falseelse:if collision_check_tanke_HP(player, HP_img_green):player.lifeAdd = Trueplayer.life += 5if player.life >= 100:player.life=100HP_bool_green=Falseif HP_bool_pink:if HP_img_pink.imglist.index(HP_img_pink.img) > 2:if collision_check_tanke_HP(player, HP_img_pink):player.levelAdd = Trueplayer.level += 1player.life += 5if player.life>100:player.life=100HP_bool_pink = Falseelse:if collision_check_tanke_HP(player, HP_img_pink):player.lifeAdd = Trueplayer.life += 5if player.life >= 100:player.life=100HP_bool_pink=Falseback_music.play(-1)#主要绘制函数
def draw_img():global load_countglobal FRAM_PER_SECONDSglobal set_imgif load_count>=29:load_count=30load_music.stop()screen.blit(map_img, (0, 0))#打开  游戏 战斗背景 音乐back_music.set_volume(0.06)set_img=pygame.image.load("./load_img/setbig.png")screen.blit(set_img,(10,10))if HP_bool_green==True:HP_img_green.draw(screen)if HP_bool_grey==True:HP_img_grey.draw(screen)if HP_bool_pink==True:HP_img_pink.draw(screen)if len(enemylist) and  len(enemylist2) and  len(enemylist3):if  player.y+player.height < enemylist[0].y+enemylist[0].height < enemylist2[0].y+enemylist2[0].height < enemylist3[0].y+enemylist3[0].height and not player.jump and not enemylist[0].die  and not enemylist2[0].die  and not enemylist3[0].die:player.draw(screen)enemylist[0].draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)elif  enemylist[0].y+enemylist[0].height <   player.y+player.height < enemylist2[0].y+enemylist2[0].height < enemylist3[0].y+enemylist3[0].height and not player.jump and not enemylist[0].die  and not enemylist2[0].die  and not enemylist3[0].die:enemylist[0].draw(screen)player.draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)elif  enemylist[0].y+enemylist[0].height < enemylist2[0].y+enemylist2[0].height <  player.y+player.height < enemylist3[0].y+enemylist3[0].height and not player.jump and not enemylist[0].die  and not enemylist2[0].die  and not enemylist3[0].die:enemylist[0].draw(screen)enemylist2[0].draw(screen)player.draw(screen)enemylist3[0].draw(screen)elif enemylist[0].y+enemylist[0].height < enemylist2[0].y+enemylist2[0].height < enemylist3[0].y+enemylist3[0].height <  player.y+player.height and not player.jump and not enemylist[0].die  and not enemylist2[0].die  and not enemylist3[0].die:enemylist[0].draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif player.jump :enemylist[0].draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)#敌人受攻击时 先后绘制elif enemylist[0].life_remove_bool or enemylist[0].die:enemylist[0].draw(screen)enemylist3[0].draw(screen)enemylist2[0].draw(screen)player.draw(screen)elif enemylist2[0].life_remove_bool or enemylist2[0].die:enemylist[0].draw(screen)enemylist3[0].draw(screen)enemylist2[0].draw(screen)player.draw(screen)elif enemylist3[0].life_remove_bool or enemylist3[0].die:enemylist[0].draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif enemylist[0].life_remove_bool and enemylist2[0].life_remove_bool or enemylist[0].die or enemylist2[0].die:enemylist3[0].draw(screen)enemylist[0].draw(screen)enemylist2[0].draw(screen)player.draw(screen)elif enemylist[0].life_remove_bool and enemylist3[0].life_remove_bool or enemylist[0].die or enemylist3[0].die:enemylist2[0].draw(screen)enemylist[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif enemylist2[0].life_remove_bool and enemylist3[0].life_remove_bool or enemylist2[0].die or enemylist3[0].die:enemylist[0].draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)else:enemylist[0].draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif  len(enemylist) and  len(enemylist2): #绿色和灰色if  player.y+player.height < enemylist[0].y+enemylist[0].height < enemylist2[0].y+enemylist2[0].height  and not player.jump  and not enemylist[0].die  and not enemylist2[0].die:player.draw(screen)enemylist[0].draw(screen)enemylist2[0].draw(screen)elif enemylist[0].y+enemylist[0].height < player.y+player.height < enemylist2[0].y+enemylist2[0].height  and not player.jump and not enemylist[0].die  and not enemylist2[0].die:enemylist[0].draw(screen)player.draw(screen)enemylist2[0].draw(screen)elif enemylist[0].y + enemylist[0].height < enemylist2[0].y + enemylist2[0].height < player.y + player.height and not player.jump and not enemylist[0].die  and not enemylist2[0].die:enemylist[0].draw(screen)enemylist2[0].draw(screen)player.draw(screen)elif player.jump :player.draw(screen)enemylist[0].draw(screen)enemylist2[0].draw(screen)# 敌人受攻击时 先后绘制elif enemylist[0].life_remove_bool or enemylist[0].die:#绿色enemylist[0].draw(screen)enemylist2[0].draw(screen)player.draw(screen)elif enemylist2[0].life_remove_bool or enemylist2[0].die:#灰色enemylist[0].draw(screen)enemylist2[0].draw(screen)player.draw(screen)elif enemylist[0].life_remove_bool and enemylist2[0].life_remove_bool or enemylist[0].die or enemylist2[0].die:#绿色和灰色enemylist[0].draw(screen)enemylist2[0].draw(screen)player.draw(screen)elif len(enemylist) and len(enemylist3): #绿色和粉色if  player.y+player.height < enemylist[0].y+enemylist[0].height < enemylist3[0].y+enemylist3[0].height  and not player.jump and not enemylist[0].die  and not enemylist3[0].die:player.draw(screen)enemylist[0].draw(screen)enemylist3[0].draw(screen)elif enemylist[0].y+enemylist[0].height < player.y+player.height < enemylist3[0].y+enemylist3[0].height  and not player.jump and not enemylist[0].die  and not enemylist3[0].die:enemylist[0].draw(screen)player.draw(screen)enemylist3[0].draw(screen)elif enemylist[0].y + enemylist[0].height < enemylist3[0].y + enemylist3[0].height < player.y + player.height and not player.jump and not enemylist[0].die  and not enemylist3[0].die:enemylist[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif player.jump :player.draw(screen)enemylist[0].draw(screen)enemylist3[0].draw(screen)# 敌人受攻击时 先后绘制elif enemylist[0].life_remove_bool or enemylist[0].die:  # 绿色enemylist[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif enemylist3[0].life_remove_bool or enemylist3[0].die:  # 粉色enemylist[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif enemylist[0].life_remove_bool and enemylist3[0].life_remove_bool or enemylist[0].die  or enemylist3[0].die:  # 绿色和灰色enemylist[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif len(enemylist2) and len(enemylist3): #粉色和灰色if  player.y+player.height < enemylist2[0].y+enemylist2[0].height < enemylist3[0].y+enemylist3[0].height  and not player.jump and not enemylist2[0].die  and not enemylist3[0].die:player.draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)elif enemylist2[0].y+enemylist2[0].height < player.y+player.height < enemylist3[0].y+enemylist3[0].height  and not player.jump and not enemylist2[0].die  and not enemylist3[0].die:enemylist2[0].draw(screen)player.draw(screen)enemylist3[0].draw(screen)elif enemylist2[0].y + enemylist2[0].height < enemylist3[0].y + enemylist3[0].height < player.y + player.height and not player.jump and not enemylist2[0].die  and not enemylist3[0].die:enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif player.jump :player.draw(screen)enemylist2[0].draw(screen)enemylist3[0].draw(screen)# 敌人受攻击时 先后绘制elif enemylist3[0].life_remove_bool or enemylist3[0].die:  # 粉色enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif enemylist2[0].life_remove_bool or enemylist2[0].die:  # 灰色enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif enemylist[0].life_remove_bool and enemylist2[0].life_remove_bool or enemylist2[0].die or enemylist3[0].die:  # 绿色和灰色enemylist2[0].draw(screen)enemylist3[0].draw(screen)player.draw(screen)elif len(enemylist): #绿色if player.y + player.height < enemylist[0].y + enemylist[0].height and not player.jump and not enemylist[0].die :player.draw(screen)enemylist[0].draw(screen)else:enemylist[0].draw(screen)player.draw(screen)elif len(enemylist2): #灰色if player.y + player.height < enemylist2[0].y + enemylist2[0].height and not player.jump and not enemylist2[0].die:player.draw(screen)enemylist2[0].draw(screen)else:enemylist2[0].draw(screen)player.draw(screen)elif len(enemylist3): #灰色if player.y + player.height < enemylist3[0].y + enemylist3[0].height and not player.jump and not enemylist3[0].die:player.draw(screen)enemylist3[0].draw(screen)else:enemylist3[0].draw(screen)player.draw(screen)if len(enemylist)+ len(enemylist2) +len(enemylist4)+ len(enemylist3)==0 and check==1 and player.kill_enemy<3:print(check)enemylist.append(green)enemylist2.append(grey)enemylist3.append(pink)player.draw(screen)# enemylist4.append(boss)elif len(enemylist)+ len(enemylist2) +len(enemylist4)+ len(enemylist3)==0 and check==2 and player.kill_enemy<6:print(check)enemylist.append(green)enemylist2.append(grey)enemylist3.append(pink)player.draw(screen)# enemylist4.append(boss)elif len(enemylist)+ len(enemylist2) +len(enemylist4)+ len(enemylist3)==0 and check==3 and player.kill_enemy<7:print(check)# enemylist.append(green)# enemylist2.append(grey)# enemylist3.append(pink)enemylist4.append(boss)player.draw(screen)elif len(enemylist) + len(enemylist2) +len(enemylist4) + len(enemylist3) == 0 and  player.kill_enemy==7 and check==3:player.draw(screen)Check_fun.draw(screen)#箭头 -- 动态check_music.play()elif len(enemylist) + len(enemylist2) +len(enemylist4) + len(enemylist3) == 0 and  player.kill_enemy==6 and check==2:player.draw(screen)Check_fun.draw(screen)#箭头 -- 动态check_music.play()elif len(enemylist) + len(enemylist2) +len(enemylist4) + len(enemylist3) == 0 and  player.kill_enemy==3 and check==1:player.draw(screen)Check_fun.draw(screen)#箭头 -- 动态check_music.play()if len(enemylist4) and  len(enemylist) + len(enemylist2) + len(enemylist3) >0:enemylist4[0].draw(screen)elif len(enemylist4) and  len(enemylist) + len(enemylist2) + len(enemylist3) == 0:player.draw(screen)enemylist4[0].draw(screen)jn = pygame.image.load("./cd/Equipmentbarl.png")screen.blit(jn, (200, 565))if player.cd and player.i:screen.blit(player.cd_tuple[player.cd_count], (210, 575))player.cd_count += 1elif player.cd and player.flc:screen.blit(player.cd_tuple[player.cd_count], (280, 575))player.cd_count += 1elif player.cd and player.attack_Bool:screen.blit(player.cd_tuple[player.cd_count], (350, 575))player.cd_count += 1elif player.cd and player.all:screen.blit(player.cd_tuple[player.cd_count], (420, 575))player.cd_count += 1LEVEL = font.render("LEVEL : " + str(player.level), True, (60, 200, 200))screen.blit(LEVEL, (210, 530))# 绘制血条screen.blit(player.player_img, (10, 520))pygame.draw.rect(screen, (72, 32, 38), (200, 650, 750, 35))pygame.draw.rect(screen, (230, 65, 92), (200, 650, (750 / 100) * player.life, 35))FRAM_PER_SECONDS = 16elif load_count<=28:screen.blit(load_image[load_count],(load_img_x,load_img_y))load_count+=1def game_load():# load_music.play()global game_startglobal game_endscreen.blit(start_back, (0, 0))game_start=pygame.image.load("./load_img/开始游戏1.png")game_end=pygame.image.load("./load_img/退出游戏2.png")screen.blit(game_start, (446,300))screen.blit(game_end,(446,500))if start_flag==True:screen.fill((16,16,16))draw_img()def start_button():global start_flagglobal pausefor event in pygame.event.get():if load_animate == True:passelif event.type==pygame.MOUSEBUTTONDOWN:if start_flag == False and (406 <= pygame.mouse.get_pos()[0] <= 406 + game_start.get_width()) and (300 <= pygame.mouse.get_pos()[1] <= 300 + game_start.get_height()):start_flag=Truestart_music.stop()  # 游戏开始音效load_music.play(-1)if start_flag == False and (406 <= pygame.mouse.get_pos()[0] <= 406 + game_end.get_width()) and (500 <= pygame.mouse.get_pos()[1] <= 500 + game_end.get_height()):sys.exit()if event.type == pygame.MOUSEBUTTONDOWN:if (10 <= event.pos[0] <= 10 + 121) and (10 <= event.pos[1] <= 10 + 95) and pause == False:pause = Truepaused()#拾取血包
def collision_check_tanke_HP(a,b):temp1= (b.x+b.width>a.x+a.width-30>b.x)#角色的攻击区间  容错区间temp2= (-40<(b.y+b.height)-(a.y+a.height)<=45)return temp1 and  temp2#敌人技能  近程技能
def collision_check_tanke_yellow(a,b):temp1= (b.x+b.width>a.x+a.width+210>b.x)#角色的攻击区间  容错区间temp2= (-40<(b.y+b.height)-(a.y+a.height)<=45)return temp1 and  temp2#敌人技能  近程技能
def collision_check_tanke_jincheng(a,b):temp1= (b.x+b.width>a.x+a.width+50>b.x)#角色的攻击区间  容错区间temp2= (-40<(b.y+b.height)-(a.y+a.height)<=45)return temp1 and  temp2#绿色敌人技能  近程技能
def collision_check_tanke_green(a,b):temp1= (b.x+b.width>a.x+a.width+150>b.x)#角色的攻击区间  容错区间temp2= (-40<(b.y+b.height)-(a.y+a.height)<=45)return temp1 and  temp2#敌人技能  远攻技能
def collision_check_tanke(a,b):temp1= (b.x+b.width>a.x+a.width+170>b.x)#角色的攻击区间  容错区间temp2= (-40<(b.y+b.height)-(a.y+a.height)<=45)return temp1 and  temp2#敌人 遇我 进行反向
def collision_check_fanxiang(a,b):temp1= (b.x+b.width>=a.x+a.width>=b.x)#角色的攻击区间  容错区间temp2= (-19<(b.y+b.height)-(a.y+a.height)<=35)return temp1 and  temp2#基本技能 碰撞检测 类
def collision_check(a,b):temp1= (b.x+b.width>a.x+a.width+150>b.x)#角色的攻击区间  容错区间temp2= (-60<(b.y+b.height)-(a.y+a.height)<=60)return temp1 and  temp2
#机甲飞踢 碰撞检测 类
def collision_check_foot(a,b):temp1= (b.x+b.width>a.x+a.width+150>b.x)#角色的攻击区间  容错区间temp2= (-60<(b.y+b.height)-(a.y+a.height)<=60)return temp1 and  temp2#碰撞检测函数
def collision_check_HP(a,b):temp1 = (b.x<=a.x+a.width<=b.x+b.width)temp2 = (b.y<=a.y+a.height<=b.y+b.height)return temp1 and temp2#all 技能
def U_Testing(enemy_obj):if len(enemy_obj):if  not enemy_obj[0].die:enemy_obj[0].x+=100enemy_obj[0].life -= 3enemy_obj[0].life_remove_bool = Trueenemy_obj[0].walk = Falseenemy_obj[0].skill = Falseenemy_obj[0].attack = Falseenemy_obj[0].x += 20if enemy_obj[0].life <= 0:enemy_obj[0].life_remove_bool = Falseenemy_obj[0].die = Trueenemy_obj[0].walk = False#三段普攻
def J_Testing(enemy_obj):if len(enemy_obj):if collision_check(player, enemy_obj[0]) and not enemy_obj[0].die:enemy_obj[0].life -= 3enemy_obj[0].life_remove_bool = Trueenemy_obj[0].walk = Falseenemy_obj[0].skill = Falseenemy_obj[0].attack = Falseenemy_obj[0].x += 20if enemy_obj[0].life <= 0:enemy_obj[0].life_remove_bool = Falseenemy_obj[0].die = Trueenemy_obj[0].walk = False#跳跃检测
def Jump_Testing(enemy_obj):if len(enemy_obj):if enemy_obj[0].x + enemy_obj[0].width > player.x > enemy_obj[0].x and player.y + player.height > enemy_obj[0].y + enemy_obj[0].height - 40 and player.y + player.height < enemy_obj[0].y + enemy_obj[0].height + 40:player.x = enemy_obj[0].width + enemy_obj[0].x + 15player.right = True  # 设置进行禁止穿模 位移到两侧# player.walk=Trueif player.x < enemy_obj[0].x < player.x + player.width and player.y + player.height > enemy_obj[0].y + enemy_obj[0].height - 40 and player.y + player.height < enemy_obj[0].y + enemy_obj[0].height + 40:player.x = enemy_obj[0].x - player.width - 15player.left = True  # 设置进行禁止穿模 位移到两侧# player.walk=True
#I技能检测
def I_Testing(enemy_obj):if len(enemy_obj):enemy_obj[0].Enemy_Y = enemy_obj[0].yif collision_check(player, enemy_obj[0]):enemy_obj[0].Enemy_Y = enemy_obj[0].yenemy_obj[0].life_remove_bool = Trueenemy_obj[0].y = player.y + player.height - enemy_obj[0].height - 100enemy_obj[0].skill = Falseenemy_obj[0].attack = Falseenemy_obj[0].walk = Falseenemy_obj[0].life -= 4enemy_obj[0].x += 20if enemy_obj[0].life <= 0:enemy_obj[0].life_remove_bool = Falseenemy_obj[0].die = Trueenemy_obj[0].walk = Falsereturn enemy_obj#暂停
def unpause():global pauseback_music.set_volume(0.06)pause=False#设置
def paused():global flagglobal checkglobal pausezanting=pygame.image.load("./load_img/返回游戏.png")         #图片按钮quit_img=pygame.image.load("./load_img/退出游戏.png")        #图片按钮restart_img = pygame.image.load("./load_img/重新开始.png")   #图片按钮logo_img=pygame.image.load("./load_img/logo.png")            #图片按钮screen.blit(zanting, (185,190))screen.blit(restart_img, (185, 280))screen.blit(quit_img, (185, 370))screen.blit(logo_img,(595,150))back_music.set_volume(0)                                      #背景音乐暂停while pause:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()# quit()if load_count>=29 and pause==True:if event.type == pygame.MOUSEBUTTONDOWN :                #继续游戏-- 点击屏幕 MENU 按钮 第一种继续游戏if (10 <= event.pos[0] <= 10 + set_img.get_width()) and (10 <= event.pos[1] <= 10 + set_img.get_height()):unpause()if event.type == pygame.MOUSEBUTTONDOWN:                #继续游戏-- 点击屏幕 继续游戏 菜单 第二种继续游戏if (185 <= event.pos[0] <= 185 + zanting.get_width()) and (190 <= event.pos[1] <= 190 + zanting.get_height()):unpause()if event.type == pygame.MOUSEBUTTONDOWN:                #退出游戏--按钮if (185 <= event.pos[0] <= 185 + zanting.get_width()) and (370 <= event.pos[1] <= 370 + zanting.get_height()):sys.exit()if event.type == pygame.MOUSEBUTTONDOWN:                #重新开始--按钮if (185 <= event.pos[0] <= 185 + zanting.get_width()) and (280 <= event.pos[1] <= 280 + zanting.get_height()):check=5unpause()pygame.display.update()y=100
HP_bool_green=False
HP_bool_grey=False
HP_bool_pink=False
def start():global load_animateglobal checkglobal map_imgglobal enemylistglobal enemylist2global enemylist3global enemylist4global HP_bool_greenglobal HP_bool_greyglobal HP_bool_pinkglobal playerglobal Check_funglobal greenglobal greyglobal bossglobal pauseglobal pinkglobal keysenemylist = []enemylist2 = []enemylist3 = []enemylist4 = []player = Player(160, 410, 100, 100)Check_fun = check_fun()green = Enemy(random.randint(500, WIDTH - 133), 420, 500, WIDTH - 153)grey = Enemy_grey(random.randint(500, WIDTH - 133), 430, 500, WIDTH - 203)pink = Enemy_pink(random.randint(500, WIDTH - 133), 440, 500, WIDTH - 401)boss = Boss(random.randint(500, WIDTH - 133), 440, 500, WIDTH -400)enemylist.append(green)enemylist2.append(grey)enemylist3.append(pink)# enemylist4.append(boss)while True:clock.tick(FRAM_PER_SECONDS)  #可以说是循环执行的次数  #我认为只是设置游戏运行的速度,或者设置while循环更新自身、运行自身的频率game_load()start_button()for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()if event.type == pygame.MOUSEBUTTONDOWN:if load_animate:load_animate=Falsescreen.fill((16,16,16))keys = pygame.key.get_pressed()  # 获取所有键盘事件if  pause==False and start_flag:if keys[pygame.K_ESCAPE]:pause=Truepaused()if player.life<=0:player.die=Trueif player.die_count>=64:player.die=Falsereturn ""#全局速度if keys[pygame.K_LSHIFT] :player.speed = 4if keys[pygame.K_LSHIFT] and pygame.key.get_mods() & keys[pygame.K_k]:player.speed=6else:if  len(enemylist)+ len(enemylist2) +len(enemylist3) +len(enemylist4) ==4:player.speed = 1elif  len(enemylist)+ len(enemylist2) +len(enemylist3) +len(enemylist4) ==3:player.speed = 3elif len(enemylist) + len(enemylist2) + len(enemylist3) +len(enemylist4) == 2:player.speed = 5elif len(enemylist) + len(enemylist2) + len(enemylist3) +len(enemylist4) == 1:player.speed = 10else:player.speed = 15# 敌人绿色  穿模设置if len(enemylist) and  keys[pygame.K_d]  and player.x < WIDTH-player.height :# D 键走动  禁止与敌人穿模#当敌人死亡时 直线行走if keys[pygame.K_d] and player.x < WIDTH and not player.attack_Bool  and enemylist[0].die :player.x += player.speedplayer.right = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_d] and ((player.y+player.height<=enemylist[0].y+enemylist[0].height-40) or (player.y+player.height>=enemylist[0].y+enemylist[0].height+20 )):player.x+=player.speedplayer.right = Trueplayer.stand = False# player.jump = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist[0].die and keys[pygame.K_d] and (player.x+player.width <= enemylist[0].x-10 or player.x>=enemylist[0].x+enemylist[0].width):player.x+=player.speedplayer.right = Trueplayer.stand = False# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist[0].die and keys[pygame.K_d] and player.x+player.width > enemylist[0].x :player.stand=Trueplayer.left=Falseplayer.right=True#左键if len(enemylist) and keys[pygame.K_a] and player.x >0:# 当敌人死亡时 直线行走if keys[pygame.K_a] and player.x > 0  and not player.attack_Bool and enemylist[0].die:player.x -= player.speedplayer.left = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_a] and (player.y + player.height <= enemylist[0].y + enemylist[0].height - 40 or player.y + player.height >= enemylist[0].y + enemylist[0].height + 20):player.x -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist[0].die and keys[pygame.K_a] and (( player.x >= enemylist[0].x+enemylist[0].width+10) or (player.x+player.width <enemylist[0].x)):player.x -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist[0].die and keys[pygame.K_a] and player.x < enemylist[0].x+enemylist[0].width :player.stand = Trueplayer.left = Trueplayer.right = False#w 键 上 禁止穿模if len(enemylist) and keys[pygame.K_w] and player.y+player.height >390 and not player.jump  and not player.i:# 当敌人死亡时 直线行走if keys[pygame.K_w] and player.y > 390  and not player.attack_Bool and not player.jump and enemylist[0].die:player.y -= player.speedplayer.left = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_w] and ((player.x + player.width < enemylist[0].x) or (player.x  > enemylist[0].x + enemylist[0].width )):player.y -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist[0].die and keys[pygame.K_w] and ( player.y+player.height >= enemylist[0].y+enemylist[0].height+20 or player.y+player.height <= enemylist[0].y+enemylist[0].height-40):player.y -= player.speedplayer.left = Trueplayer.stand = Falseif player.y+player.height>enemylist[0].y+enemylist[0].height and  player.y+player.height-enemylist[0].y-enemylist[0].height<20:player.y=enemylist[0].y+enemylist[0].height+20-player.height# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist[0].die and keys[pygame.K_w] and player.y+player.height < enemylist[0].y+enemylist[0].height+20  and  player.y+player.height > enemylist[0].y+enemylist[0].height-40 :player.y = enemylist[0].y + enemylist[0].height+20-player.heightif player.y>640:player.y=640player.stand=Trueplayer.right=Falseplayer.left=True# s 键 上 禁止穿模if len(enemylist) and keys[pygame.K_s] and player.y + player.height < 640 and not player.jump  and not player.i:# 当敌人死亡时 直线行走if keys[pygame.K_s] and player.y < 640 and not player.attack_Bool and not player.jump and enemylist[0].die:player.y += player.speedplayer.right = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_s] and ((player.x + player.width < enemylist[0].x) or (player.x > enemylist[0].x + enemylist[0].width)):player.y += player.speedplayer.right = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist[0].die and keys[pygame.K_s] and (player.y + player.height >= enemylist[0].y + enemylist[0].height + 20 or player.y + player.height <=enemylist[0].y + enemylist[0].height - 40):player.y += player.speedplayer.right = Trueplayer.stand = Falseif player.y+player.height<enemylist[0].y+enemylist[0].height and player.y + player.height - enemylist[0].y - enemylist[0].height > -40:player.y = enemylist[0].y + enemylist[0].height -40 - player.height# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist[0].die and keys[pygame.K_s] and player.y + player.height > enemylist[0].y + enemylist[0].height - 40 and  player.y + player.height < enemylist[0].y + enemylist[0].height + 20  :player.y = enemylist[0].y + enemylist[0].height-40-player.heightif player.y<390:player.y=390player.left = Falseplayer.right = Trueplayer.stand = True# 敌人灰色  穿模设置if len(enemylist2) and keys[pygame.K_d] and player.x < WIDTH - player.height:# D 键走动  禁止与敌人穿模# 当敌人死亡时 直线行走if keys[pygame.K_d] and player.x < WIDTH and not player.attack_Bool and enemylist2[0].die:player.x += player.speedplayer.right = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_d] and ((player.y + player.height <= enemylist2[0].y + enemylist2[0].height - 40) or (player.y + player.height >= enemylist2[0].y + enemylist2[0].height + 20)):player.x += player.speedplayer.right = Trueplayer.stand = False# player.jump = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist2[0].die and keys[pygame.K_d] and (player.x + player.width <= enemylist2[0].x - 10 or player.x >= enemylist2[0].x + enemylist2[0].width):player.x += player.speedplayer.right = Trueplayer.stand = False# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist2[0].die and keys[pygame.K_d] and player.x + player.width > enemylist2[0].x:player.stand = Trueplayer.left = Falseplayer.right = True# 左键if len(enemylist2) and keys[pygame.K_a] and player.x > 0:# 当敌人死亡时 直线行走if keys[pygame.K_a] and player.x > 0 and not player.attack_Bool and enemylist2[0].die:player.x -= player.speedplayer.left = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_a] and (player.y + player.height <= enemylist2[0].y + enemylist2[0].height - 40 or player.y + player.height >= enemylist2[0].y + enemylist2[0].height + 20):player.x -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist2[0].die and keys[pygame.K_a] and ((player.x >= enemylist2[0].x + enemylist2[0].width + 10) or (player.x + player.width < enemylist2[0].x)):player.x -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist2[0].die and keys[pygame.K_a] and player.x < enemylist2[0].x + enemylist2[0].width:player.stand = Trueplayer.left = Trueplayer.right = False# w 键 上 禁止穿模if len(enemylist2) and keys[pygame.K_w] and player.y + player.height > 390 and not player.jump and not player.i:# 当敌人死亡时 直线行走if keys[pygame.K_w] and player.y > 390 and not player.attack_Bool and not player.jump and enemylist2[0].die:player.y -= player.speedplayer.left = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_w] and ((player.x + player.width < enemylist2[0].x) or (player.x > enemylist2[0].x + enemylist2[0].width)):player.y -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist2[0].die and keys[pygame.K_w] and (player.y + player.height >= enemylist2[0].y + enemylist2[0].height + 20 or player.y + player.height <= enemylist2[0].y + enemylist2[0].height - 40):player.y -= player.speedplayer.left = Trueplayer.stand = Falseif player.y + player.height > enemylist2[0].y + enemylist2[0].height and player.y + player.height - enemylist2[0].y - enemylist2[0].height < 20:player.y = enemylist2[0].y + enemylist2[0].height + 20 - player.height# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist2[0].die and keys[pygame.K_w] and player.y + player.height < enemylist2[0].y + enemylist2[0].height + 20 and player.y + player.height > enemylist2[0].y + enemylist2[0].height - 40:player.y = enemylist2[0].y + enemylist2[0].height + 20 - player.heightif player.y > 640:player.y = 640player.stand = Trueplayer.right = Falseplayer.left = True# s 键 上 禁止穿模if len(enemylist2) and keys[pygame.K_s] and player.y + player.height < 640 and not player.jump and not player.i:# 当敌人死亡时 直线行走if keys[pygame.K_s] and player.y < 640 and not player.attack_Bool and not player.jump and enemylist2[0].die:player.y += player.speedplayer.right = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_s] and ((player.x + player.width < enemylist2[0].x) or (player.x > enemylist2[0].x + enemylist2[0].width)):player.y += player.speedplayer.right = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist2[0].die and keys[pygame.K_s] and (player.y + player.height >= enemylist2[0].y + enemylist2[0].height + 20 or player.y + player.height <= enemylist2[0].y + enemylist2[0].height - 40):player.y += player.speedplayer.right = Trueplayer.stand = Falseif player.y + player.height < enemylist2[0].y + enemylist2[0].height and player.y + player.height - enemylist2[0].y - enemylist2[0].height > -40:player.y = enemylist2[0].y + enemylist2[0].height - 40 - player.height# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist2[0].die and keys[pygame.K_s] and player.y + player.height > enemylist2[0].y + enemylist2[0].height - 40 and player.y + player.height < enemylist2[0].y + enemylist2[0].height + 20:player.y = enemylist2[0].y + enemylist2[0].height - 40 - player.heightif player.y < 390:player.y = 390player.left = Falseplayer.right = Trueplayer.stand = True# 敌人灰色  穿模设置if len(enemylist3) and keys[pygame.K_d] and player.x < WIDTH - player.height:# D 键走动  禁止与敌人穿模# 当敌人死亡时 直线行走if keys[pygame.K_d] and player.x < WIDTH and not player.attack_Bool and enemylist3[0].die:player.x += player.speedplayer.right = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_d] and ((player.y + player.height <= enemylist3[0].y + enemylist3[0].height - 40) or (player.y + player.height >= enemylist3[0].y + enemylist3[0].height + 20)):player.x += player.speedplayer.right = Trueplayer.stand = False# player.jump = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist3[0].die and keys[pygame.K_d] and (player.x + player.width <= enemylist3[0].x - 10 or player.x >= enemylist3[0].x + enemylist3[0].width):player.x += player.speedplayer.right = Trueplayer.stand = False# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist3[0].die and keys[pygame.K_d] and player.x + player.width > enemylist3[0].x:player.stand = Trueplayer.left = Falseplayer.right = True# 左键if len(enemylist3) and keys[pygame.K_a] and player.x > 0:# 当敌人死亡时 直线行走if keys[pygame.K_a] and player.x > 0 and not player.attack_Bool and enemylist3[0].die:player.x -= player.speedplayer.left = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_a] and (player.y + player.height <= enemylist3[0].y + enemylist3[0].height - 40 or player.y + player.height >= enemylist3[0].y + enemylist3[0].height + 20):player.x -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist3[0].die and keys[pygame.K_a] and ((player.x >= enemylist3[0].x + enemylist3[0].width + 10) or (player.x + player.width < enemylist3[0].x)):player.x -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist3[0].die and keys[pygame.K_a] and player.x < enemylist3[0].x + enemylist3[0].width:player.stand = Trueplayer.left = Trueplayer.right = False# w 键 上 禁止穿模if len(enemylist3) and keys[pygame.K_w] and player.y + player.height > 390 and not player.jump and not player.i:# 当敌人死亡时 直线行走if keys[pygame.K_w] and player.y > 390 and not player.attack_Bool and not player.jump and enemylist3[0].die:player.y -= player.speedplayer.left = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_w] and ((player.x + player.width < enemylist3[0].x) or (player.x > enemylist3[0].x + enemylist3[0].width)):player.y -= player.speedplayer.left = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist3[0].die and keys[pygame.K_w] and (player.y + player.height >= enemylist3[0].y + enemylist3[0].height + 20 or player.y + player.height <= enemylist3[0].y + enemylist3[0].height - 40):player.y -= player.speedplayer.left = Trueplayer.stand = Falseif player.y + player.height > enemylist3[0].y + enemylist3[0].height and player.y + player.height - enemylist3[0].y - enemylist3[0].height < 20:player.y = enemylist3[0].y + enemylist3[0].height + 20 - player.height# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist3[0].die and keys[pygame.K_w] and player.y + player.height < enemylist3[0].y + enemylist3[0].height + 20 and player.y + player.height > enemylist3[0].y + enemylist3[0].height - 40:player.y = enemylist3[0].y + enemylist3[0].height + 20 - player.heightif player.y > 640:player.y = 640player.stand = Trueplayer.right = Falseplayer.left = True# s 键 上 禁止穿模if len(enemylist3) and keys[pygame.K_s] and player.y + player.height < 640 and not player.jump and not player.i:# 当敌人死亡时 直线行走if keys[pygame.K_s] and player.y < 640 and not player.attack_Bool and not player.jump and enemylist3[0].die:player.y += player.speedplayer.right = Trueplayer.stand = False# 当与敌人不在一个 视觉水平时 直线行走elif keys[pygame.K_s] and ((player.x + player.width < enemylist3[0].x) or (player.x > enemylist3[0].x + enemylist3[0].width)):player.y += player.speedplayer.right = Trueplayer.stand = False# 设置行走区间 敌人起点是终点 动态区间elif not enemylist3[0].die and keys[pygame.K_s] and (player.y + player.height >= enemylist3[0].y + enemylist3[0].height + 20 or player.y + player.height <= enemylist3[0].y + enemylist3[0].height - 40):player.y += player.speedplayer.right = Trueplayer.stand = Falseif player.y + player.height < enemylist3[0].y + enemylist3[0].height and player.y + player.height - enemylist3[0].y - enemylist3[0].height > -40:player.y = enemylist3[0].y + enemylist3[0].height - 40 - player.height# 设置行走区间与敌人接触时 将机甲 停止elif not enemylist3[0].die and keys[pygame.K_s] and player.y + player.height > enemylist3[0].y + enemylist3[0].height - 40 and player.y + player.height < enemylist3[0].y + enemylist3[0].height + 20:player.y = enemylist3[0].y + enemylist3[0].height - 40 - player.heightif player.y < 390:player.y = 390player.left = Falseplayer.right = Trueplayer.stand = True#切换地图  关卡结束if keys[pygame.K_d]  and player.x > WIDTH-player.width and len(enemylist)+ len(enemylist2)+ len(enemylist3) + len(enemylist4)==0  and check==3:check+=1HP_bool_green=FalseHP_bool_grey=FalseHP_bool_pink=False# 切换 游戏第三场景elif keys[pygame.K_d] and player.x > WIDTH-player.width and len(enemylist)+ len(enemylist2)+ len(enemylist3) + len(enemylist4)==0  and check==2:HP_bool_green = FalseHP_bool_grey = FalseHP_bool_pink = Falseplayer.x = 0map_img=pygame.image.load("map_img/right.jpg")check+= 1#切换 游戏第二场景elif keys[pygame.K_d] and player.x > WIDTH-player.width and len(enemylist)+ len(enemylist2)+ len(enemylist3) + len(enemylist4)==0  and check==1:HP_bool_green = FalseHP_bool_grey = FalseHP_bool_pink = Falseplayer.x = 0map_img=pygame.image.load("map_img/center.jpg")check+=1elif check==1 and player.kill_enemy==0:HP_bool_green = FalseHP_bool_grey = FalseHP_bool_pink = Falsemap_img=pygame.image.load("map_img/left.jpg")#游戏 结束  选择重新开始 和退出if check==4:return ""if check==5:return ""if len(enemylist)+ len(enemylist2) +len(enemylist3) +len(enemylist4) <4:if keys[pygame.K_d] and player.x < WIDTH  and player.x > -20:player.x+=player.speedplayer.left=Falseplayer.right = Trueplayer.stand = False# player.jump = Falseif keys[pygame.K_a] and player.x < WIDTH  and player.x > 0:player.x -= player.speedplayer.left = Trueplayer.right = Falseplayer.stand = False# player.jump = Falseif keys[pygame.K_w] and player.y+player.height >390  and not player.jump:player.y-=player.speedplayer.left = Trueplayer.right = Falseplayer.stand = False# player.jump = Falseif keys[pygame.K_s] and player.y + player.height < 640  and not player.jump:player.y+=player.speedplayer.left = Trueplayer.right = Falseplayer.stand = Falseplayer.jump = Falseif not keys[pygame.K_d] and  not keys[pygame.K_w] and  not keys[pygame.K_s] and  not keys[pygame.K_a] :walk_music.stop()player.stand=True#三段普攻if keys[pygame.K_j]   and not player.attack_Bool and not player.life_remove_bool:player.cd = TrueJ_Testing(enemylist)J_Testing(enemylist2)J_Testing(enemylist3)J_Testing(enemylist4)player.stand = Falseplayer.attack_Bool = Trueplayer.attack += 1if player.attack > 3:player.attack = 0player.attack_Bool = Falseplayer.stand = Trueif keys[pygame.K_u]:player.all=Trueplayer.cd = True#flc o 键技能if not player.flc and keys[pygame.K_o]   and not keys[pygame.K_w] and not keys[pygame.K_s] and not player.life_remove_bool:if keys[pygame.K_o] and not player.jump and not player.i :J_Testing(enemylist)J_Testing(enemylist2)J_Testing(enemylist3)J_Testing(enemylist4)player.cd = Trueplayer.flc=Trueplayer.stand = Falseplayer.attack_Bool = Trueplayer.attack += 1if player.attack > 3:player.attack = 0player.attack_Bool = Falseplayer.stand = Trueif not player.i  and not keys[pygame.K_w] and not keys[pygame.K_s]  :if keys[pygame.K_i] and not player.jump and  not player.flc and not player.life_remove_bool:player.cd=Trueglobal en1global en2global en3en1=I_Testing(enemylist)en2=I_Testing(enemylist2)en3=I_Testing(enemylist3)en4=I_Testing(enemylist4)player.i=Trueplayer.jn_count = 1elif player.i:if player.t>=-10:#开始向上升a=1if player.t<0:#向下落的时候a=-1player.y-=0.5*a*(player.t**2)player.t-=1else:#落地后if len(enemylist):en1[0].y = en1[0].Enemy_Yif len(enemylist2):en2[0].y = en2[0].Enemy_Yif len(enemylist3):en3[0].y = en3[0].Enemy_Yif len(enemylist4):en4[0].y = en4[0].Enemy_Yplayer.i =Falseplayer.stand=Trueplayer.t=10player.jn_count=1if not player.jump:if keys[pygame.K_k] and not keys[pygame.K_w] and not keys[pygame.K_s]  and not player.i:player.jump=True#设置跳跃else:# 三段普攻if keys[pygame.K_j] and not player.attack_Bool and not player.life_remove_bool:player.cd = TrueJ_Testing(enemylist)J_Testing(enemylist2)J_Testing(enemylist3)J_Testing(enemylist4)player.stand = Falseplayer.attack_Bool = Trueplayer.attack += 1if player.attack > 3:player.attack = 0player.attack_Bool = Falseplayer.stand = Trueplayer.stand = Falseplayer.attack_Bool = Trueplayer.attack += 1if player.attack > 3:player.attack = 0player.attack_Bool = Falseplayer.stand = Trueif player.t>=-10:#开始向上升a=1if player.t<0:#向下落的时候a=-1player.y-=0.5*a*(player.t**2)player.t-=1else:#落地后player.jump = Falseplayer.t = 10player.jump_count = 1#跳跃检测Jump_Testing(enemylist)Jump_Testing(enemylist2)Jump_Testing(enemylist3)Jump_Testing(enemylist4)pygame.display.update()# 结束类 增加图片
def game_over():global checkstart_btn=pygame.image.load("./load_img/重新开始.png")end_btn=pygame.image.load("./load_img/退出游戏.png")failed=pygame.image.load("./load_img/失败.png")win_img=pygame.image.load("./load_img/胜利.png")bg=pygame.image.load("./map_img/right.jpg")back_music.stop()while True:if check==5:back_music.play(-1)player.life = 100player.x = 0player.kill_enemy = 0check = 1return Truefor event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()#鼠标事件if event.type==pygame.MOUSEBUTTONDOWN:# 鼠标位置if (495<=event.pos[0]<=495+start_btn.get_width()) and (450<=event.pos[1]<450+start_btn.get_height()):back_music.play(-1)player.life = 100player.x = 0player.kill_enemy = 0check = 1return Trueif (495<=event.pos[0]<=495+start_btn.get_width()) and (320<=event.pos[1]<320+start_btn.get_height()):sys.exit()player.kill_enemy=0screen.blit(bg,(0,0))screen.blit(start_btn,(495,450))screen.blit(end_btn,(495,320))if player.win_bool==False :   #失败screen.blit(failed, (395, 120))if player.win_bool :  #胜利screen.blit(win_img, (425, 120))pygame.display.update()run=True
if __name__ == '__main__':flag=Truewhile flag:game_result=start()if game_result=="":flag=game_over()

《空洞机甲》编程赛__自制 Python Pygame 游戏相关推荐

  1. python --pygame 游戏之 飞剑骑士

    必备知识:python 类 的使用 python -- pygame 的基本用法 # encoding : utf-8 # anthor : comi # date :2018/08/15import ...

  2. python编写游戏怎么打包——详解python+pygame游戏开发之使用Py2exe打包游戏为exe文件

    python编写游戏怎么打包 1.简介 2.软件准备 3.打包流程 最近在用python+pygame 开发游戏,写完以后在分享给朋友玩的时候遇到了很大的问题,只有搭建了环境才能运行python脚本. ...

  3. python pygame 游戏实践: 俄罗斯方块(Tetris Game)第一步

    正在学习俄罗斯方块(Tetris Game)游戏, 主要参考Tetris with PyGame | Python Assets,不过有所修改,原作的class 太复杂, 不好理解, 试图用自己习惯的 ...

  4. Python——pygame游戏:外星人入侵(打飞机)

    游戏附件&代码 链接: https://pan.baidu.com/s/1kUrISCFiptsnr-tdYy7IzQ 提取码: vjcx 游戏画面 音乐 背景音乐:<MEGALOBOX ...

  5. python pygame 游戏实战: 2048 game 游戏简化版

    2048游戏的算法参考:2048 Game in Python - GeeksforGeeks 以下是2048游戏的简化版, 在python 3.9运行没有问题. 没有用精美的图像, 主要是原理的实现 ...

  6. python小游戏之三

    猜拳游戏 Python代码实现猜拳小游戏 Python代码实现猜拳小游戏_zhangtongyuan0909的博客-CSDN博客_python猜拳游戏代码 用python中类与对象写一个猜拳游戏 用p ...

  7. python界面设置-PYTHON图形化操作界面的编程七__创建菜单

    PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...

  8. python函数做菜单_PYTHON图形化操作界面的编程七__创建菜单

    PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...

  9. 寓教于乐——PyGame游戏编程,Python小游戏制作实战教学

    Python非常受欢迎的一个原因是它的应用领域非常广泛,其中就包括游戏开发.而是用Python进行游戏开发的首选模块就是PyGame. 1. 初识Pygame PyGame是跨平台Python模块,专 ...

最新文章

  1. Scalaz(7)- typeclass:Applicative-idomatic function application
  2. java 泛型 t_Kotlin(2) 泛型与集合
  3. MVC模型构建管理系统
  4. 此上下文中不允许函数定义。_彻底搞懂上下文this,轻松应对,一面就过!!!...
  5. 支付分当钱花有人信了?微信辟谣:开通微信支付分不收费
  6. python蟒蛇绘制
  7. java中static修饰函数_详解java中static关键词的作用
  8. Mac电脑如何播放swf格式文件?
  9. html 发送ping帧,HTML5:ping属性之死亡ping与隐私追踪
  10. 【18】processing-声音(中文)
  11. python3 scrapy中文文档_Python3爬虫入门:Scrapy 框架
  12. 南京大学俞扬博士:强化学习前沿(下)
  13. smartbi v7 Linux,Smartbi V7.0.1
  14. macbook pro window蓝牙驱动 下载
  15. 博弈论之海盗分金(最严谨)
  16. 中国人民大学于坤教授:以社会支持体系提升就业力 | 牛客大咖说
  17. 大厂争先成立的 “开源办公室” 有啥门道?
  18. wgt 增量包下载过程中断,重新下载安装显示 [-1202]manifist 文件不存在
  19. matlab怎样编程形成软件_matlab是什么编程语言?matlab是编程语言吗
  20. AppiumDeskop-按键表

热门文章

  1. 低通,带通,高通滤波器的设计
  2. Jazzy--一种新的拼写检查器API(Java平台)
  3. 用Python写一段生成饼形图代码
  4. tail 上下_鹦鹉的身体语言(下)
  5. 思科网络安全 第一章测验答案
  6. Linux进程被锁定,解决yum时出现 /var/run/yum.pid 已被锁定,PID 为 3548 的另一个程序正在运行。...
  7. 空手套白狼,不花一分钱体验实时云渲染
  8. 【云周刊】第191期:阿里云的这群疯子
  9. 萨芬撒地方申达股份速度
  10. python里的df_python – 从pandas df中删除行