导语"翱翔蓝天是每个人的梦想,但是梦想必须有一个起点,现在这个起点就在你面前。“
——顾木子吖
哈喽哈喽!大家好,我是木木子~
每日上线更新,今天有时间了就给大家升级一下上一期的飞机大战的源码!
小时候电脑上的雷电,后来微信上的飞机大战,没玩过飞机对战游戏的请举手!神秘的天空还
会发生什么事?由你来撰写!那么,跟着我一起正式开始今天的旅程吧~
正文游戏思路:在上一期的《太空陨石VS大型战机对决》游戏上,这一次实现的功能会增加难度:直接上飞机
进行对战,敌军以及子弹都会增加设置。
游戏规则:升级版的《雷霆战机对决》是一款经典的飞行空战类游戏,玩家们将进行精彩刺激的空战
玩法,搭配高清的游戏画质,绝对给你带来非凡的体验,更有强大的火力系统,搭配炫酷的
射击特效,快来体验吧!完整的项目源码滴滴我获取哈都是免费分享的~
一、准备中1)图片素材
2)音效素材(必不可少)
3)环境安装本文用到的环境如下:Python3、Pycharm、Pygame游戏模块以及部分自带的模块。
模块安装:
pipinstall+模块名或者豆瓣镜像源pipinstall-i二、代码演示1)主程序
基本参数配置获取图片库和声音库路径img_dir=((__file__),'pic')sound_folder=((__file__),'sounds')定义白、黑、红、绿、蓝、黄的RGB参数WHITE=(255,255,255)BLACK=(0,0,0)RED=(255,0,0)GREEN=(0,255,0)BLUE=(0,0,255)YELLOW=(255,255,0)初始化音效screen=_mode((WIDTH,HEIGHT))_caption("AircraftBattle")clock=()加载图片加载游戏进行中背景图片background=((img_dir,'')).convert()background=(background,(WIDTH,1536))height=-936加载玩家炮弹、导弹图片bullet_img=((img_dir,'')).convert()missile_img=((img_dir,'')).convert_alpha()加载盾牌、闪电图片powerup_images={}powerup_images['shield']=((img_dir,'')).convert()powerup_images['gun']=((img_dir,'')).convert()敌机enemies_list=['','','']加载爆炸图片explosion_anim={}explosion_anim['lg']=[]explosion_anim['sm']=[]explosion_anim['player']=[]foriinrange(9):大爆炸img_lg=(img,(75,75))explosion_anim['lg'].app(img_lg)玩家爆炸filename='sonicExplosion0{}.png'.format(i)img=((img_dir,filename)).convert()_colorkey(BLACK)explosion_anim['player'].app(img)加载敌机、火山石爆炸声音expl_sounds=[]forsoundin['','']:expl_(((sound_folder,sound)))加载玩家爆炸声音player_die_sound=((sound_folder,''))加载游戏初始界面背景音乐menu_song=((sound_folder,""))加载游戏初始界面背景图片title=((img_dir,"")).convert()title=(title,(WIDTH,HEIGHT),screen)(title,(0,0))()加载准备声音ready=((sound_folder,''))()设置文本属性函数defdraw_text(surf,text,size,x,y):设置玩家血量条属性函数defdraw_shield_bar(surf,x,y,pct):pct=max(pct,0)fill=(pct/100)*BAR_LENGTHoutline_rect=(x,y,BAR_LENGTH,BAR_HEIGHT)fill_rect=(x,y,fill,BAR_HEIGHT)(surf,GREEN,fill_rect)(surf,WHITE,outline_rect,2)添加敌机函数defnewmob():mob_element=Mob()all_(mob_element)(mob_element)类区方向控制:A控制左、D控制右、W控制上、S控制下、A+W控制左上、A+S控制左下、D+W控制右上、D+S控制右下keystate=_pressed()ifkeystate[K_a]:=-5ifkeystate[K_d]:=5ifkeystate[K_w]:=-5ifkeystate[K_s]:=5设置玩家移动边界:=:=0:=10:=+=+=(self):now=_ticks()__delay:_shot=now双火力==2:bullet1=Bullet(,)bullet2=Bullet(,)all_(bullet1)all_(bullet2)(bullet1)(bullet2)shooting_()导弹all_(bullet1)all_(bullet2)all_(missile1)(bullet1)(bullet2)(missile1)shooting_()missile_()defpowerup(self):+=1_time=_ticks()defhide(self):=_timer=_ticks()=(WIDTH/2,HEIGHT+200)classMob():'''创建敌机类'''def__init__(self):__init__(self)_orig=(enemies_images)__colorkey(BLACK)=_()=_rect()=int(*.90/2)=(0,)=(-150,-100)=(5,10)=(-3,3)_delay=1000_shot=_ticks()defupdate(self):+=+=(10)=6:_shoot()if(+10)or()or(+20):=(0,)=(-100,-40)=(1,8)defenemies_shoot(self):now=_ticks()__delay:_shot=nowenemies_bullet=EnemiesBullet(,)all_(enemies_bullet)enemies_(enemies_bullet)shooting_()classLava():'''创建火山石类'''def__init__(self):__init__(self)_orig=(lava_images)__colorkey(BLACK)=_()=_rect()=int(*.90/2)=(0,)=(-150,-100)=(5,10)=(-3,3)=0_speed=(-8,8)_update=_ticks()主循环定义游戏开始界面标识running=Truemenu_display=Truewhilerunning:ifmenu_display:main_menu()(3000)()((sound_folder,''))(-1)menu_display=Falseall_sprites=()player=Player()all_(player)mobs=()foriinrange(4):newmob()lavas=()foriinrange(4):newlava()bullets=()enemies_bullets=()powerups=()score=0(FPS)():==:running===:==_ESCAPE:running=Falseall_()火山石与玩家炮弹碰撞检测hits=(lavas,bullets,True,True)forhitinhits:score+=50-(expl_sounds).play()expl=Explosion(,'lg')all_(expl)()0.9:pow=Pow()all_(pow)(pow)newlava()玩家与火山石碰撞检测hits=(player,lavas,True,_circle)forhitinhits:=*2expl=Explosion(,'sm')all_(expl)newlava()=0:player_die_()death_explosion=Explosion(,'player')all_(death_explosion)()=1=100玩家与补给碰撞检测hits=(player,powerups,True)forhitinhits:=='shield':+=(10,30)=100:=100=='gun':()==0andnotdeath_():(1000)(BLACK)draw_text(screen,"GameOver",40,WIDTH/2,HEIGHT/3)()(3000)menu_display=True#背景画卷向下滚动(BLACK)(background,(0,height))height+=2ifheight=-168:height=-936all_(screen)draw_text(screen,str(score),18,WIDTH/2,10)draw_shield_bar(screen,5,5,)draw_lives(screen,WIDTH-100,5,,player_mini_img)()()三、效果展示2)截图效果游戏开始——
游戏开始——刺激对决!
游戏结束——
总结好啦~升级版本的飞机大战写到这里就结束啦,等下一次给大家写一款最高版本的,期待吧!?
学习完记得三连哦~需要源码的也可以滴滴我啦!
源码基地——私信小编06即可啦~
往期推荐阅读——项目合集1.0各种游戏源码都在这里免费拿!
项目合集1.1各种人工只能方面的源码项目点这里!
项目合集1.2各种表白的项目源码都在这里看!
项目合集1.3各种Turtle的代码都在找这里呀!
文章汇总——项目1.0Python—2021|已有文章汇总|持续更新,直接看这篇就够了
(更多内容+源码都在文章汇总哦!!欢迎阅读~)









