首先感谢@1_bit 大佬的教程, 源代码请移步下面链接. 本文是自己为了理解代码所做的注释.
https://blog.csdn.net/A757291228/article/details/116305295

功能: 可以用子弹消灭敌机, 无法碰撞敌机销毁.
还有代码没有读懂, 注释持续添加中.

# 2021.5.8
# refer to https://blog.csdn.net/A757291228/article/details/116305295import pygame
# reset the path for your own file path!!!
bg = pygame.image.load(r'C:\aircraft_fight\img\bg.png')
hero = pygame.image.load(r'C:\aircraft_fight\img\hero1.png')
enemy = pygame.image.load(r'C:\aircraft_fight\img\enemy1.png')
enemy_boom = pygame.image.load(r'C:\aircraft_fight\img\enemy1_down1.png')
bullet = pygame.image.load(r'C:\aircraft_fight\img\bullet1.png')pygame.init()   # initialize all modules of pygame
screen = pygame.display.set_mode((600, 800))   # set the size of game window
pygame.display.set_caption("This is a aircraft fight game!") # set the title of the game windowheroX = 250  # the origination of hero on X axis
heroY = 680  # the origination of hero on Y axis
stepX = 0    # the extent of movement on X axis
stepY = 0    # the extent of movement on Y axisenemy_speed = 2
enemy_objs = []
enemy_objs1 = []
enemy_objs2 = []
enemy_objs3 = []
bullets_pos =[]
bullet_speed =[]def keydown_event(event, stepX, stepY, hero_pos):  # the movement of keyboard controlbullet_pos = []if event.key == pygame.K_RIGHT:stepX =5elif event.key == pygame.K_LEFT:stepX =-5elif event.key == pygame.K_UP:stepY =-5elif event.key == pygame.K_DOWN:stepY =5elif event.key == pygame.K_SPACE:bullet_pos=[hero_pos[0],hero_pos[1]+10]return stepX, stepY, bullet_posdef enemy_show(enemy_objs,startY =-40):if len(enemy_objs) < 5:while len(enemy_objs) < 5:enemy_X = random.randint(0,500)enemy_pos = [enemy_X, startY]screen.blit(enemy,enemy_pos)enemy_objs.append(enemy_pos)else:i = 0for pos in enemy_objs:screen.blit(enemy, pos)enemy_objs[i] = [pos[0],pos[1]+enemy_speed]i = i +1return enemy_objsdef screen_border(x,y):if x<0:x = 0elif x > 500:x = 500if y<0:y = 0elif y>700:y = 700return x, ydef distance(bx,by,ex,ey):a=bx-exb=by-eyreturn math.sqrt(a*a+b*b)while True:bullet_pos_ = []heroX = heroX + stepXheroY = heroY + stepYheroX, heroY = screen_border(heroX, heroY)#blit function: draw one image onto anotherscreen.blit(bg,(0, 0))  #draw the background image onto screen windowscreen.blit(hero, (heroX,heroY))  #draw the aircraft image onto screen windowenemy_objs = enemy_show(enemy_objs)print(bullets_pos)i = 0for v in bullets_pos:bullets_pos[i] =[v[0], v[1]-10]screen.blit(bullet, (bullets_pos[i][0]+45, bullets_pos[i][1]))distance_b = [bullets_pos[i][0]+45, bullets_pos[i][1]]ei = 0for ep in enemy_objs:if distance(distance_b[0], distance_b[1],ep[0],ep[1])<60:print('\n\n\n\n\n\n\n\n\n\n\n boom')screen.blit(enemy_boom, (ep[0], ep[1]))enemy_objs[ei] = [random.randint(0,500),-50]ei = ei + 1i = i + 1for event in pygame.event.get():if event.type == pygame.QUIT:exit()if event.type == pygame.KEYDOWN:stepX, stepY, bullet_pos_= keydown_event(event, stepX, stepY, [heroX, heroY])if len(bullet_pos_)>0:bullets_pos.append(bullet_pos_)pygame.display.update()  #need update to refresh game window

Python 实例 - Day2 - Aircraft Fight 飞机大战 (进行中ing)相关推荐

  1. Python 飞机大战游戏中 获取被击中飞机的坐标位置信息

    Python 飞机大战游戏中 获取被击中飞机的坐标位置信息 在参考现有的飞机大战游戏代码,写第一个python游戏,子弹击中飞机后,飞机消失,想着如果能有爆照效果就好了. 于是新建了一个爆炸效果的sp ...

  2. 【Python知识点梳理】8.飞机大战(面向对象设计思维)

    8.飞机大战(面向对象设计思维) 文章目录 1.飞机大战效果展示 2.我方飞机类 3.敌方飞机类 4.子弹类 5.补给类 6.主函数 总结 1.飞机大战效果展示   飞机大战(面向对象设计思维),主要 ...

  3. Python游戏之Pygame——太空飞机大战(三)

    上一篇(Python游戏之Pygame--太空飞机大战(二))完成了敌机类以及敌机坠毁时释放包裹类,这一篇将给出英雄战机类和处理.由于英雄战机是由游戏者操控的,所以要处理操控事件,比如往那个方向飞,发 ...

  4. Python游戏之Pygame——太空飞机大战(四)

    上一篇(Python游戏之Pygame--太空飞机大战(三))完成了英雄战机和星空,那么基本上飞机大战的主要元素都已经完成,该是总结成功玩自己游戏的时候了. 哦,差点忘了,Bullet类对于普通子弹和 ...

  5. Python游戏之Pygame——太空飞机大战(二)

    上一篇(Python游戏之Pygame--太空飞机大战(一))文章简单对游戏进行了说明,给出了部分配置文件以及子弹类.下面给出敌机类和方法. 大家直到,飞机必须能非,最好能非直线飞行.因此必须有X_s ...

  6. python请输入星期几的第一个字母来判断_【Python 实例】面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母...

    [Python 实例]面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母 题目: 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一 ...

  7. 用 Python 写一个经典的飞机大战(附源代码)

    当年微信 5.0 发布时,首页被设置成了一款新推出的小游戏,它就是微信版飞机大战,游戏一经推出便是火爆异常,铅笔画风格的游戏界面也受到了很多人的喜欢. 最近重温了一下这款小游戏,尽管时隔多年,但无论是 ...

  8. python飞机大战的实训心得体会-python之基础总结(飞机大战)

    一.学习python有一段时间了,总体上手还是挺好的,但是有些东西还是和Java存在着一定的区别,这里主要是通过学习,然后自己去编写一个案例.从中学习到的一些东西,这里分享出来,如果存在不正确的地方还 ...

  9. 学习Python之小练习(飞机大战)(1)

    其实,我个人认为:学习一门语言,首先要有兴趣,才会有学下去的动力. 以前还在纠结到底该学习Java还是C++,但是开始学习了Java之后,你就会发现:语言并不重要,重要的是思路. 在你学会一门语言的基 ...

最新文章

  1. AI时代,产品经理需要掌握的5项新技能
  2. msm8953之串口dts配置
  3. python 为html页面增加背景_Python 给html css自动添加注释
  4. java objectid_需要一种解决方法来查找objectID foreignField的字符串
  5. 【Vegas原创】ASP 0131 不允许父路径的解决
  6. SharePoint 2013开发入门探索(一)- 自定义列表
  7. Java String字符串和整型int的相互转换
  8. Go 语言之父详述切片与其他编程语言数组的不同
  9. 锁定计算机好在下游戏吗,巧用win7锁定计算机防止孩子沉迷游戏
  10. React与ES6(一)开篇介绍
  11. 用友功能传送错误功能加密服务器组件加密服务器错误拒绝访问,用友U8v8.72单机版,登录时系统提示:不能登录到加密服务器。-用友U8...
  12. 云存储软件行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  13. 壳体花纹怎么设计_换热器设计大全
  14. 大话数据结构学习笔记-第三章线性表
  15. 332.重新安排行程
  16. WebRTC中码率限制参数使用及sdp中参数使用流程
  17. matlab进行差分检验,热传导方程几种差分格式的MATLAB数值解法比较
  18. MAC 电脑安装jdk
  19. SCT12A0DHKR,2.7V-14V输入,30W高效全集成同步升压DCDC转换器,应用领域以及参考设计
  20. Struts2拦截器实现异常处理

热门文章

  1. 腾讯云服务器标准型SA2和标准型S5哪里不同
  2. STM32 GPIO 寄存器配置
  3. SQL注入-整型注入实例
  4. 全世界的大脑联合起来!全球网脑论坛BBS介绍,欢迎加入
  5. Vue2:官方路由 Vue-Router 3.x
  6. hibernate uniqueResult方法(转载)
  7. 数据看世界|球王马拉多纳因心梗去世!用数据告诉还在996的你,心梗那些事儿!
  8. Java SSM中POJO、Controller、ServiceDao、Dao层的作用于区别
  9. RIKIBOT使用系列-Jetson与树莓派系统镜像的烧写与备份
  10. RIKIBOT-FX4纯激光里程计的建图导航