文章目录
五、项目实战——飞机大战
001-Pycharm中安装pygame
(1)点击pycharm下方的Terminal:

(2)输入命令:pip install pygame

(3)输入命令验证pygame是否安装:python -m pygame.examples.aliens

002-快速入门

(1)项目准备

游戏素材评论区有,这里给出链接:
移动静止的图像产生动画效果
(2)使用 pygame 创建图形窗口





游戏中的所有元素(物体)都是以 矩形区域 来描述位置的
通过四个要素(x, y)物体在游戏窗口中的位置(物体所在矩形区域的左上角),
(width, height)物体所在矩形区域的宽度和高度,来描述这个矩形区域。
python提供pygame.Rect类来描述矩形区域,这个类中很多属性,如上图。
pygame.Rect(x, y, width, height) ---> 创建对象
size属性返回一个元组(width, height)
不执行 pygame.init()方法,同样可以使用 pygame.Rect




(3)理解图像并实现图像绘制





上面图像的小格子是透明区域

(4)理解游戏循环和游戏时钟

每次调用update方法会将之前所有绘制的结果,一次性更新到游戏屏幕上。
每次调用update方法得到的结果是帧,一般要达到每秒调用60次update方法。
游戏中的动画效果,大部分是通过静态图像移动显示的。




英雄(飞机)每移动一次,背景图片就要被重新绘制一次,否则英雄会有残影。

当飞机“完全”从上方飞出屏幕之后,再将飞机移动到屏幕底部:
两种方法:
if hero_rect.y + hero_rect.height <= 0:
hero_rect.y = 700
或者
hero_rect.bottom = hero_rect.y + hero_rect.height
if hero_rect.bottom <= 0:
hero_rect.y = 700


pygame.event.get()可以获得用户所有的操作:
鼠标移动,按键盘,关闭窗口等等
上面的代码,点击叉号 是无法关闭游戏窗口的,下面演示如何关闭游戏窗口:


(5)理解精灵和精灵组


在一个游戏中,有很多游戏对象。
对于每一个游戏对象,都要设置它的图像image,位置rect等属性和更新位置update等方法,
如果一个一个创建游戏对象很麻烦,所以pygame提供里两个类:sprite是精灵的意思。
pygame.sprite.Sprite ---> 专门设置游戏对象的图像,位置等属性和更新位置等方法
pygame.sprite.Group ---> 游戏对象组,放置多个游戏对象,可以同时设置多个游戏对象
注意:pygame.sprite.Sprite类中本身是没有image和rect两个属性的,要在它的派生子类中设置
并且默认的update方法中也没有写任何代码,要在子类中重写。

如果一个类的父类不是object,在重写初始化方法__init__时,要先super()调用一个父类的__init__方法,因为父类的__init__也写有代码,需要执行,而子类重写__init__方法会覆盖父类的init方法,导致父类的init方法无法执行。





import pygame
from plane_sprites import *
pygame.init()
# 创建游戏窗口 宽480像素 高700像素,返回游戏屏幕
screen = pygame.display.set_mode((480, 700))
# 绘制背景图像
# 1>加载图像数据
background = pygame.image

本文档详细介绍了使用Python和pygame库进行飞机大战项目实战,涉及pygame安装、图形窗口、精灵管理、背景滚动、敌机与英雄设计,以及碰撞检测的步骤和代码实例。
最低0.47元/天 解锁文章
653

被折叠的 条评论
为什么被折叠?



