第一章python语言基础 略
第二章 实战篇
2.1 搭建开发环境 略
2.2 hello world程序的实现步骤
1、创建并显示一个固定尺寸的窗口
2、处理用户关闭窗口从而退出程序的事件(会有一系列事件以及事件队列)
3、设置窗口的标题和背景色
4、在窗口的底部居中位置绘制一架飞机
首先需要加载作为飞机的图片,然后将飞机图片绘制在窗口的指定位置,可以调用窗口对象window的方法blit()来完成,该方法用于在窗口的指定位置绘制指定的元素。可以将窗口对象理解为一张画布,通过调用方法blit()可以在画布上的指定位置绘制指定的元素。调用方法blit()时要传入两个实参:第1个实参传入要绘制的元素,在这里是加载飞机图片后得到的对象my_plane,第2个实参传入要绘制的元素在窗口中的位置,可以将飞机图片在窗口中的坐标传过去。
window.blit(my_plane, (199,474))
5、让飞机向上匀速移动
要实现流畅的动画,必须让相邻画面的呈现时间间隔足够短,从而欺骗我们的眼睛,让眼睛认为画面是连续的,所以,相邻画面的呈现时间间隔必须要小于1/24秒,也就是每秒至少要呈现24个画面。通常,每个画面被称为一帧,每秒钟呈现的帧数(画面数)被称为帧率,用FPS(Frame Per Second)来表示,单位是Hz(赫兹)。
所以,要实现流畅的动画,FPS至少应为24Hz,也就是每秒至少24帧。在我们开发游戏的时候,每秒30帧的帧率就可以给玩家提供流畅的体验了。如果帧率较低,就会使得游戏看上去抖动或卡顿。帧率也没有必要太高,很多显示器的帧率是60Hz。对于75Hz以上的帧率,绝大部分地球人的肉眼已经无法分辨了。
第三章:重构上面的内容
上述步骤,是典型的面向过程编程,当项目逐渐变大的时候,不易复用和维护,所以我们要将其改为面向对象编程。
面向对象编程的三大特性是:继承、封装、和多态。
按照面向对象的编程思想,构建了飞机、飞机大战场两个类。
3-3 认识pygame当中的矩形元素
3-4 重构之提取函数
4-1 让窗口尺寸适配屏幕分辨率
获得当前屏幕的大小,接着让窗口占屏幕的长宽的固定百分比。
5-1 通过按下上下左右四个键(也支持W、A、D、S)来实现飞机的上下左右移动。
5-3 限制飞机的飞行范围。(每次让飞机的位置减少20,是自定义的值,为了让飞机看起来有动的效果,这里的20其实代表飞机移动的像素值)
5-5 提取魔法数字
魔法数字就是形如上图中20,这样的数字,有特定的含义,但是从字面数值,无法表达出其含义。在程序中多处用到,替换时,修改起来比较麻烦。
这里有几种提取方式:
1).替换为变量(小写),变量的初始值在函数开头初始化;
2).替换为常量(大写),常量的值在类的开头进行输出化;
3).替换为字段,也就是类的属性值,在类的初始化函数init中赋值;
4).替换为参数,在该方法的参数里初始化。
6-1让我方飞机在每次按下空格键后,发射一枚子弹。
7-2删除窗口中不可见的bullet
self.bullet_list.remove(bullet) #销毁列表中的某个元素
7-3 事件队列中自定义某种事件
9-1 游戏设计中的重要碰击事件,也就是精灵(Sprite)和分组(Group)
Sprite,中文意思是精灵,它位于pygame.sprite这个模块中。游戏画面中的所有元素,例如:我方飞机、子弹、敌机等,都可以被看作是精灵。
要想让游戏画面中的元素变为精灵,只需要让元素对应的类对象继承Sprite就可以了。