1 importpygame2 from plane_sprites import *

3

4

5 classPlaneGame(object):6 """飞机大战主游戏"""

7

8 def __init__(self):9 print("游戏初始化")10

11 #1.创建游戏的窗口

12 self.screen =pygame.display.set_mode(SCREEN_RECT.size)13 #2.创建游戏的时钟

14 self.clock =pygame.time.Clock()15 #3.调用私有方法,精灵和精灵组的创建

16 self.__create_sprites()17

18 #4.设置定时器事件——创建敌机 1S

19 pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000)20 pygame.time.set_timer(HERO_FIRE_EVENT, 500)21

22 #定义精灵和精灵组

23 def __create_sprites(self):24 #创建背景精灵和精灵组

25 bg1 =Background()26 bg2 =Background(True)27 #bg2起始位置在bg1的上方

28 #bg2.rect.y = -bg2.rect.height

29

30 self.back_group =pygame.sprite.Group(bg1, bg2)31

32 #创建敌机的精灵组

33 self.enemy_group =pygame.sprite.Group()34

35 #创建英雄的精灵和精灵组

36 self.hero =Hero()37 self.hero_group =pygame.sprite.Group(self.hero)38

39 #游戏循环

40 defstart_game(self):41 print("游戏开始...")42

43 whileTrue:44 #1.设置刷新帧率

45 self.clock.tick(FRAME_PER_SEC)46 #2.事件监听

47 self.__even_handler()48 #3.碰撞检测

49 self.__check_collide()50 #4.更新/绘制精灵组

51 self.__update_sprites()52 #5.更新屏幕显示

53 pygame.display.update()54

55 pass

56

57 #定义事件监听函数

58 def __even_handler(self):59 for event inpygame.event.get():60

61 #判断是否退出游戏

62 if event.type ==pygame.QUIT:63 PlaneGame.__game_over()64 elif event.type ==CREATE_ENEMY_EVENT:65 #print("敌机出场...")

66 #创建敌机精灵

67 enemy =Enemy()68

69 #将敌机精灵添加到敌机精灵组

70 self.enemy_group.add(enemy)71 elif event.type ==HERO_FIRE_EVENT:72 self.hero.fire()73 #直接判断键盘按键不能持续的获取按键事件

74 #elif event.type == pygame.KEYDOWN and event.type == pygame.K_RIGHT:

75 #print("向右移动...")

76

77 #使用键盘模块提供的方法获取键盘按键——键盘模块可以持续的获取键盘按键

78 keys_pressed =pygame.key.get_pressed()79 #判断元祖中对应的按键索引值

80 if keys_pressed[pygame.K_RIGHT] orkeys_pressed[pygame.K_d]:81 self.hero.rect.x += 2

82 elif keys_pressed[pygame.K_LEFT] orkeys_pressed[pygame.K_a]:83 self.hero.rect.x -= 2

84 elif keys_pressed[pygame.K_UP] orkeys_pressed[pygame.K_w]:85 self.hero.rect.y -= 2

86 elif keys_pressed[pygame.K_DOWN] orkeys_pressed[pygame.K_s]:87 self.hero.rect.y += 2

88 else:89 self.hero.speed =090

91 #定义碰撞检测

92 def __check_collide(self):93

94 #1.子弹摧毁敌机—— groupcollide可以判断两个精灵组之间是否碰撞

95 pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True)96

97 #敌机撞毁英雄——spritecollide可以判断精灵和精灵组之间是否碰撞

98 enemies =pygame.sprite.spritecollide(self.hero, self.enemy_group, True)99

100 #判断列表是否有内容

101 if len(enemies) >0:102

103 #让英雄牺牲

104 self.hero.kill()105

106 #结束游戏

107 PlaneGame.__game_over()108

109 #定义精灵组调用update()和draw()方法实现屏幕更新

110 def __update_sprites(self):111

112 self.back_group.update()113 self.back_group.draw(self.screen)114 self.enemy_group.update()115 self.enemy_group.draw(self.screen)116 self.hero_group.update()117 self.hero_group.draw(self.screen)118 self.hero.bullets.update()119 self.hero.bullets.draw(self.screen)120

121 #游戏结束

122 @staticmethod123 def __game_over():124 print("游戏结束...")125

126 pygame.quit()127 exit()128

129

130 if __name__ == '__main__':131

132 #创建游戏对象

133 game =PlaneGame()134

135 #启动游戏

136 game.start_game()

python飞机大战源代码-python飞机大战源码和素材相关推荐

  1. Python仓库管理系统源代码,库存管理系统源码,基于flask,内含数据库文件,已实现出入库、库存预警,库存搜索等功能

    Python仓库管理系统源代码,库存管理系统源码,基于flask,内含数据库文件,已实现出入库.库存预警,库存搜索等功能 已实现三大功能:库存管理(出库.入库.低库存预警.物品搜索),预算统计,出入库 ...

  2. 数据结构与算法python语言实现答案_数据结构与算法:Python语言实现 源代码 PPT 练习答案 源码.zip...

    1 60660-数据结构与算法:Python语言实现[练习答案]Solutions Manual.rar 943.25 KB 2018/11/1 12:03:34 2 __MACOSX 0 Bytes ...

  3. python五子棋单机版源代码_python 五子棋 游戏源码(python 2.7入门级)

    [实例简介] [实例截图] [核心代码] from Tkinter import * from tkMessageBox import * class Game: def __init__(self) ...

  4. Python实现飞机大战-第二部分(附源码、素材、超详细教程)

    飞机大战第二部分 1.前言 2.飞机射击 2.1.添加子弹的相关设置 2.2.创建文件bullet.py 2.3.修改game_functions.py 2.4.修改mian.py 2.5.射击效果 ...

  5. python飞机大战源码素材包_小甲鱼python基础教程飞机大战源码及素材

    原博文 2018-12-22 23:32 − 百度了半天小甲鱼python飞机大战的源码和素材,搜出一堆不知道是什么玩意儿的玩意儿. 最终还是自己对着视频一行行代码敲出来. 需要的同学点下面的链接自取 ...

  6. Python贪吃蛇小游戏_完整源码免费分享

    文章目录 Python 贪吃蛇小游戏 1. 导包 2. 配置初始化参数 3. 主函数及运行主体 4. 画食物的函数 5. 画贪吃蛇的函数 6. 画网格的函数(非必选,觉得多余的可以忽略此项) 7. 操 ...

  7. 熬夜整理出了70个清华大佬都在用的Python经典练手项目【附源码】

    我们都知道,不管学习那门语言最终都要做出实际的东西来,而对于编程而言,这个实际的东西当然就是项目啦,不用我多说大家都知道学编程语言做项目的重要性. 于是,小编熬了几个通宵,终于整理出了70个清华大佬都 ...

  8. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码

    内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...

  9. 网页爬虫python代码_《用python写网络爬虫》完整版+源码

    原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...

  10. python在abaqus中的应用代码下载_Python-(source-code)-in--Abaqus Python语言在Abaqus中的应用(源码) - 下载 - 搜珍网...

    Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码)/Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码 ...

最新文章

  1. CSS DIV 居中
  2. Software Ate The World, Open Source Is Eating The Software World
  3. ad20中怎么多选操作改层_在操作系统中CPU是怎么调度的
  4. Axure企业官网通用模板web端+公司官网通用模板web端高保真原型+服务企业门户官网+加入我们+在线招聘+企业宣传+新闻动态+企业理念+产品与服务+公司通用版官方电脑端门户网站
  5. Android笔记(四十七) Android中的数据存储——XML(三)SAX解析
  6. load与DOMContentLoaded
  7. GBDT(MART) 迭代决策树入门教程 | 简介 写的非常好!!
  8. Bus Hound 使用指南
  9. 哲学家就餐问题python_哲学家就餐问题的一种Python解决方案
  10. 看看北京生活有多好……
  11. 双样本T检验-P-T和T-T检验
  12. matlab 狼追兔子,数学模型--狼追击兔子的问题.doc
  13. (产品求职)阿里巴巴价值观和业务图
  14. [转载] excel调用python编程-超简单:用Python让Excel飞起
  15. 大数据开发就业:大数据开发有哪些岗位
  16. python输出时怎么保留两位小数_python输出怎么保留两位小数-Python教程
  17. IE的各种设置列表及禁止修改IE主页
  18. 华联股份:范本式改造,BHG Mall全新升级开辟商业新契机
  19. 破解加密的PDF文件有什么方法?
  20. 网上书城项目的书籍分类列表展示及新书上架和热销书籍效果展示功能(项目进度四)

热门文章

  1. C++ 名字重载、隐藏、覆盖
  2. [Swift]LeetCode373. 查找和最小的K对数字 | Find K Pairs with Smallest Sums
  3. (转)MySQL 线程池内幕
  4. 【转】Hive学习路线图
  5. codeforces 667A A. Pouring Rain(水题)
  6. JavaScript的过去、现在和未来--过去
  7. asp.net select Case条件语句的使用方法
  8. MySQL Query Log
  9. linux 相对路径
  10. python常见错误-Python错误及异常总结汇总