python实现飞机大战完整代码,可运行,基于python的飞机大战设计论文
这篇文章主要为大家详细介绍了大蟒面向过程实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了大蟒实现飞机大战的具体代码,供大家参考,具体内容如下
游戏的实现本质是多个图片的快速切换,类似动画一样,达到动态的效果。
比如子弹的发射,实际上是一个子弹的照片根据列表中存储的位置多次粘贴到界面上。
还有飞机的移动是首先收集到移动信息将坐标变化,然后下一次覆盖页面的时候进行粘贴。
导入简介及安装
导入时间
从pygame.locals导入*
英雄x=150
英雄y=600
# 子弹夹
mybullet=[]
# 导弹夹
bomb_list=[]
敌人x=0
敌人y=0
标志=0
敌人_生活=生活
hero_life=live
# 飞机爆炸
a=pygame.image.load( ./飞姬/敌人1 _ down 1。png’)
b=pygame.image.load( ./飞姬/敌1 _降2。png’)
c=pygame.image.load( ./飞姬/敌1 _降3。png’)
d=pygame.image.load( ./飞姬/敌1 _降4。png’)
e=pygame.image.load( ./飞姬/敌人1 _命中。png’)
a1=pygame.image.load( ./飞姬/英雄_炸掉_ n1。png’)
b1=pygame.image.load( ./feiji/hero _炸毁_ N2。png’)
c1=pygame.image.load(./飞姬/英雄_炸掉_ n3。png’)
d1=pygame.image.load(./飞姬/英雄_炸裂_ n4。png’)
hero_explode=[a1,b1,c1,d1]
explode=[a,b,c,d,e]
数量=0
hnum=0
计数=0
极好的敌人_植物(屏幕,敌人,炸弹):
全球敌人_x
全球敌人_y
全球旗帜
全局编号
全局计数
全球炸弹_列表
全球敌人_生活
如果敌人_生活==活 :
如果flag==1且敌人x=0:
敌人x -=20
else:
标志=0
如果标志==0且enemy_x=320:
敌人x=20
else:
标志=1
screen.blit(敌人,(敌人_x,敌人_y))
elif敌人_生命==死亡 :
screen.blit(explode[num],(enemy_x,enemy_y))
bomb_list.clear()
数量=1
如果数量==4:
敌人_生活=生活
数量=0
如果计数% 10==0:
bomb_list.append({x:敌人_x 30, y:敌人_y 20})
计数=1
对于b在炸弹_列表:中
screen.blit(bomb,(b[x],b[y]))
b[y]=10
极好的英雄_植物(屏幕,英雄,子弹):
全球英雄_x
全球英雄_y
全球敌人_生活
全球英雄_爆炸
全球敌人_x
全球敌人_y
全球hnum
全球炸弹_列表
全球英雄_生活
对于b在炸弹_列表:中
# 注意区间的取值
如果b[x]
<= hero_x + 30 and b["x"] >= hero_x and b["y"] >= hero_y and b["y"] <= hero_y + 30:
hero_life = "death"
break
if hero_life == "death":
mybullet.clear()
screen.blit(hero_explode[hnum], (hero_x, hero_y))
hnum += 1
if hnum == 4:
hnum = 0
hero_life = "live"
if hero_life == "live":
screen.blit(hero, (hero_x, hero_y))
# 事件捕获,将捕获的事件放在列表中
# 快速运行然后接受命令造成连续性的画面,有的时候可能为空。
for event in pygame.event.get():
# 关闭游戏
if event.type == pygame.QUIT:
# 退出游戏
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
hero_x += 10
elif event.key == pygame.K_LEFT:
hero_x -= 10
elif event.key == pygame.K_DOWN:
hero_y += 10
elif event.key == pygame.K_UP:
hero_y -= 10
elif event.key == pygame.K_SPACE:
print("发射子弹")
mybullet.append({"x": hero_x + 30, "y": hero_y - 20})
for i in mybullet:
# 注意出界的子弹所以要大于0
if i["x"] <= enemy_x + 20 and i["x"] >= enemy_x and i["y"] <= 20 and i["y"] >= 0:
enemy_life = "death"
screen.blit(bullet, (i["x"], i["y"]))
# 散弹模式
# screen.blit(bullet, (i["x"]-20, i["y"]))
# screen.blit(bullet, (i["x"]+20, i["y"]))
# 这样就可以自动控制上升和时间间隔了
i["y"] -= 10
def main():
流程控制
# 1 创建一个游戏窗口
# display方法:展示相关的都会用到这个方法
# 参数1:元组(长,高)像素
# 参数2:有无特殊功能
# 参数3:像素深度
screen = pygame.display.set_mode((400, 800), 0, 32)
# 加载背景图片
background = pygame.image.load("./feiji/background.png")
# 加载飞机图片
hero = pygame.image.load("./feiji/hero1.png")
# 加载子弹照片
bullet = pygame.image.load("./feiji/plane.png")
# 加载导弹
bomb = pygame.image.load("./feiji/bomb-1.gif")
# 加载敌人飞机照片
enemy = pygame.image.load("./feiji/enemy1.png")
# 图片添加到屏幕
# blit剪切,粘贴
# screen 类似指针的使用带动目的地址的数据改动
while True:
screen.blit(background, (0, 0))
# 显示英雄飞机
hero_plant(screen, hero, bullet)
# 显示敌人飞机
enemy_plant(screen, enemy, bomb)
# 数据更新加载出来
pygame.display.update()
# 图片多显示一会
time.sleep(0.1)
main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。