Python创造了一个飞机战斗游戏, 详细说明了每一行代码。
来源:http://www.tudoupe.com时间:2021-12-03
一、模块
一. 使用管道,安装游戏模块。
建议安装Windows用下列物品:
https://blog.csdn.net/qq_38721302/article/details/83243632
Nota bene: 游戏应该安装在PyCharm的脚本解译器系统目录中 。
Linux的安装说明:
安装pygame
校验安装( aliens 是内置的微型游戏) 。
2. 图片素材下载
以下图像可从100度云链接直接下载:
https://pan.baidu.com/s/1pMM0beb
二. 游戏模块介绍
一. 游戏的启动和退出
| 方法 | 含义 |
|---|---|
| pygame.init() | 在使用其他模块之前,导入和初始化所有棋盘模块,并执行首字母函数。 |
| pygame.quit() | 卸载所有游戏模块, 并在游戏结束前调用 。 |
二. 游戏游戏坐标
O(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0) (0,0) (0) (0) (0)
向右水平水平x轴,逐步增加
Y轴是直线下降, 逐渐增长。

游戏中所有可见的项目都在上文矩形部分解释。
要描述游戏窗口的矩形区域(坐标系统),应该有四个元素:(x, y)和(width, 高度),其中(x,y)定义矩形区域(初始点)左上角的坐标,以及(width, 高度)调节矩形区域的大小。
在 pygame. Rect 中, 有一个用于描述矩形区域的类 :
矩形区域对象的名称 = pygame. 矩形( x, y, 宽度, 右)
制作矩形区域的项目 。
x, y, 字段和标题是可以通过对象名称访问的对象属性。
还有一个尺寸的维度属性: 它是一个组 -- (宽度, 页眉) 可以直接进入宽度和页眉, 它可以作为参数值提供给游戏。 我不知道, 显示. Set_ mode (..), 然后我们讨论它 。
在源坐标处构造宽度=100,高度=140平面对象。

第6行的代码也可以修改如下:

三. 使游戏的主窗口成为游戏的主窗口
游戏中的模块。 游戏中构建和处理游戏主窗口的游戏 :
| 方法 | 含义 |
|---|---|
| pygame.display.set_mode() | 初始化游戏显示窗口 |
| pygame.display.update | 刷新显示游戏窗口 |
主窗口对象的名称 = pygame. 我不知道, 显示 。 Set_ mode (分辨率= (0, 0, ), 旗帜=0, 深度=0)
为游戏制作显示窗口对象。
其中,溶液、旗帜和深度是物体特性。
分辨率是一个组,它必须传递给一个组,该组将决定屏幕的宽度和高度;默认的默认值是整个屏幕的大小,这可能是平局。矩形(..)方法返回矩形区域对象的大小属性 - 它是一个组。
旗帜为屏幕提供了额外的设置, 如是否应该为全屏; 默认值不需要传递 。
深度定义颜色位数的数量, 默认自动匹配
返回值 返回游戏的主窗口, 游戏的元素必须被拖放到游戏的主窗口中
构造游戏主控窗口( 480 700) 示例 。

四。 在游戏主窗口中创建图片 。
游戏中显示的大多数项目都是图片, 图像文件首先保存在磁盘上。 如果要使用它们, 第一步是将图片装入内存, 通常是为了查看屏幕上特定图像的内容, 并且必须执行以下三个程序 :
对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起
使用游戏的主要窗口对象,将图形绘制到某个位置。
要更新整个屏幕的显示, 请使用 pygame. I'm not sure, show. update () 函数 。

对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,
打开图像,然后将数据装入内存,其中路径可以是图片的相对源代码。如果给 py 文件给定一个相对或绝对路径,则返回图片对象。
游戏主控主窗口对象名称.blit(图像名称、矩形区域对象或(x, y) 坐标)
在游戏主窗口中创建图片 。
矩形 区域 对象 图像对象 与 游戏主窗口 的 矩形 区域 的 原始 对应, 这个矩形 区域 通常 配置 符合 图片 的 大小, 使 图片 与 矩形 区域 相对应 - 图片 负责 动画, 矩形 区域 负责 游戏 的 逻辑 控制 。
(x, y) 坐标元素, 即项目在游戏主窗口中的位置 。pygame.display.update()
刷新显示游戏主窗口
提示: 要查看屏幕上的结果, 请使用 pygame. I'm not sure, display. update () 方法 。
例如,我们试图将飞机战争背景的背景图片. Png 文件加载到游戏的主窗口中。


提示 : 我们可以使用 Blit () 方法来设置游戏主窗口中的所有图片, 然后使用 pygame. I don't know, display. update () 来刷新游戏的主窗口 。
五个阶段(一):显示英雄飞机
抓取英雄飞机 me1. Png 或 me2. Png 文件, 并放在游戏主窗口的背景上 。

我们打开了PyCharm或PS的图像, 在一系列灰色和白色像素中发现了英雄平面图像,

6. 扩展
本篇文章仅讨论游戏模块中的一些简单方法,该模块的能力较强,如果有兴趣学习,可以查阅:
Pygame官方网络:https://ww.pygame.comI'm sorry, pygame.Photo,请见http://ww.un.org/news/photo.org/news/news/
Pygame 网站文件:https://ww.com/photos.com/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/pygames/p
三、游戏主功能
一. 动动执行的基本要素 -- -- 框架框架
我们知道视频是用框架播放的, 视频的核心是动态更新 一个动态的动态图片 变化的图片 利用肉眼的视觉耐受力, 这样我们就可以使用计算机 快速更新许多图片 以动画的效果动画。
使用计算机,每秒可制作60次高连续高质量动画,每次将结果称为框架框架。
每秒播放一张照片的次数被称为 FPS (Frames Per second), 这是游戏的 FPS 。
2. 游戏循环
游戏周期通常是指游戏的正式开始。

游戏循环的作用:
检查游戏是否退出 。
动动图片位置变化
每1/60秒,移动所有照片。
调用 pygame. 我不确定, 显示。 更新( ) 以更新显示 。检查人们如何与键盘、小鼠和其他装置互动。
3. 游戏时钟
在Python,虽然是真实的:骑自行车可能每秒数十万次, 我们不需要这么高的架子速率。 我不知道你在说什么, 但我不知道你在说什么。 钟可以设置游戏主窗口的绘图速度, 刷新架子速率。
时钟对象名称 = pygame. 我不知道你在说什么, 但我不知道你在说什么, 但我不知道你在说什么,
创建一个时钟对象
选中。 时钟对象名称 。
为了实现固定框架费率的更新,可以确定一个时钟框架费率,这相当于在援引 tick() 函数时暂停1/框架第二秒的时间。
例:

每秒都有零,一,二,三,四。
四,一个英雄飞机的直截了当的动画
Blit () 函数会发送坐标数组或矩形区域对象, 因此在动画播放时, 我们可直接使用矩形区域对象作为图片的位置, 使图像位置与矩形区域位置匹配 。
以圆轴上的矩形矩形矩形区域为例的飞机移动

五,英雄飞机的动画是正确的
因为在同一背景下制作的照片不会消失, 如果您想要在单一背景下制作一个英雄平面的动画, 在游戏的主窗口中创建另一个背景, 覆盖旧图像, 然后绘制一个英雄平面的图片来制作英雄平面的动画 。
它基于前一项准则,只要接受它就行了。window.blit(background, (0, 0))放在while True:中即可实现

注意:飞机会从屏幕上飞出来, 我们只需要做出一个基本决定, 确定矩形区域的位置, 才能让飞机再次移动; 此外,我们将改变机身框架率和距离, 以完成具有凝聚力的动画。

六号,英雄飞机动画了
在同一地点使用两张或多张相片 来完成英雄飞机 喷气式飞机的运动
示例:为了更新英雄飞机的变化,请使用 me1.Png 和 me2.Png 。
由于在同一上下文中制作的图片不会消失,必须用新的背景来覆盖前一背景,以显示同一背景下的不同影响。

七个。在游戏循环中,你可以听活动。
事件事件, 即一旦游戏开始, 用户与游戏的互动动作, 例如按键盘或点击鼠标 。
我不确定您在说什么, vent. get () 函数可以获取一个事件列表, 其中用户正在积极执行活动, 用户可以同时执行许多事件。 方法的返回值是游戏主窗口上的事件列表 。
例如,在以上例子中增加了以下代码,以便能够监听活动:

以“用户 x 退出游戏界面” 为例, 收听“ 用户 x 退出游戏界面 ” 。
提示: 这个代码非常刻板。 几乎所有的游戏游戏都是一样的 。
四、蓝精精
一 精灵 精灵 精灵 精灵
图片的加载、位置的改变和图像的绘图需要我们制作脚本,以便在上述开发过程中分别处理这些脚本,而游戏为缓解这些发展步骤提供了两类:
抱歉, pygame. 我不知道你在说什么, Sprite. Sprite -- -- 用来制作[带有图像数据属性的对象: 图像属性和精灵位置属性: 矩形属性 - 精灵] 的类 。
对不起,小游戏,我不知道你在说什么,斯普瑞特,集团,精灵是几件精灵物品
2. 派生精灵子类
对不起,小游戏。 我不知道你在说什么, Sprite, Sprite和pygame。 我不知道你在说什么, Sprite。

精灵界定了两种内在情况:
对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起
对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起对不起,小游戏 对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起。
对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起。
精灵和精灵的原始内置方法 取决于“图像”和“记录”这两个名称所使用的属性, 因此,如果这两个名称不用于归属, 精灵和精灵的内置方法将无法使用, 精灵的内置方法将变成空壳。重要)
因为原始的精灵- init- () 函数没有指定, 精灵必须添加到种子类别中 。 图像和自我。 矩形 - 当然, 这必须留给创作者。 由开发者来选择要使用哪些小精灵的照片、 大小和大小 。
我们必须重写 Init_ () 使用衍生工具将需要的论点传递给自己。 Image 和 self. reect, 但我们必须使用 super (). Init () 来调用 elf 的初始化功能, 因为它定义了额外的组件; 否则, 直接重写方法将会被覆盖 approachst 重写 init_ () 使用 衍生工具将需要的论点传递给自己。 Image 和 self 。 Rect, 但我们必须使用 super (). Init () 来调用 elf 的初始化功能, 因为它定义了额外的元素; 否则, 直接重写方法将会被覆盖 。重要)
对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起
第二,精灵定义了一种内在的方法:更新(),但没有内容, 必须在衍生物中重新生成, 这些衍生物用来写小精灵的动作, 通过自我。 我不确定你在说什么, 矩形x和自我。
在建造精灵之后,我们必须通过下列方式将同类精灵分组成一群精灵:
@elder_manI don't know what you're talking about, Sprite. Group, 加入同一个精灵组。当然,你可以提到精灵组的名称,如果你想在一组确定的精灵中添加精灵。Add(精灵名单)方法。
当精灵死亡时,即当他不再需要被画在屏幕上时,精灵必须离开精灵群体,利用精灵的杀命功能将精灵从他所属的精灵群体中转移出来,精灵的记忆将被解放。
(()更新方法)允许属于精灵的所有精灵可以称之为精灵更新()方法,其中精灵的所有精灵都有更新()运动,这就是为什么自精灵更新()方法取决于精灵更新()方法以来,精灵有内在更新()方法的原因。重要)
同样的精灵的绘画技巧 让属于精灵的所有精灵 都能在游戏主窗口表面上画出来重要)
游戏的主要窗口对象由表面传输。
图形中的“ 屏幕” 一词指游戏的主窗口 。
调用一个宏大模块,可以随机建造几种敌机,以及随机设置各种敌机外观和抵达速度。
制作精灵游戏,
我不知道你在说什么 Sprite. Sprite. New plain_prites. Py 文件定义了游戏精灵类型 GameSprite 从游戏中继承的游戏。

属性:
对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起
蓝精灵大小是一个矩形,图像大小是默认值。
Elf 移动速度默认为 1 。
方法:
_init_ 将上述属性值设定为默认值。
我不确定你在说什么,右派,我不确定你在说什么。每次你更新精灵自我屏幕时,游戏周期内的最新电话。“向下——向下移动”
注:
如果某类的家长不是对象
如果您修改 _init_ 初始化函数, 您必须从超级 (._init_ (..) 开始, 使用原始父法来避免覆盖原始父法的内容( 例如, 定义的 GameSprite 从 pygame 模块继承 Sprite 类 ) 。
这是如何确保父母中实现的输入代码得到适当执行的。
我不确定 飞机 普雷特斯。 Python 代码 :
三,用精灵和精灵制造敌机
敌机在游戏中移动物体 这些可能是精灵
需求:
利用上述精灵来制造敌人精灵和敌人移动图形。
要制作图像, 请使用 py 文件描述的 plain_ prites. Type 。
步骤:
从这里导入 plain_prite 模块 。
进口的模块可以直接使用。
必须向导入模块提供模块名模块名。要使用在游戏开始时,制造精灵项目和精灵群。
在游戏周期中,请独立调用更新()和绘图(屏幕)功能。
职责:
(1) 精灵:
封面图片、直直线位置和速度
添加一个更新 () 函数以根据游戏矩形的需求调整位置
(2) 精灵组:
包含多个精灵对象
为了更新位置,精灵中的每个精灵都必须履行更新()功能。
要在屏幕上绘制精灵组中的所有精灵, 请使用 Draw( 屏幕) 函数 。

注意图像中获取_rect () 提供 pygame 。 矩形( 0, 0, 图像宽度, 图像高) 对象使用坐标系统( 0, 0), 但是它们的交叉坐标可以通过返回值对象的属性 x 来对齐 。
五、游戏框架的搭建
目标是采用以物体为导向的飞机作战游戏。
1. 文件分配
根据我们的要求,我们只需要两个Py文件:平原的Py文件作为飞机战争游戏的主程序文件, 普通的Py文件作为个体精灵的定义文件。
plane_main.py :
封装主游戏类
创建游戏对象
启动游戏
plane_sprites.py:
封封游戏需要的所有精灵
提供游戏的相关工具
英雄飞机是直接制造的,但敌机是用精灵和精灵制成的。


我不确定 平面 prites 。 Py 源代码 :
注:我们建造矩形区域物体常数,以改变代码(需要)和可读性 -- -- 代码的进一步修改要求仅仅改变常数。
SCREEN_RECT = pygame.Rect(0, 0, 480, 700)
- 由于此矩形区域天体用于代表游戏的主窗口, 我们将使用 :
我不知道你们在说什么 但我不确定你们在说什么 但我不确定你们在说什么
我不知道你在说什么 但我不确定你在说什么 但我不确定你在说什么 但我不确定你在说什么
二. 背景旋转滚动是一个游戏模式。
虽然在3, 游戏主机功能5, 我们用英雄平面的正确动画 解决了游戏平面运动的问题。
然而,实际上,在许多复杂的游戏开发套房中,我们利用背景图片游戏来取代英雄的机动性,这样英雄就坐在屏幕上某个地方(可能到处移动),造成英雄飞机前进的视觉幻觉。
思路构图如图所示:

制作和使用了两个背景图像精灵,因为背景图像像敌对精灵一样移动。
一开始,背景图1和游戏的主窗口被完全连接,背景图2就在屏幕上方。
yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yea, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, ye, yeah, ye, ye, ye, yeah, ye, yeah, yeah, yeah, yeah, yeah, ye, yeah, yea, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye, ye,
当任意背景精灵的 rect.y >= 屏幕的深度 时说明当前背景精灵已经移动到屏幕下方,那么我们需要将 移动到屏幕下方的这张背景图像 设置到 游戏主窗口的正上方,即:rect.y = -rect.height
上述功能可用于连续滚动图片。 在原始平原_ prites. Py 文档中, 我们只定义敌机精灵的向下移动, 屏幕精灵可以使用这种向下移动技术; 但是, 有必要加强屏幕图像的旋转滚动, 并在 GameSprite 原类别中建立一个子类, 重写更新方法( ) ( 这种方法扩大了图像位置的确定范围 ) ; 其次,

我不确定,飞机上。 New Python 代码—— 后组类:
三. 航空器冲突的基本结构
根据上述想法发展了以下类型的继承关系:

总框架,包括完整部分的密码和其他部分的密码:
我不确定 平面 prites 。 Py 源代码 :
我不知道你在说什么 但我不确定你在说什么 但我不确定你在说什么 但我不确定你在说什么
四. 敌人的定时和随机定点设计
约定:
比赛开始后 一架敌方飞机 称为定时器 将每1秒到达
随着每个对手在屏幕下飞行,飞行速度各异,随机飞行。
每架敌机都有独特的水平位置,随机确定。
当敌人从游戏主窗口下方飞来时,它不会回到屏幕上——摧毁精灵物体。
定时器:
你可以在游戏中使用游戏游戏。 我不知道你在说什么, 但我不确定你在说什么。Set_time () 添加一个计时器, 即所谓的计时器, 是一个中断, 也就是说, 每个指定时间段的信号。
pygame.time.set_time(eventid, millisecond)
添加无返回值的计时器。
Ventid 事件代码, 基于 pygame. USERPEP 常数, 以定义 USERPE 是一个整数, 并且可以使用 USEREWERT+1 等给出进一步的事件 。
毫秒(毫秒):毫秒(毫秒),即定时器的触发时间间隔
当定时器设定时, 它会每隔一段时间发送一个事件 - 事件, 可能是游戏。 我不知道您在说什么, vent. Get () 无意中听到, 所以我们只需要在游戏中出现。 我不确定您在说什么, vent. Get () 设置当听到事件时会发生什么 。
Pygame的定时器有数量有限的电路:
提供一个定时器常数 - 事件
要设置定时器事件,请在启动功能中调用设置_计时器。
在游戏主环中,我正在听一个定时器活动。
在 plane_prites. py 中,以下是 py 文件的最高定义 :
以游戏为生 以游戏为生 以预防为生 以预防为生
在 plane_main.py 中,在 py 文件的 PlaneGame 类中添加一个基于时间的创建事件 :
要监听事件, 请在 py 文件中使用 plane_ main._ event_ handler () 函数 :
设计敌人分类:
此外,当敌机从屏幕上飞出时,应删除精灵在精灵的精灵相匹配的精灵。 将开发原GameSprite类的一个小节,以履行这些特殊职责。

因此,新结构如下:

我们必须导入随机模块, 才能实现随机化 。
在 __ init_ (..) 函数中, 我们首先在 1-3 之间生成一个随机数, 3 个随机数显示三种不同类型的敌机的开发情况- 称为父法 。_ init_ (..) 。 单独输入 。 / 游戏材料/ 敌人 1 。
游戏材料/敌人2. 我不知道, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人, 人,随机. Randrange( [ start], stop[, step] : 从[ start, stop] 区域, 间距步骤大小, 提取随机数字, 如: random. grandrange (10, 30, 2), 与从 [10, 12, 14,.., 26, 28] 中选择的随机数字相当
我不知道你在说什么 我不知道你在说什么 我不知道你在说什么 小子 我不知道你在说什么 我不知道你在说什么
对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起,对不起
我不知道你在说什么, 自我。 我不知道你在说什么,直肠。 我不知道你在说什么, 但我不知道你在说什么。
我不知道你在说什么,理疗室Bottom, 这真的是精灵图片的底部Y轴, 也可能是自设的。 我不知道你在说什么,理疗室Bottom=0,自我。 我不知道你在说什么,理疗室H8=0,自我。 我不知道你在说什么。
在更新()方法中调用母法, 提高敌精灵从游戏主窗口飞出的可能性, 当敌精灵从游戏主窗口飞出时, 他们需要从精灵群中移出, 并用自称来解除记忆。 Kill () 方法在释放记忆时将精灵从精灵群中移出。
在 plane_prites. py 中, 新代码 - 敌军等级 :
要处理敌人精灵, 首先要在敌人精灵中建立敌人精灵组, 在 _deate_ sprites( self) makendle the enemy Elves( self) 中建立敌人精灵组, 在_ create_ sprites( self) 中建立敌人精灵组 。
在PlaneGame皮文件类中,使用 _deate_sprites( self) 构建敌人精灵群 :
当我们无意中听到CREATE_ENEMY CPE, 它表示我们要制造一个敌人精灵, 我们正在利用敌人创造一个敌人精灵。 我不知道你们在说什么, 敌人集团。 Add () 新的敌人精灵加入敌人精灵建设 我们听到CREATE_ENEMY CPE, 它表明我们要制造一个敌人精灵, 我们正在利用Enemy () 来制造一个敌人精灵。 我不知道你们在说什么, 敌人集团。 Add () 新的敌人精灵加入敌人精灵。
监听一个时间事件, 该事件会更改通过以生成敌机, 用于在 py 文件的平面_ main._ event_ handler () 中每隔一段时间创建敌精灵 :
更新_prites () 以让敌人精灵使用更新 () 来改变位置和自我。 我不知道你在说什么, 敌人集团 。 Screen) 更新显示
在 plane_main.py 文件中, 更新_ prites () 方法中的代码如下:

五. 设计英雄飞机和发射子弹设计
英雄类。 需要:
随着游戏的开始,游戏平面应该在主窗口中心显示,以便您可以配置它。
self.rect.bottom = SCREEN_RECT.height每5秒钟,英雄飞机就发射1发子弹,一次3发子弹。
英雄飞机必须从右向左通过暴徒或键盘按钮, 而不是上下, 使用游戏。 抱歉, Key. get_ pressed () 与键盘接口 。
子弹类型 - 子弹类型需求 :
子弹是从英雄飞机上直直向线发射的。
同样,当你从屏幕上飞出来时, 你必须释放精灵。

英雄类型 :
父母(. init/ game professional/me1. "Png") “包括英雄飞机的图像。”
将英雄飞机的速度设定为 0, 因为它不是直线飞行 。
将其起始位置设置为游戏主窗口的中心 。
定义射击射击的火()方法。
由于英雄平面不需要垂直旅行, 它不需要与父机更新功能( ) 联系, 但是它需要重写以水平移动, 而是初始速度 。 Speed 必须设置为零, 否则英雄平面会因为精灵的更新( ) 调用而移动, 只有当用户按左/ 右移动键时, 我们才会更改英雄平面 。
现在,既然我们要访问英雄飞机的速度特性, 我们将建造英雄飞机精灵 进入PlaneGame类的示例特性中, 以便利用这些特性, 在_deate_prites 函数外, 因为我们要访问英雄飞机的速度特性, 我们将建造英雄飞机精灵 进入PlaneGame类的示例特性中, 以便在_deate_prites方法外使用它们。重要)
同时,限制更新()方法的界限,以防止英雄飞机在游戏主窗口外飞行。
我不知道你在说什么 直肠 Centrex 实际上是在精灵图像中心 交叉坐标坐标的位置 它可以自己设置自己 我不知道你在说什么 但我不知道你在说什么 但我不知道你在说什么
提示:self.rect 中有一个属性:self.rect.right,实际上就是精灵图像右边界的坐标;代码中 elif self.rect.right > SCREEN_RECT.width: 就是判断图像的右边界是否越界。同理,还有 self.rect.left 左边界属性…
在Air_prites.py 文件中,新代码 - 英雄类, 制造火力()从英雄飞机上射击的方法 - 跳过通行证 :
在 office_main.py 中,在 _deate_prite 方法中添加英雄平面对象的定义和英雄平面精灵组的定义:
对于 py 文件, 请在平面_ main. Call 中使用更新 () 和绘图 () 方法 :
为了在Pygame中捕捉键盘,请使用以下代码:
Key.get_pressed () 返回所有按键的组, 然后使用键盘常数 - 见下面 - 确定是否按下一组中的键 - 如果按下, 相应的值为 1 或 0 。
键盘常数是一个内部的平局指定常数,是一个整数:
| pygame 键盘常数 | 含义 |
|---|---|
| K_RIGHT | 键盘的 → 按键 |
| K_LEFT | 键盘的←按键 |
| K_UP | 键盘的 ↑ 按键 |
| K_DOWN | 键盘的 ↓ 按键 |
| K_a | 键盘的 a 按键 |
| … | … |
由于键盘常数被指定为游戏中的整数常数,它们可以直接用于发现密钥集中的匹配密钥,当密钥对应于集中的 1 值时,它表示它已被推动 。
按键 [pygame.K_LEFT] 和按键 [pygame.K_Right] 是键盘上访问部件、按钮和按钮的按键状态。
使用密钥数组中的 0 或 1 值来识别密钥的状态; 记住当 K_ Right 和 K_ LEFT 不按键时, 需要以下设置 : self. I'm sorry, house_ plane. speed = 0, 以防止英雄平面因精灵的调用而移动 。
这也解释了为什么英雄飞机精灵被指定为示例属性, 因为它是关于 PlaneGame_deate_prites的外部通道。 抱歉, 英雄机。 跳出以提及英雄飞机的速度属性 。
要在窃听技术中添加键盘按钮, 请在 py 文件的 plane_ main._ event_ handler () 中使用以下代码 :

发射子弹:每5秒钟,英雄飞机就发射1发子弹,一次3发子弹。,由其特性可知,可以使用定时器来实现这个功能
固定计时器是用安全套吗?
提供一个定时器常数 - 事件
要设置定时器事件,请在启动功能中调用设置_计时器。
在游戏主环中,我正在听一个定时器活动。
在 plane_prites. py 中,以下是 py 文件的最高定义 :
HERO- Fire- 17 和 Pygame. USEP +1 事件
PlaneGame 皮文件类中,在 plane_main._init_ () 中加入下列由英雄飞机发射子弹的时间和时间设置:
正在收听事件 - 在 plane_main._ event_ handler () 函数中执行 py 文件的 fire () 射击 方法 :
- 设计弹头分类:
子弹飞得更高,所以.. 我不确定你在说什么,直肠。 我本该变小些: 自我.y=速度, 结合背景精灵的移动, 以更快的相对移动速度
要执行此函数, 每0. 5 秒的火力, 一次三发子弹。 此配置与敌人的超时设计相当相似, 并导致子弹超时 。
敌军阶级的设计符合以下操作:
在 plite_prites. py 中, 新代码 - 子弹类 :
在 Python 文件 _init_( self) 的英雄类中构建子弹精灵组 :
为何在英雄类中而不是在_Create_spreites(自己)中制造弹精灵群? 既然英雄飞机必须用火来射击,那么HERO_FIRE_view事件就被称为在游戏中射击的火,因此产生弹射的行动应该采用火法,而发射子弹是为了制造子弹精灵并加入精灵群,所以精灵应该由英雄组中产生。重要)
在 plane_main.py 文件中, 更新_ prites () 方法中的代码如下:
Bhun_group elf 群落是用英雄机内火力()制成的,必须通过英雄机进入。
Fire () 用于平面上的皮文件。
抱歉 黑奴集团 Add (..) 加入精灵团 但我们需要在这里做个精灵子弹精灵 然后通过它
i=0、1和2,相当于在不同高度生产子弹精灵。
对不起,子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹、子弹。
我稍后再详细解释,我不确定你在说什么,直肠。标题2的目标是增加宽子弹之间的间距,改善分辨率。
为了得到66的后台 我们需要完整的源代码
相关新闻
- 2022-01-28 S32DS——PE调试器使用
- 2022-01-28 华硕M2N-MX SE主板如何进入bios设置
- 2022-01-28 华硕B85-A主板如何是通过bios设置u盘
- 2022-01-27 ltraISO 生成u盘启动盘后处理事项
- 2022-01-27 华硕P5QL-CM主板如何通过bios设置u盘
- 2022-01-27 微pe怎么安装原版win11 微pe安装原版
- 2022-01-26 win10 esd系统怎么用pe安装
- 2022-01-26 电脑系统装机教程图解(电脑装机
- 2022-01-25 非mbr怎么激活
- 2022-01-25 eprime安装教程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
