Pygame我们安装好了,那后面我们一起来看看飞机大战是如何用Python来实现

我们的第一个任务——添加游戏背景在载入背景前,我们得先有个window吧?自己动手码才记忆深刻,let's go!

我这里就放图片了,不容易复制哈哈哈......

程序运行结果:

虽然漆黑一片,也不见得能干什么,但总算是踏出了第一步~

2. 接下来要对程序中几个部分进行着重解释:

line 3:pygame.locals模块里面包含了很多pygame需要用到的常量,例如set_mode里面窗口的标志(flags)、消息事件(event)的类型等等。另外,程序想使用pygame.locals模块里面pygame的常量的话,只能使用“from pygame.locals import *”。

line 3:Python简洁性的一个体现就是,你需要用什么功能,就导入什么功能。这里我们需要用到exit函数来关闭窗口,从sys库中导入便是。

line 9:pygame.init()将会初始化所有导入的pygame模块。不过当某一模块发生错误时,这个函数并不会抛出异常,相对地,init()会返回一个元组,包括成功初始化的模块的数量以及发生错误的模块的数量。在这个例子中,输出init()返回的信息可以看到,

>>> ================================ RESTART ================================>>> (6, 0)

如果你愿意的话也可以手动的逐个模块初始化,这样就可以捕捉到抛出的异常了。

line 11:set_mode()函数将会创建一个显示面板(surface),它有三个参数,第一个是surface的分辨率,也就是窗口的大小,以元组的形式输入(width, height) ,如果没有输入或者设置为(0, 0)的话,系统将会把surface的分辨率设置成当前屏幕分辨率(pygame uses sdl version 1.2.10 or above);第二个是标志位(flags),也就是选定surface的显示模式,见下列表:

#pygame.FULLSCREEN create a fullscreen display

#pygame.DOUBLEBUF recommended for HWSURFACE or OPENGL

#pygame.HWSURFACE hardware accelerated, only in FULLSCREEN

#pygame.OPENGL create an OpenGL renderable display

#pygame.RESIZABLE display window should be sizeable

#pygame.NOFRAME display window will have no border or controls

第三个参数是位深(depth),即用多少位来表现颜色,文档建议不需要设置此参数,系统会选择最优值。

line 15:在我们主程序中,我们需要一个事件的循环(loop)来不断地检测交互过程中用户的操作。pygame.event.get()方法可以从事件队列得到所有事件的一个列表,我们使用一个循环不断地检测每一个事件,一旦我们找到quit事件,我们就退出游戏关闭窗口。还有一点值得我们思考,如果我们不设置退出操作,我们的黑窗口又会变成怎样呢?结果是,我们点击窗口右上角的红色叉叉时,程序依然可以检测到quit事件,但是窗口是不会关闭的,因为我们没有为它设置相关的操作。

3. 正式载入背景

有了上面的知识,我们已经大致了解程序的框架了,那么入正题!载入背景图片~

注意,我们添加几条语句即可~(ω)

程序运行结果:

怎么感觉哪里不对呢?为什么背景图没有全部盖呢?

那是因为我们的背景图的 宽度是320像素,高度是568像素。

我们创建的窗口是 宽度是480像素,高度是640像素,要比背景图片大的多

我们以后创建窗口的大小要与背景图片的大小一样,才不会出错。

修改后的效果:

我们在原来的程序上增加了3条语句。

第一句是载入背景图片的,image文件夹要跟你的py文件放在一起哦;

第二句用来绘制图像,surface.blit()算是很常用的函数了,第一个参数是图像资源,第二个参数决定图像放置的位置(左上角的坐标);

第三个语句是更新屏幕,就是把绘制好的背景给“刷”上去。

在这里多说一点,关于pygame.display.flip()和pygame.display.update(),文档上说,update更像是flip的优化版本,主要区别是flip是屏幕的整体刷新(entire),而update是局部刷新(portion)。

最后来思考一个问题,假如我们把后面两条新语句移到while循环上面会怎样?在这个demo中不会有明显影响,但当以后我们在屏幕中加入其它图像元素后,一执行update操作,背景图就没有了。

python飞机大战实验报告心得_Python学习之路「第七篇」-Pygame之飞机大战相关推荐

  1. python飞机大战实验报告心得_Python学习之路「第七篇」-Pygame之飞机大战1

    前言 在上一篇中,我们初步了解了pygame的控制流程,但这对于一个游戏而言是远远不够的.所以在这一篇中,我们的任务是添加一架飞机(玩家),并且能够控制它进行移动,这样我们就又离目标进了一步了~ 这里 ...

  2. python飞机大战实验报告心得_飞机大战实验报告

    飞机大战实验报告 专业: 网络工程 1 32班 学号: 13 9074 298 ﻩ姓名:孙 仁 强 计算机科学与技术学院 二零一六年 十二月 一.软件运行所需要得软硬件环境 本系统就是以Windows ...

  3. python人脸识别实验报告总结_Python 使用 face_recognition 人脸识别

    Python 使用 face_recognition 人脸识别 人脸识别 face_recognition 是世界上最简单的人脸识别库. 使用 dlib 最先进的人脸识别功能构建建立深度学习,该模型准 ...

  4. python基础语法实验报告小结_Python基础小结

    一.执行Python程序的两种方式 1.1 交互式 在终端内输入python3,然后输入python代码 1.2 命令行式 在终端内输入python3 文本文件路径 二.执行Python程序的两种ID ...

  5. android飞机大战实验过程报告,飞机大战实验报告.docx

    <飞机大战实验报告.docx>由会员分享,可在线阅读,更多相关<飞机大战实验报告.docx(12页珍藏版)>请在装配图网上搜索. 1.飞机大战实验报告专业:网络工程132班学号 ...

  6. python语言的实验心得体会范文_实验报告心得体会范文3篇_心得体会

    实验报告心得体会范文 3 篇 _ 心得体会 篇一:实验报告心得体会范文 这次实习, 我对该公司的一些情况有了一个基本的了解, 根据在实习期间的所见, 我对 公司的今后发展提出了以下的建议: 1. 公司 ...

  7. python实验心得体会范文大全_万能实验报告心得体会5篇范文

    --文章来源网,仅供分享学习参考 ~ 1 ~ 万能实验报告心得体会 5 篇范文 万能实验报告心得体会(一) : 本次实训,是对我本事的进一步锻炼,也是一种考验.从中获得 的诸多收获,也是很可贵的,是十 ...

  8. 飞机大战c语言设计报告,中南大学电信-C语言飞机大战实验报告.doc

    中南大学电信-C语言飞机大战实验报告 C语言课程设计报告 题 目 C语言飞机大战 学生姓名 学 号 指导教师 学 院 信息科学与工程学院 专业班级 电子信息工程2班 完成时间 程序框图 按任意键进入游 ...

  9. android飞机大战实验过程报告,飞机大战实验报告.doc

    . . 飞机大战实验报告 专业:网络工程132班 学号:139074298 姓名:孙 仁 强 计算机科学与技术学院 二零一六年十二月 一.软件运行所需要的软硬件环境? 本系统是以Windows系统为操 ...

最新文章

  1. 老师学python可以干嘛-Python除了爬虫,还能干啥?
  2. 在WebRTC上实现ML Kit笑容检测
  3. Android开发之RecyclerView动态添加item长按删除item源码
  4. ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
  5. 漫步线性代数二十二——行列式性质
  6. 剑指offer——15.二进制中1的个数
  7. 可编程led灯带原理_技术分享:二极管发光原理与LED灯带
  8. Python中的logging模块
  9. 维密天使糖糖传授自拍秘籍,最满意自拍来自OPPO R11s
  10. 汇编学习--7.16--端口
  11. BeyondCompare3提示许可密钥过期完美解决方法
  12. 盛夏光年 - 江湖一剑客
  13. gradle dependsOn等记录玩转。
  14. 如何在PlayStation 4上查看或清除浏览历史记录
  15. fan4801开关电源原理图_全面解析开关电源各功能电路(附原理图)
  16. uboot构建框架6-u-boot.bin生成过程追踪
  17. 摩尔定律即将走向终结?对未来更广阔世界影响的55个预测!
  18. 可见性,原子性,有序性的源头(一)
  19. [乐意黎原创]OFO小黄车提示你有未完成订单/未知错误的解决方法
  20. MRTG (Multi Router Traffic Grapher)

热门文章

  1. info函数linux,Linux sysinfo函数、结构体使用
  2. formdata传递参数_post请求中的参数形式和form-data提交数据时取不到的问题
  3. 2021年山东省安全员C证实操考试视频及山东省安全员C证操作证考试
  4. css背景随机,CSS3随机背景图片切换特效
  5. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛
  6. 全军出击机器人进房间_《刺激战场》和《全军出击》快递机器人这么多,你怎么看?...
  7. 最安全的加密算法 Bcrypt,再也不用担心数据泄密了~
  8. 保险知识之:什么是重大疾病保险?
  9. 因以下文件的损坏或丢失,Windows无法启动【解决方法】
  10. linux下打开js乱码gbk,解决JS请求服务器gbk文件乱码的问题