社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python写了一个《空洞机甲》小游戏

Python面试官 • 6 天前 • 29 次点击  

来源:http://nxw.so/4WSng



先来看看效果图:



由于项目代码过多,这里只给出部分代码。


图片素材和源码的下载链接在文章结尾,大家自行下载即可。



import pygame,sysimport time
import randompygame.init()pygame.mixer.init()FRAM_PER_SECONDS=7clock =pygame.time.Clock()WIDTH=1290HEIGHT=715load_img_x=1290/2-376/2load_img_y=715/2-224/2load_animate=Falsecheck=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"),)
classwalk_sound():def__init__(self,src):self.sound=pygame.mixer.Sound(src)self.sound.set_volume(1)defmusic_play(self):self.sound.play()defmusic_stop(self):self.sound.stop()
#关卡动画classcheck_fun(object):    check_list = []for pic_num in range(113):        check_list+=(pygame.image.load("./right_check/箭头" + str(pic_num) + ".png"),)def__init__(self):self.check_count=1defdraw(self,screen):ifself.check_count>=12:self.check_count=1ifself.check_count:            screen.blit(self.check_list[self.check_count],(1100,290))self.check_count+=1
#机甲玩家角色classPlayer(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(125):        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=False self.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=50defdraw(self,screen):ifself.all_count>=16:self.all_count=0self.all=Falseself.all_lenth=50
if player.all_count>14:            U_Testing(enemylist)            U_Testing(enemylist2)            U_Testing(enemylist3)            U_Testing(enemylist4)
ifself.cd_count>=11:self.cd_count=0self.cd=Falseifself.HP_count == 2:            life_add_music.play()ifself.HP_count>=16:            life_add_music.stop()self.HP_count=0self.lifeAdd = False
ifself.level_count==2:            life_add_music.play()ifself.level_count>=12:            life_add_music.stop()ifself.level_count>=12:self.level_count=0self.levelAdd = False
ifself.lizi_count>=48:self.lizi_count=1ifself.lizi2_count>=33:self.lizi2_count=1ifself.lizi3_count>=80:self.lizi3_count=1ifself.lizi2_count:
            screen.blit(self.lizi2_list[self.lizi2_count], (-100500))            screen.blit(self.lizi2_list[self.lizi2_count], (200500))            screen .blit(self.lizi2_list[self.lizi2_count], (500500))            screen.blit(self.lizi2_list[self.lizi2_count], (800500))            screen.blit(self.lizi2_list[self.lizi2_count], (1100500))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 += 1
ifself.lizi_count:            screen.blit(self.lizi_list[self.lizi_count], (-100600))            screen.blit(self.lizi_list[self.lizi_count], (200550))            screen.blit(self.lizi_list[self.lizi_count], (500600))            screen.blit(self.lizi_list[self.lizi_count], (800550))            screen.blit(self.lizi_list[self.lizi_count], (1100600))self.lizi_count+=1ifself.die_count >=64:self.die_count=0self.life=100self.kill_enemy=0self.die = Falseself.stand = Truereturn
ifself.stand_count>=24:self.stand_count=1
ifself.flc_count>=32:self.flc_count=0self.flc=False
ifself.life_count>=8:self.life_count=0self.life_remove_bool=False
ifself.attack_one_count>=13:self.attack_one_count=1self.stand=Trueself.attack_Bool = False
ifself.attack_two_count>=6:self.attack_two_count=1self.stand = Trueself.attack_Bool = False
ifself.attack_three_count>=11:self.attack_three_count=1self.stand = Trueself.attack_Bool = False
ifself.walk_count>=12:self.walk_count=1
ifself.jump_count>=38:self.jump_count=1ifself.jn_count>=40:self.jn_count=1ifself.hit_count>=47:self.hit_count=1
ifself.die_count==20:            diren_die_music.play()



ifself.life_remove_bool andnotself.die:            screen.blit(self.life_list[self.life_count],(self.x,self.y))ifself.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+=1         elif self.stand andnotself.jump andnotself.i andnotself.flc  andnotself.hit andnotself.attack_Bool andnotself.life_remove_bool andnotself.die:            screen.blit(self.stand_list[self.stand_count],(self.x,self.y))self.stand_count+=1        elif self.right andnotself.stand andnotself.jump andnotself.i andnotself.flc  andnotself.hit andnotself.attack_Bool andnotself.life_remove_bool andnotself.die:# 如果没有站立中 并且left=True,            screen.blit(self.walk_right[self.walk_count], (self.x,self.y))  # 绘制马里奥self.walk_count += 1ifself.walk_count==2:                walk_music.play()            elif self.walk_count==1:                walk_music.stop()        elif self.left andnotself.stand andnotself.jump andnotself.i andnotself.flc andnotself.hit andnotself.attack_Bool andnotself.life_remove_bool andnotself.die:# 如果没有站立中 并且left=True,            screen.blit(self.walk_left[self.walk_count], (self.x,self.y))  # 绘制马里奥self.walk_count += 1ifself.walk_count==2:                walk_music.play()            elif self.walk_count==1:                walk_music.stop()        elif self.flc  andnotself.die:ifself.flc_count==1:                feiti_music.play()ifself.flc_count==20:                feiti_music.stop()            screen.blit(self.flc_list[self.flc_count], (self.x, self.y-120))self.flc_count += 1        elif self.i  andnotself.die:            screen.blit(self.jn_list[self.jn_count],(self.x,self.y-75))self.jn_count+=1ifself.jn_count == 2:                jn_music.play()            elif self.jn_count == 1:                jn_music.stop()        elif self.jump andnotself.attack_Bool andnotself.die:            screen.blit(self.jump_list[self.jump_count],(self.x,self.y-75))self.jump_count+=1ifself.jump_count == 2:                jump_music.play()            elif self.jump_count == 1:                jump_music.stop()        elif self.attack==1andself.attack_Bool andnotself.die:            screen.blit(self.attack_list_one[self.attack_one_count],(self.x,self.y))self.attack_one_count += 1ifself.attack_one_count==2:                attack_music.play()            elif self.attack_one_count==1:                attack_music.stop()        elif self.attack==2andself.attack_Bool andnotself.die:            screen.blit(self.attack_list_two[self.attack_two_count],(self.x,self.y))self.attack_two_count += 1ifself.attack_two_count == 2:                attack_music.play()            elif self.attack_two_count == 1:                attack_music.stop()        elif self.attack==3andself.attack_Bool andnotself.die:            screen.blit(self.attack_list_three[self.attack_three_count],(self.x,self.y))self.attack_three_count += 1ifself.attack_three_count == 2:                attack_music.play()            elif self.attack_three_count == 1:                attack_music.stop()
        elif self.hit andnotself.die:            screen.blit(self.hit_list[self.hit_count],(self.x,self.y))self.hit_count+=1
        elif self.die:self.life = 0self.skill = Falseself.attack = False            screen.blit(self.die_list[self.die_count],(self.x-100,self.y-20))self.die_count+=1
self.hit_box = (self.x, self.y, self.width, self.height)



ifself.levelAdd:            LEVAdd = font.render("LEVEL UP ", True, (25500))            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+=1
ifself.lifeAdd:            screen.blit(self.HP_tuple[self.HP_count],(self.x,self.y-40))self.HP_count+=1
ifself.all:self.all_lenth+=50            screen.blit(self.all_tuple[self.all_count],(self.x+self.all_lenth,self.y+(self.height/2)-210))self.all_count+=1
#是否胜利ifself.kill_enemy>=7:self.win_bool=Trueelse:self.win_bool=False


#敌人死亡删除defdie_enemy_green():    enemylist.pop()defdie_enemy_grey():    enemylist2.pop()defdie_enemy_pink():    enemylist3.pop()defdie_enemy_Boss():    enemylist4.pop()


#BIG   BOSSclassBoss(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 = 122 self.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                 #加载血条长度defdraw(self,screen):        global HP_img_boss        global HP_bool_bossifself.game_start_Bool:self.life+=0.5ifself.life>15:self.life=15self.game_start_Bool=Falseself.move()
ifself.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = False
ifself.arm_count>=6:self.arm_count=0
ifself.life_count>=39:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True# 敌方走路ifself.walk_count>=12:self.walk_count=0
#敌方远程攻击ifself.skill_count==20andnotself.life_remove_bool andnotself.die:if collision_check_tanke(player, enemylist4[0]):                player.life -= 8                player.life_remove_bool = Trueif player.life<=0:                    player.die=True# 敌方近程攻击ifself.attack_count == 17andnotself.life_remove_bool andnotself.die:if collision_check_tanke_yellow(player, enemylist4[0]):                player.life -= 8                player.life_remove_bool = Trueif player.life<=0:                    player.die=True
#敌方 远程 技能ifself.skill_count >= 33:self.skill_count = 0self.skill=Falseself.walk=True
# 敌方 近程 技能ifself.attack_count >= 29:self.attack_count = 0self.attack = Falseself.walk = True
#坦克死亡ifself.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=True            player.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=500            game_over_music.stop()            die_enemy_Boss()return#死亡音效ifself.die_count==20:            game_over_music.play()
ifself.life_remove_bool:self.walk=Falseself.skill = Falseself.attack = False            screen.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 - 10
        elif self.skill andnotself.life_remove_bool:ifself.skill_count==15:                green_jn.play()ifself.skill_count==1:                green_jn.stop()
            screen.blit(self.skill_tuple[self.skill_count], (self.x-150, self.y-50))self.skill_count+=1        elif self.attack andnotself.life_remove_bool:            screen.blit(self.attack_tuple[self.attack_count],(self.x-250,self.y))self.attack_count+=1ifself.attack_count == 10andself.attack:            green_attack_music.play()ifself.attack_count == 29ornotself.attack:            green_attack_music.stop()
ifself.speed>0andself.walk andnotself.die:self.skill = False            screen.blit(self.walk_tuple[self.walk_count],(self.x,self.y))self.walk_count+=1        elif  self.speed<0andself.walk:            screen.blit(self.walk_tuple[self.walk_count],(self.x,self.y))self.walk_count+=1        elif self.die:self.life = 0self.skill = Falseself.attack = Falseifself.die_count%2==0andself.die_count<20:                pygame.time.delay(10)                screen.fill([000])# 敌人 死亡特效            elif  self.die_count%2==1andself.die_count<20:                pygame.time.delay(10)                screen.fill([25500])# 敌人 死亡特效
self.x += 11            screen.blit(self.arm_tuple[self.arm_count],(700,500))self.arm_count+=1            screen.blit(self.die_tuple[self.die_count],(self.x,self.y))self.die_count+=1# 绘制血条        screen.blit(self.enemy_img, (11600))        pygame.draw.rect(screen, (21823487), (600 + (15 - self.life) * (540 / 15), 40, (540 / 15) * self.life, 30))ifself.game_start_Bool == False andself.life 15:            pygame.draw.rect(screen, (10211544), (60040540 - (540 / 15 * self.life), 30))
# 敌人移动类defmove(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])  andnotself.life_remove_bool andnotself.die  andnotself.attack and ( player.stand or player.left or player.right ) andnot player.die :self.skill=Trueself.walk = False# 敌人近程技能if collision_check_tanke_yellow(player, enemylist4[0]) andnotself.life_remove_bool andnotself.die  andnotself.skill and ( player.stand or player.left or player.right ) andnot player.die:self.attack = Trueself.walk = False
ifself.die_count >= 60:return
ifself.walk:# y移动ifself.speed_Y>0andnotself.die:ifself.y1]+self.speed_Y:self.y += self.speed_Yelse:self.speed_Y=self.speed_Y*(-1)self.y+=self.speed_Yself.walk_count=0            elif  self.speed_Y<0andnotself.die:ifself.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 = 0
ifself.speed>0andnotself.die:# X移动ifself.x1]+self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0            elif self.speed<0andnotself.die:# X移动ifself.x>self.area[0]-self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0
#敌人  BOSS 章鱼classEnemy_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=Truedefdraw(self,screen):        global HP_img_pink        global HP_bool_pinkifself.game_start_Bool:self.life+=0.17ifself.life>3:self.life=3self.game_start_Bool=False
self.move()
ifself.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = False
ifself.life_count>=28:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True# 敌方走路ifself.walk_count>=16:self.walk_count=0
#敌方远程攻击ifself.skill_count==30andnotself.life_remove_bool andnotself.die:if collision_check_tanke_jincheng(player, enemylist3[0]):                player.life -= 8                player.life_remove_bool = Trueif player.life<=0:                    player.die=True# 敌方近程攻击ifself.attack_count == 50andnotself.life_remove_bool andnotself.die:if collision_check_tanke(player, enemylist3[0]):                player.life -= 8                player.life_remove_bool = Trueif player.life<=0:                    player.die=True
#敌方 远程 技能ifself.skill_count >= 50:self.skill_count = 0self.skill=Falseself.walk=True
# 敌方 近程 技能ifself.attack_count >= 82:self.attack_count = 0self.attack = Falseself.walk = True
#坦克死亡ifself.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=True            player.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=True            diren_die_music.stop()            die_enemy_pink()return#死亡音效ifself.die_count==20:            diren_die_music.play()
ifself.life_remove_bool:# if player.jump or player.i:#     self.y = player.y + player.height - enemylist3[0].height - 10self.walk=Falseself.skill = Falseself.attack = False            screen.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 - 10
        elif self.skill andnotself.life_remove_bool:ifself.skill_count==15:                green_jn.play()ifself.skill_count==1:                green_jn.stop()            screen.blit(self.skill_list[self.skill_count], (self.x-150, self.y-50))self.skill_count+=1        elif self.attack andnotself.life_remove_bool:            screen.blit(self.attack_list[self.attack_count],(self.x-250,self.y-100))self.attack_count+=1ifself.attack_count == 10andself.attack:            green_attack_music.play()ifself.attack_count == 55ornotself.attack:            green_attack_music.stop()
ifself.speed>0andself.walk andnotself.die:self.skill = False            screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1        elif  self.speed<0andself.walk:            screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1        elif self.die:self.life = 0self.skill = Falseself.attack = Falseifself.die_count%2==0andself.die_count<20:                pygame.time.delay(20)                screen.fill([0, 0, 0])# 敌人 死亡特效            elif  self.die_count%2==1andself.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 - 10            screen.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))ifself.game_start_Bool == False andself.life < 3:            pygame.draw.rect(screen, (80, 0, 100), (600, 40, 540 - (540 / 3 * self.life), 30))

# 敌人移动类defmove(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])  andnotself.life_remove_bool andnotself.die  andnotself.attack and ( player.stand or player.left or player.right ):self.skill=Trueself.walk = False# 敌人近程技能if collision_check_tanke(player, enemylist3[0]) andnotself.life_remove_bool andnotself.die  andnotself.skill and ( player.stand or player.left or player.right ):self.attack = Trueself.walk = False
ifself.die_count >= 57:return
ifself.walk:# y移动ifself.speed_Y>0andnotself.die:ifself.yself.y += self.speed_Yelse:self.speed_Y=self.speed_Y*(-1)self.y+=self.speed_Yself.walk_count=0            elif  self.speed_Y<0andnotself.die:ifself.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 = 0
ifself.speed>0andnotself.die:# X移动ifself.xself.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0            elif self.speed<0andnotself.die:# X移动ifself.x>self.area[0]-self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0
#灰色敌人classEnemy_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=Truedefdraw(self,screen):        global HP_img_grey        global HP_bool_greyifself.game_start_Bool:self.life+=0.145ifself.life > 3:self.life = 3self.game_start_Bool = False
self.move()# 敌方受击#检测生命ifself.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = False
# if self.life_count==2:#     self.Enemy_Y=self.y
ifself.life_count>=23:# self.y=self.Enemy_Yself.life_count=1self.life_remove_bool=Falseself.walk=True
# 敌方走路ifself.walk_count==2:self.walk_count=0
#机甲掉血ifself.skill_count==12andnotself.life_remove_bool andnotself.die:if collision_check_tanke_green(player, enemylist2[0]):                player.life -= 8                player.life_remove_bool = Trueif player.life<=0:                    player.die=True
#敌方技能ifself.skill_count >= 21:self.skill_count = 1self.skill=Falseself.walk=True
#坦克死亡ifself.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=True            player.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=True            diren_die_music.stop()            die_enemy_grey()return# 死亡音效ifself.die_count==35:            diren_die_music.play()
ifself.life_remove_bool:self.skill = Falseself.walk = False self.attack = Falseif player.jump or player.i:self.y = player.y + player.height - enemylist2[0].height - 10            screen.blit(self.life_remove_list[self.life_count], (self.x-20, self.y-80))self.life_count += 1
        elif self.skill andnotself.life_remove_bool:            screen.blit(self.skill_list[self.skill_count], (self.x-120, self.y))self.skill_count+=1
ifself.speed>0andself.walk andnotself.die:self.skill = False            screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1        elif  self.speed<0andself.walk andnotself.die:            screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1        elif self.die:self.life = 0self.skill = Falseself.attack = Falseifself.die_count%2==0andself.die_count<20:                pygame.time.delay(20)                screen.fill([0, 0, 0])# 敌人 死亡特效            elif  self.die_count%2==1andself.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+=1
            screen.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))ifself.game_start_Bool == False andself.life < 3:            pygame.draw.rect(screen, (50, 75, 75), (600, 100, 540 - (540 / 3 * self.life), 30))
# 敌人移动类defmove(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])  andnotself.life_remove_bool andnotself.die:self.skill=Trueself.walk = False
ifself.walk:# y移动ifself.speed_Y>0andnotself.die:ifself.yself.y += self.speed_Yelse:self.speed_Y=self.speed_Y*(-1)self.y+=self.speed_Yself.walk_count=0            elif  self.speed_Y<0andnotself.die:ifself.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 = 0
ifself.speed>0andnotself.die:# X移动ifself.xself.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0            elif self.speed<0andnotself.die:# X移动ifself.x>self.area[0]-self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0
#敌人 绿色坦克classEnemy(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=Truedefdraw(self,screen):        global HP_img_green        global HP_bool_greenifself.game_start_Bool:self.life+=0.12ifself.life > 3:self.life = 3self.game_start_Bool = False
self.move()
ifself.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = False
# 敌方受击# if self.life_count==2:#     self.Enemy_Y=self.y

ifself.life_count>=23:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True
# 敌方走路ifself.walk_count>=8:self.walk_count=0
#敌方远程攻击ifself.skill_count==25andnotself.life_remove_bool andnotself.die:if collision_check_tanke(player, enemylist[0]):                player.life -= 8                player.life_remove_bool = Trueif player.life<=0:                    player.die=True# 敌方近程攻击ifself.attack_count == 14andnotself.life_remove_bool andnotself.die:if collision_check_tanke_jincheng(player, enemylist[0]):                player.life -= 8                player.life_remove_bool = Trueif player.life<=0:                    player.die=True
#敌方 远程 技能ifself.skill_count >= 37:self.skill_count = 0self.skill=Falseself.walk=True
# 敌方 近程 技能ifself.attack_count >= 23:self.attack_count = 0self.attack = Falseself.walk = True
#坦克死亡ifself.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=True            player.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=True            diren_die_music.stop()            die_enemy_green()return
#死亡音效ifself.die_count==40:            diren_die_music.play()
ifself.life_remove_bool:if player.jump or player.i:self.y = player.y + player.height - enemylist[0].height - 10self.walk=Falseself.skill = Falseself.attack = False            screen.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 - 10
ifself.skill andnotself.life_remove_bool:ifself.skill_count==20:                green_jn.play()ifself.skill_count==1:                green_jn.stop()            screen.blit(self.skill_list[self.skill_count], (self.x-150, self.y-90))self.skill_count+=1
ifself.attack_count == 1andself.attack :            green_attack_music.play()ifself.attack_count == 15ornotself.attack:            green_attack_music.stop()
ifself.attack andnotself.life_remove_bool:            screen.blit(self.attack_list[self.attack_count],(self.x-50,self.y))self.attack_count+=1


ifself.speed>0andself.walk andnotself.die:self.skill = False            screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1        elif  self.speed<0andself.walk:            screen.blit(self.walk_left[self.walk_count],(self.x,self.y))self.walk_count+=1        elif self.die:self.skill = Falseself.attack = Falseself.life = 0

ifself.die_count%2==0andself.die_count<20:                pygame.time.delay(20)                screen.fill([0, 0, 0])# 敌人 死亡特效            elif  self.die_count%2==1andself.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))ifself.game_start_Bool == False andself.life < 3:            pygame.draw.rect(screen, (0, 65, 20), (600, 160, 540 - (540 / 3 * self.life), 30))
# 敌人移动类defmove(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])  andnotself.life_remove_bool andnotself.die  andnotself.attack:self.skill=Trueself.walk = False# 敌人近程技能if collision_check_tanke_jincheng(player, enemylist[0]) andnotself.life_remove_bool andnotself.die  andnotself.skill:self.attack = Trueself.walk = False
ifself.die_count >= 63:return
ifself.walk:# y移动ifself.speed_Y>0andnotself.die:ifself.yself.y += self.speed_Yelse:self.speed_Y=self.speed_Y*(-1)self.y+=self.speed_Yself.walk_count=0            elif  self.speed_Y<0andnotself.die:ifself.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 = 0
ifself.speed>0andnotself.die:# X移动ifself.xself.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0            elif self.speed<0andnotself.die:# X移动 ifself.x>self.area[0]-self.speed:self.x+=self.speedelse:self.speed=self.speed*(-1)self.x+=self.speedself.walk_count=0
#血瓶classProp_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]defdraw(self,screen):        global HP_bool_green        global HP_bool_grey        global HP_bool_pink        screen.blit(self.img,(self.x,self.y))ifHP_bool_grey:if HP_img_grey.imglist.index(HP_img_grey.img)>2:if collision_check_tanke_HP(player, HP_img_grey):                    player.levelAdd = True                    player.level += 1                    player.life += 5

if player.life > 100:                        player.life = 100                    HP_bool_grey = Falseelse:if collision_check_tanke_HP(player, HP_img_grey):                    player.lifeAdd=True                    player.life += 5if player.life >= 100:                       player.life=100                    HP_bool_grey=False
ifHP_bool_green:if HP_img_green.imglist.index(HP_img_green.img) > 2:if collision_check_tanke_HP(player, HP_img_green):                    player.levelAdd = True                    player.level += 1                    player.life += 5
if player.life > 100:                        player.life = 100                    HP_bool_green = Falseelse:if collision_check_tanke_HP(player, HP_img_green):                    player.lifeAdd = True                    player.life += 5if player.life >= 100:                       player.life=100                    HP_bool_green=False
ifHP_bool_pink:if HP_img_pink.imglist.index(HP_img_pink.img) > 2:if collision_check_tanke_HP(player, HP_img_pink):                    player.levelAdd = True                    player.level += 1                    player.life += 5
if player.life>100:                        player.life=100                    HP_bool_pink = Falseelse:if collision_check_tanke_HP(player, HP_img_pink):                    player.lifeAdd = True                    player.life += 5if player.life >= 100:                       player.life=100                    HP_bool_pink=False
back_music.play(-1)
#主要绘制函数defdraw_img():    global load_count    global FRAM_PER_SECONDS    global set_imgif load_count>=29:        load_count=30        load_music.stop()        screen.blit(map_img, (00))#打开  游戏 战斗背景 音乐         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 andnot player.jump andnot enemylist[0].die  andnot enemylist2[0].die  andnot 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 andnot player.jump andnot enemylist[0].die  andnot enemylist2[0].die  andnot 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 andnot player.jump andnot enemylist[0].die  andnot enemylist2[0].die  andnot 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 andnot player.jump andnot enemylist[0].die  andnot enemylist2[0].die  andnot 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  andnot player.jump  andnot enemylist[0].die  andnot 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  andnot player.jump andnot enemylist[0].die  andnot 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 andnot player.jump andnot enemylist[0].die  andnot 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  andnot player.jump andnot enemylist[0].die  andnot 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  andnot player.jump andnot enemylist[0].die  andnot 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 andnot player.jump andnot enemylist[0].die  andnot 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  andnot player.jump andnot enemylist2[0].die  andnot 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  andnot player.jump andnot enemylist2[0].die  andnot 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 andnot player.jump andnot enemylist2[0].die  andnot 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 andnot player.jump andnot 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 andnot player.jump andnot 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 andnot player.jump andnot 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)==0and check==1and 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)==0and check==2and 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)==0and check==3and 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) == 0and  player.kill_enemy==7and check==3:            player.draw(screen)            Check_fun.draw(screen)#箭头 -- 动态            check_music.play()        elif len(enemylist) + len(enemylist2) +len(enemylist4) + len(enemylist3) == 0and  player.kill_enemy==6and check==2:            player.draw(screen)            Check_fun.draw(screen)#箭头 -- 动态            check_music.play()        elif len(enemylist) + len(enemylist2) +len(enemylist4) + len(enemylist3) == 0and  player.kill_enemy==3and 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, (200565))if player.cd and player.i:            screen.blit(player.cd_tuple[player.cd_count], (210575))            player.cd_count += 1        elif player.cd and player.flc:            screen.blit(player.cd_tuple[player.cd_count], (280575))            player.cd_count += 1        elif player.cd and player.attack_Bool:            screen.blit(player.cd_tuple[player.cd_count], (350575))            player.cd_count += 1        elif player.cd and player.all:            screen.blit(player.cd_tuple[player.cd_count], (420575))            player.cd_count += 1

        LEVEL = font.render("LEVEL : " + str(player.level), True, (60200200))        screen.blit(LEVEL, (210530))# 绘制血条        screen.blit(player.player_img, (10520))        pygame.draw.rect(screen, (723238), (20065075035))        pygame.draw.rect(screen, (2306592), (200650, (750 / 100) * player.life, 35))
        FRAM_PER_SECONDS = 16
    elif load_count<=28:        screen.blit(load_image[load_count],(load_img_x,load_img_y))        load_count+=1
defgame_load():# load_music.play()    global game_start    global game_end    screen.blit(start_back, (00))    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()
defstart_button():    global start_flag    global pausefor event in pygame.event.get():if load_animate == True:            pass        elif 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=True                start_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 = True                paused()
#拾取血包defcollision_check_tanke_HP(a,b):    temp1= (b.x+b.width>a.x+a.width-30>b.x)#角色的攻击区间  容错区间    temp2= (-4045)return temp1 and  temp2

#敌人技能  近程技能defcollision_check_tanke_yellow(a,b):    temp1= (b.x+b.width>a.x+a.width+210>b.x)#角色的攻击区间  容错区间    temp2= (-4045)return temp1 and  temp2
#敌人技能  近程技能defcollision_check_tanke_jincheng(a,b):    temp1= (b.x+b.width>a.x+a.width+50>b.x)#角色的攻击区间  容错区间    temp2= (-4045)return temp1 and  temp2
#绿色敌人技能  近程技能defcollision_check_tanke_green(a,b):    temp1= (b.x+b.width>a.x+a.width+150>b.x)#角色的攻击区间  容错区间    temp2= (-4045)return temp1 and  temp2
#敌人技能  远攻技能defcollision_check_tanke(a,b):    temp1= (b.x+b.width>a.x+a.width+170>b.x)#角色的攻击区间  容错区间    temp2= (-4045)return temp1 and  temp2
#敌人 遇我 进行反向defcollision_check_fanxiang(a,b):    temp1= (b.x+b.width>=a.x+a.width>=b.x)#角色的攻击区间  容错区间    temp2= (-1935)return temp1 and  temp2
#基本技能 碰撞检测 类defcollision_check(a,b):    temp1= (b.x+b.width>a.x+a.width+150>b.x)#角色的攻击区间  容错区间    temp2= (-6060)return temp1 and  temp2#机甲飞踢 碰撞检测 类defcollision_check_foot(a,b):    temp1= (b.x+b.width>a.x+a.width+150>b.x)#角色的攻击区间  容错区间    temp2= (-6060)return temp1 and  temp2
#碰撞检测函数defcollision_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 技能defU_Testing(enemy_obj):if len(enemy_obj):ifnot enemy_obj[0].die:            enemy_obj[0].x+=100            enemy_obj[0].life -= 3            enemy_obj[0].life_remove_bool = True            enemy_obj[0].walk = False            enemy_obj[0].skill = False            enemy_obj[0].attack = False            enemy_obj[0].x += 20if enemy_obj[0].life <= 0:                enemy_obj[0].life_remove_bool = False                enemy_obj[0].die = True                enemy_obj[0].walk = False

#三段普攻defJ_Testing(enemy_obj):if len(enemy_obj):if  collision_check(player, enemy_obj[0]) andnot enemy_obj[0].die:            enemy_obj[0].life -= 3            enemy_obj[0].life_remove_bool = True            enemy_obj[0].walk = False            enemy_obj[0].skill = False            enemy_obj[0].attack = False            enemy_obj[0].x += 20
if enemy_obj[0].life <= 0:

                enemy_obj[0].life_remove_bool = False                enemy_obj[0].die = True                enemy_obj[0].walk = False
#跳跃检测defJump_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 - 40and player.y + player.height < enemy_obj[0].y + enemy_obj[0].height + 40:            player.x = enemy_obj[0].width + enemy_obj[0].x + 15            player.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 - 40and player.y + player.height < enemy_obj[0].y + enemy_obj[0].height + 40:            player.x = enemy_obj[0].x - player.width - 15            player.left = True  # 设置进行禁止穿模 位移到两侧# player.walk=True#I技能检测defI_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].y            enemy_obj[0].life_remove_bool = True            enemy_obj[0].y = player.y + player.height - enemy_obj[0].height - 100            enemy_obj[0].skill = False            enemy_obj[0].attack = False            enemy_obj[0].walk = False            enemy_obj[0].life -= 4            enemy_obj[0].x += 20if enemy_obj[0].life <= 0:

                enemy_obj[0].life_remove_bool = False                enemy_obj[0].die = True                enemy_obj[0].walk = Falsereturn enemy_obj

#暂停defunpause():    global pause    back_music.set_volume(0.06)    pause=False
#设置defpaused():    global flag    global check    global pause    zanting=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, (185280))    screen.blit(quit_img, (185 370))    screen.blit(logo_img,(595,150))    back_music.set_volume(0)                                      #背景音乐暂停whilepause:for event in pygame.event.get():if event.type == pygame.QUIT:                pygame.quit()# quit()if load_count>=29and 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=5                        unpause()
        pygame.display.update()
y=100HP_bool_green=FalseHP_bool_grey=FalseHP_bool_pink=Falsedefstart():    global load_animate    global check    global map_img    global enemylist    global enemylist2    global enemylist3    global enemylist4    global HP_bool_green    global HP_bool_grey    global HP_bool_pink    global player    global Check_fun    global green    global grey    global boss    global pause    global pink    global keys    enemylist = []    enemylist2 = []    enemylist3 = []    enemylist4 = []    player = Player(160410100100)
    Check_fun = check_fun()    green = Enemy(random.randint(500, WIDTH - 133), 420500, WIDTH - 153)    grey = Enemy_grey(random.randint(500, WIDTH - 133), 430500, WIDTH - 203)    pink = Enemy_pink(random.randint(500, WIDTH - 133), 440500, WIDTH - 401)    boss = Boss(random.randint(500, WIDTH - 133), 440500, WIDTH -400)    enemylist.append(green)    enemylist2.append(grey)    enemylist3.append(pink)# enemylist4.append(boss)
whileTrue:        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:ifload_animate:                    load_animate=False                    screen.fill((16,16,16))
        keys = pygame.key.get_pressed()  # 获取所有键盘事件
if  pause==False andstart_flag:if keys[pygame.K_ESCAPE]:                pause=True                paused()
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 = 1            elif  len(enemylist)+ len(enemylist2) +len(enemylist3) +len(enemylist4) ==3:
                player.speed = 3            elif len(enemylist) + len(enemylist2) + len(enemylist3) +len(enemylist4) == 2:
                player.speed = 5            elif 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 andnot player.attack_Bool  and enemylist[0].die :                player.x += player.speed                player.right = True                player.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.speed                player.right = True                player.stand = False# player.jump = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist[0].die and keys[pygame.K_d] and (player.x+player.width <= enemylist[0].x-10or player.x>=enemylist[0].x+enemylist[0].width):                player.x+=player.speed                player.right = True                player.stand = False# 设置行走区间与敌人接触时 将机甲 停止            elif not enemylist[0].die and keys[pygame.K_d] and player.x+player.width > enemylist[0].x :                player.stand=True                player.left=False                player.right=True#左键if len(enemylist) and keys[pygame.K_a] and player.x >0:# 当敌人死亡时 直线行走if keys[pygame.K_a] and player.x > 0andnot player.attack_Bool and enemylist[0].die:                player.x -= player.speed                player.left = True                player.stand = False# 当与敌人不在一个 视觉水平时 直线行走            elif keys[pygame.K_a] and (player.y + player.height <= enemylist[0].y + enemylist[0].height - 40or player.y + player.height >= enemylist[0].y + enemylist[0].height + 20):                 player.x -= player.speed                player.left = True                player.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 0].x)):                player.x -= player.speed                player.left = True                player.stand = False# 设置行走区间与敌人接触时 将机甲 停止            elif not enemylist[0].die and keys[pygame.K_a] and player.x < enemylist[0].x+enemylist[0].width :                player.stand = True                player.left = True                player.right = False#w 键 上 禁止穿模if len(enemylist) and keys[pygame.K_w] and player.y+player.height >390andnot player.jump  andnot player.i:# 当敌人死亡时 直线行走if keys[pygame.K_w] and player.y > 390andnot player.attack_Bool andnot player.jump and enemylist[0].die:                player.y -= player.speed                player.left = True                player.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.speed                player.left = True                player.stand = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist[0].die and keys[pygame.K_w] and ( player.y+player.height >= enemylist[0].y+enemylist[0].height+20or player.y+player.height <= enemylist[0].y+enemylist[0].height-40):                player.y -= player.speed                player.left = True                player.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+20and  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=640                player.stand=True                player.right=False                player.left=True# s 键 上 禁止穿模if len(enemylist) and keys[pygame.K_s] and player.y + player.height 640andnot player.jump  andnot player.i:# 当敌人死亡时 直线行走if keys[pygame.K_s] and player.y 640andnot player.attack_Bool andnot player.jump and enemylist[0].die:                player.y += player.speed                player.right = True                player.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.speed                player.right = True                player.stand = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist[0].die and keys[pygame.K_s] and (player.y + player.height >= enemylist[0].y + enemylist[0].height + 20or player.y + player.height <=enemylist[0].y + enemylist[0].height - 40):                player.y += player.speed                player.right = True                player.stand = Falseif  player.y+player.height0].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 - 40and  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=390                player.left = False                player.right = True                player.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 andnot player.attack_Bool and enemylist2[0].die:                player.x += player.speed                player.right = True                player.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.speed                player.right = True                player.stand = False# player.jump = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist2[0].die and keys[pygame.K_d] and (player.x + player.width <= enemylist2[0].x - 10or player.x >= enemylist2[0].x + enemylist2[0].width):                player.x += player.speed                player.right = True                player.stand = False# 设置行走区间与敌人接触时 将机甲 停止            elif not enemylist2[0].die and keys[pygame.K_d] and player.x + player.width > enemylist2[0].x:                player.stand = True                player.left = False                player.right = True# 左键if len(enemylist2) and keys[pygame.K_a] and player.x > 0:# 当敌人死亡时 直线行走if keys[pygame.K_a] and player.x > 0andnot player.attack_Bool and enemylist2[0].die:                player.x -= player.speed                player.left = True                player.stand = False# 当与敌人不在一个 视觉水平时 直线行走            elif keys[pygame.K_a] and (player.y + player.height <= enemylist2[0].y + enemylist2[0].height - 40or player.y + player.height >= enemylist2[0].y + enemylist2[0].height + 20):                player.x -= player.speed                player.left = True                player.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.speed                player.left = True                player.stand = False# 设置行走区间与敌人接触时 将机甲 停止            elif not enemylist2[0].die and keys[pygame.K_a] and player.x < enemylist2[0].x + enemylist2[0].width:                player.stand = True                player.left = True                player.right = False# w 键 上 禁止穿模if len(enemylist2) and keys[pygame.K_w] and player.y + player.height > 390andnot player.jump andnot player.i:# 当敌人死亡时 直线行走 if keys[pygame.K_w] and player.y > 390andnot player.attack_Bool andnot player.jump and enemylist2[0].die:                player.y -= player.speed                player.left = True                player.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.speed                player.left = True                player.stand = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist2[0].die and keys[pygame.K_w] and (player.y + player.height >= enemylist2[0].y + enemylist2[0].height + 20or player.y + player.height <= enemylist2[0].y + enemylist2[0].height - 40):                player.y -= player.speed                player.left = True                player.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 + 20and 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 = 640                player.stand = True                player.right = False                player.left = True# s 键 上 禁止穿模if len(enemylist2) and keys[pygame.K_s] and player.y + player.height 640andnot player.jump andnot player.i:# 当敌人死亡时 直线行走if keys[pygame.K_s] and player.y 640andnot player.attack_Bool andnot player.jump and enemylist2[0].die:                player.y += player.speed                player.right = True                player.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.speed                player.right = True                player.stand = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist2[0].die and keys[pygame.K_s] and (player.y + player.height >= enemylist2[0].y + enemylist2[0].height + 20or player.y + player.height <= enemylist2[0].y + enemylist2[0].height - 40):                player.y += player.speed                player.right = True                player.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 - 40and 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 = 390                player.left = False                player.right = True                player.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 andnot player.attack_Bool and enemylist3[0].die:                player.x += player.speed                player.right = True                player.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.speed                player.right = True                player.stand = False# player.jump = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist3[0].die and keys[pygame.K_d] and (player.x + player.width <= enemylist3[0].x - 10or player.x >= enemylist3[0].x + enemylist3[0].width):                player.x += player.speed                player.right = True                player.stand = False# 设置行走区间与敌人接触时 将机甲 停止            elif not enemylist3[0].die and keys[pygame.K_d] and player.x + player.width > enemylist3[0].x:                player.stand = True                player.left = False                player.right = True# 左键if len(enemylist3) and keys[pygame.K_a] and player.x > 0:# 当敌人死亡时 直线行走if keys[pygame.K_a] and player.x > 0andnot player.attack_Bool and enemylist3[0].die:                player.x -= player.speed                player.left = True                player.stand = False# 当与敌人不在一个 视觉水平时 直线行走            elif keys[pygame.K_a] and (player.y + player.height <= enemylist3[0].y + enemylist3[0].height - 40or player.y + player.height >= enemylist3[0].y + enemylist3[0].height + 20):                player.x -= player.speed                player.left = True                player.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.speed                player.left = True                player.stand = False# 设置行走区间与敌人接触时 将机甲 停止            elif not enemylist3[0].die and keys[pygame.K_a] and player.x < enemylist3[0].x + enemylist3[0].width:                player.stand = True                player.left = True                player.right = False# w 键 上 禁止穿模if len(enemylist3) and keys[pygame.K_w] and player.y + player.height > 390andnot player.jump andnot player.i:# 当敌人死亡时 直线行走if keys[pygame.K_w] and player.y > 390andnot player.attack_Bool andnot player.jump and enemylist3[0].die:                player.y -= player.speed                player.left = True                player.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.speed                player.left = True                player.stand = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist3[0].die and keys[pygame.K_w] and (player.y + player.height >= enemylist3[0].y + enemylist3[0].height + 20or player.y + player.height <= enemylist3[0].y + enemylist3[0].height - 40):                player.y -= player.speed                player.left = True                 player.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 + 20and 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 = 640                player.stand = True                player.right = False                player.left = True# s 键 上 禁止穿模if len(enemylist3) and keys[pygame.K_s] and player.y + player.height 640andnot player.jump andnot player.i:# 当敌人死亡时 直线行走if keys[pygame.K_s] and player.y 640andnot player.attack_Bool andnot player.jump and enemylist3[0].die:                player.y += player.speed                player.right = True                player.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.speed                player.right = True                player.stand = False# 设置行走区间 敌人起点是终点 动态区间            elif not enemylist3[0].die and keys[pygame.K_s] and (player.y + player.height >= enemylist3[0].y + enemylist3[0].height + 20or player.y + player.height <= enemylist3[0].y + enemylist3[0].height - 40):                player.y += player.speed                player.right = True                player.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 - 40and 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 = 390                player.left = False                player.right = True                player.stand = True
#切换地图  关卡结束if keys[pygame.K_d]  and player.x > WIDTH-player.width and len(enemylist)+ len(enemylist2)+ len(enemylist3) + len(enemylist4)==0and check==3:            check+=1            HP_bool_green=False            HP_bool_grey=False            HP_bool_pink=False# 切换 游戏第三场景        elif keys[pygame.K_d] and player.x > WIDTH-player.width and len(enemylist)+ len(enemylist2)+ len(enemylist3) + len(enemylist4)==0and check==2:            HP_bool_green = False            HP_bool_grey = False            HP_bool_pink = False            player.x = 0            map_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)==0and check==1:             HP_bool_green = False            HP_bool_grey = False            HP_bool_pink = False            player.x = 0            map_img=pygame.image.load("map_img/center.jpg")            check+=1        elif check==1and player.kill_enemy==0:            HP_bool_green = False            HP_bool_grey = False            HP_bool_pink = False            map_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.speed                player.left=False                player.right = True                player.stand = False# player.jump = False
if keys[pygame.K_a] and player.x < WIDTH  and player.x > 0:                player.x -= player.speed                player.left = True                player.right = False                player.stand = False# player.jump = Falseif keys[pygame.K_w] and player.y+player.height >390andnot player.jump:                player.y-=player.speed                player.left = True                player.right = False                player.stand = False# player.jump = Falseif keys[pygame.K_s] and player.y + player.height 640andnot player.jump:                player.y+=player.speed                player.left = True                player.right = False                player.stand = False                player.jump = False
ifnot keys[pygame.K_d] andnot keys[pygame.K_w] andnot keys[pygame.K_s] andnot keys[pygame.K_a] :            walk_music.stop()            player.stand=True
#三段普攻if keys[pygame.K_j]   andnot player.attack_Bool andnot player.life_remove_bool:            player.cd = True            J_Testing(enemylist)            J_Testing(enemylist2)            J_Testing(enemylist3)            J_Testing(enemylist4)            player.stand = False            player.attack_Bool = True            player.attack += 1if player.attack > 3:                player.attack = 0                player.attack_Bool = False                player.stand = True
if keys[pygame.K_u]:            player.all=True            player.cd = True

#flc o 键技能ifnot player.flc and keys[pygame.K_o]   andnot keys[pygame.K_w] andnot keys[pygame.K_s] andnot player.life_remove_bool:if keys[pygame.K_o] andnot player.jump andnot player.i :                J_Testing(enemylist)                J_Testing(enemylist2)                J_Testing(enemylist3)                J_Testing(enemylist4)                player.cd = True                player.flc=True                player.stand = False                player.attack_Bool = True                player.attack += 1if player.attack > 3:                    player.attack = 0                    player.attack_Bool = False                    player.stand = True
ifnot player.i  andnot keys[pygame.K_w] andnot keys[pygame.K_s]  :if keys[pygame.K_i] andnot player.jump andnot player.flc andnot player.life_remove_bool:                player.cd=True                global en1                global en2                global en3                en1=I_Testing(enemylist)                en2=I_Testing(enemylist2)                en3=I_Testing(enemylist3)                en4=I_Testing(enemylist4)

                player.i=True                player.jn_count = 1        elif player.i:if player.t>=-10:#开始向上升                a=1if player.t<0:#向下落的时候                    a=-1                player.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_Y
                player.i =False                player.stand=True                player.t=10                player.jn_count=1

ifnot player.jump:if keys[pygame.K_k] andnot keys[pygame.K_w] andnot keys[pygame.K_s]  andnot player.i:                player.jump=True#设置跳跃else:# 三段普攻if keys[pygame.K_j] andnot player.attack_Bool andnot player.life_remove_bool:                player.cd = True                J_Testing(enemylist)                J_Testing(enemylist2)                J_Testing(enemylist3)                J_Testing(enemylist4)                player.stand = False                player.attack_Bool = True                player.attack += 1if player.attack > 3:                    player.attack = 0                    player.attack_Bool = False                    player.stand = True                player.stand = False                player.attack_Bool = True                player.attack += 1if player.attack > 3:                    player.attack = 0                    player.attack_Bool = False                    player.stand = Trueif player.t>=-10:#开始向上升                a=1if player.t<0:#向下落的时候                    a=-1                player.y-=0.5*a*(player.t**2)                player.t-=1else:#落地后                player.jump = False                player.t = 10                player.jump_count = 1#跳跃检测                Jump_Testing(enemylist)                Jump_Testing(enemylist2)                Jump_Testing(enemylist3)                Jump_Testing(enemylist4)        pygame.display.update()
# 结束类 增加图片defgame_over():    global check    start_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()whileTrue:if check==5:            back_music.play(-1)            player.life = 100            player.x = 0            player.kill_enemy = 0            check = 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 = 100                    player.x = 0                    player.kill_enemy = 0                    check = 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=0        screen.blit(bg,(0,0))        screen.blit(start_btn,(495,450))        screen.blit(end_btn,(495,320))if player.win_bool==False :   #失败            screen.blit(failed, (395120))if player.win_bool :  #胜利            screen.blit(win_img, (425120))        pygame.display.update()
run=Trueif __name__ == '__main__':    flag=Truewhileflag:        game_result=start()if game_result=="":            flag=game_over()



图片素材以及源码下载:


百度云链接: 

https://pan.baidu.com/s/18Cmcypr1_S8uKGvBein1EA


提取码: grxq


PS:如果觉得我的分享不错,欢迎大家随手点赞、在看。


END

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183788
 
29 次点击