- 博客(29)
- 收藏
- 关注
原创 飞机大战 之 碰撞检测
01_了解碰撞检测方法pygame.sprite.groupcollide()两个精灵组 中 所有的精灵 的碰撞检测groupcollide(group1, group2, dokill1, dokill2, collided = None) -> Sprite_dict如果将 dokill 设置为 True,则 发生碰撞的精灵将被自动移除collided 参数是用于 计算碰撞的回调函数,如果没有指定,则每个精灵必须有一个 rect 属性pygame.sprite.spritec
2020-08-30 09:08:58
1136
原创 飞机大战 之 英雄登场
01_ 设计 英雄 和 子弹 类英雄需求游戏启动后,英雄 出现在屏幕的 水平中间 位置,距离 屏幕底部 120 像素英雄 每隔 0.5 秒发射一次子弹,每次 连发三枚子弹英雄 默认不会移动,需要通过 左/右 方向键,控制 英雄 在水平方向移动子弹需求子弹 从 英雄 的正上方发射 沿直线 向 上方 飞行飞出屏幕后,需要从 精灵组 中删除Hero —— 英雄初始化方法:指定 英雄图片,初始速度 = 0 —— 英雄默认静止不动,定义 bullets子弹精灵组 保存子弹精灵重写 u
2020-08-30 09:04:35
192
原创 飞机大战 之 敌机出场
01_使用定时器添加敌机敌机出场规律游戏启动后,每隔 1 秒 会 出现一架敌机每架敌机 向屏幕下方飞行,飞行 速度各不相同每架敌机出现的 水平位置 也不尽相同当敌机 从屏幕下方飞出,不会再飞回到屏幕中定时器在 pygame 中可以使用 ·pygame.time.set_timer() `来添加 定时器所谓 定时器,就是 每隔一段时间,去 执行一些动作set_timer(eventid, milliseconds) -> Noneset_timer 可以创建一个 事件可
2020-08-29 10:17:00
358
原创 飞机大战 之 游戏背景
01_ 背景交替滚动的思路确定游戏启动后,背景图像 会 连续不断地 向下方 移动在 视觉上 产生英雄的飞机不断向上方飞行的 错觉 —— 在很多跑酷类游戏中常用的套路游戏的背景 不断变化游戏的主角 位置保持不变实现思路解决办法创建两张背景图像精灵:第 1 张 完全和屏幕重合,第 2 张在 屏幕的正上方两张图像 一起向下方运动,self.rect.y += self.speed当 任意背景精灵 的 rect.y >= 屏幕的高度 说明已经 移动到屏幕下方将 移动到屏幕下方的这张
2020-08-29 08:58:52
1156
原创 飞机大战 之 游戏框架的搭建
明确主程序职责回顾 快速入门案例,一个游戏主程序的 职责 可以分为两个部分: i. 游戏初始化 ii. 游戏循环根据明确的职责,设计 PlaneGame 类如下:提示: 根据 职责 封装私有方法,可以避免某一个方法的代码写得太过冗长游戏初始化 —— init() 会调用以下方法:方法职责__create_sprites(self)创建所有精灵和精灵组游戏循环 —— start_game() 会调用以下方法:方法职责__event_h
2020-08-28 09:05:13
373
原创 飞机大战 之 Pygame快速入门
01_游戏的第一印象把一些 静止的图像 绘制到 游戏窗口 中根据 用户的交互 或其他情况,移动 这些图像,产生动画效果根据 图像之间 是否发生重叠,判断 敌机是否被摧毁 等其他情况02_使用 pygame 创建图形窗口游戏的初始化和退出要使用 pygame 提供的所有功能之前,需要调用 init 方法在游戏结束前需要调用一下 quit 方法方法说明pygame.init()导入并初始化所有 pygame 模块,使用其他模块之前,必须先调用 init 方法p
2020-08-26 10:49:02
289
原创 学习笔记23_Python 文件
01_文件的概念文件的概念和作用计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据长期存储设备包括:硬盘、U 盘、移动硬盘、光盘…文件的作用:将数据长期保存下来,在需要的时候使用文件的存储方式在计算机中,文件是以 二进制 的方式保存在磁盘上的文本文件和二进制文件文本文件 i. 可以使用 文本编辑软件 查看 ii. 本质上还是二进制文件 iii. 例如:python 的源程序二进制文件 i. 保存的内容 不是给人直接阅读的,而是 提供给其他软件使用的
2020-08-22 16:24:54
146
原创 学习笔记22_Python 模块和包
01_模块模块的概念每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块模块名 同样也是一个 标识符,需要符合标识符的命名规则在模块中定义的 全局变量 、函数、类 都是提供给外界直接使用的 工具模块 就好比是 工具包,要想使用这个工具包中的工具,就需要先 导入 这个模块模块的两种导入方式1)import导入提示:在导入模块时,每个导入应该独占一行import 模块名1import 模块名2 导入之后:通过 模块名. 使用 模块提供的工具 —— 全局变量、函数
2020-08-20 15:39:46
173
原创 学习笔记21_Python 异常
01_异常的概念程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常程序停止执行并且提示错误信息 这个动作,我们通常称之为:抛出(raise)异常程序开发时,很难将 所有的特殊情况 都处理的面面俱到,通过 异常捕获 可以针对突发事件做集中的处理,从而保证程序的 稳定性和健壮性02_捕获异常简单的捕获异常语法在程序开发中,如果 对某些代码的执行不能确定是否正确,可以增加 try(尝试) 来 捕获异常捕获异常最简单的语法格式:t
2020-08-19 21:49:01
361
原创 学习笔记20_Python 单例
01_单例设计模式设计模式 i. 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 ii. 设计模式 使用 设计模式 是为了可重用代码、让代码更容易被他人理解、保证代码可靠性单例设计模式 i. 目的 —— 让 类 创建的对象,在系统中 只有 唯一的一个实例 ii. 每一次执行 类名() 返回的对象,内存地址是相同的02___new__方法使用 类名() 创建对象时,Python 的解释器 首先 会 调用 __new__
2020-08-19 09:28:09
122
原创 学习笔记19_Python 类属性和类方法
01_类的结构术语 —— 实例使用面相对象开发,第 1 步 是设计 类使用 类名() 创建对象,创建对象 的动作有两步: i. 在内存中为对象 分配空间 ii. 调用初始化方法__init__ 为 对象初始化对象创建后,内存 中就有了一个对象的 实实在在 的存在 —— 实例 因此,通常也会把:创建出来的 对象 叫做 类 的 实例创建对象的 动作 叫做 实例化对象的属性 叫做 实例属性对象调用的方法 叫做 实例方法 在程序执行时:对象各自拥有自己的 实例属性调用对象方
2020-08-18 15:54:01
196
原创 学习笔记18_Python 多态
案例演练需求在 Dog 类中封装方法 game i. 普通狗只是简单的玩耍定义 XiaoTianDog 继承自 Dog,并且重写 game 方法 i. 哮天犬需要在天上玩耍定义 Person 类,并且封装一个 和狗玩 的方法 i. 在方法内部,直接让 狗对象 调用 game 方法代码演示class Dog: def __init__(self, name): self.name = name def play(self): print(
2020-08-18 09:30:26
268
原创 学习笔记17_Python 继承
面向对象三大特性封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中继承 实现代码的重用,相同的代码不需要重复的编写多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度单继承继承的概念、语法和特点继承的概念:子类 拥有 父类 的所有 方法 和 属性1) 继承的语法class 类名(父类名):子类 继承自 父类,可以直接 享受 父类中已经封装好的方法,不需要再次开发子类 中应该根据 职责,封装 子类特有的 属性和方法2) 专业术语Dog类是
2020-08-14 19:35:41
144
原创 学习笔记16_Python 私有属性和私有方法
应用场景及定义方式应用场景在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到私有属性 就是 对象 不希望公开的 属性私有方法 就是 对象 不希望公开的 方法定义方式在 定义属性或方法时,在 属性名或者方法名前 增加 两个下划线,定义的就是 私有 属性或方法class Woman: def __init__(self, name): self.name = name self.__age = 18
2020-08-14 09:10:12
128
原创 学习笔记15_Python 封装案例
01_封装封装 是面向对象编程的一大特点面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中外界 使用 类 创建 对象,然后 让对象调用方法对象方法的细节 都被 封装 在 类的内部02_小明爱跑步需求小明 和 小美 都爱跑步小明 体重 100.0 公斤小美 体重 120.0 公斤每次 跑步 都会减少 0.5 公斤每次 吃东西 都会增加 1 公斤代码实现class Person: def __init__(self, name, weight,
2020-08-13 12:01:13
304
原创 学习笔记14_Python 面向对象
面相过程 和 面相对象,是两种不同的 编程方式过程和函数过程 是早期的一个编程概念,过程 类似于函数,只能执行,但是没有返回值函数 不仅能执行,还可以返回结果面相过程 和 面相对象 基本概念1)面相过程 —— 怎么做?把完成某一个需求的 所有步骤 从头到尾 逐步实现根据开发需求,将某些 功能独立 的代码 封装 成一个又一个 函数最后完成的代码,就是顺序地调用 不同的函数特点注重 步骤与过程,不注重职责分工如果需求复杂,代码会变得很复杂开发复杂项目,没有固定的套路,开发难.
2020-08-07 11:05:33
153
原创 学习笔记13_Python 函数进阶
01_函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式无参数,无返回值无参数,有返回值有参数,无返回值有参数,有返回值 如果函数 内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部 如果希望一个函数 执行完成后,向外界汇报执行结果,就可以增加函数的返回值1)无参数,无返回值只是单纯地做一件事情,例如 显示菜单在函数内部 针对全局变量进行操作,例如:新建名片,最终结果 记录在全局变量 中2)无参数,有返回值
2020-08-07 09:47:01
157
原创 学习笔记12_Python 变量进阶
01_变量的引用变量 和 数据 都是保存在 内存 中的在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的引用的概念变量 和 数据 是分开存储的数据 保存在内存中的一个位置变量 中保存着数据在内存中的地址变量 中 记录数据的地址,就叫做 引用在 Python 中,变量的名字类似于 便签纸 贴在 数据 上使用 id() 函数可以查看变量中保存数据所在的 内存地址注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用 i.变量 不再 对
2020-08-05 22:06:12
136
原创 学习笔记11_Python综合运用:名片管理系统 (附完整代码)
01_程序要求程序启动,显示名片管理系统欢迎界面,并显示功能菜单用户用数字选择不同的功能根据功能选择,执行不同的功能用户名片需要记录用户的 姓名、性别、年龄如果查询到指定的名片,用户可以选择 修改 或者 删除 名片02_步骤框架搭建准备文件,确定文件名,保证能够 在需要的位置 编写代码编写 主运行循环,实现基本的 用户输入和判断文件准备新建 cards_main.py 保存 主程序功能代码 i.程序的入口 ii.每一次启动名片管理系统都通过 main 这个文件启动
2020-08-03 11:18:30
649
1
原创 学习笔记10_Python 非数字型变量的公共方法
01_Python中的内置函数函数描述备注len(item)计算容器中元素个数del(item)删除变量del 有两种方式max(item))返回容器中元素最大值如果是字典,只针对 key 比较min(item)返回容器中元素最小值如果是字典,只针对 key 比较字符串的比较符合以下规则: "0" < "A" < "a"02_切片切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串列表 和 元组 都
2020-08-01 10:08:08
150
原创 学习笔记9_Python 非数字型变量 之 字符串
字符串字符串的定义字符串 就是 一串字符,是编程语言中表示文本的数据类型在 Python 中可以使用 一对双引号 " 或者 一对单引号' 定义一个字符串 i.如果字符串内部需要使用",可以使用 ' 定义字符串 ii.如果字符串内部需要使用 ',可以使用 " 定义字符串可以使用 索引 获取一个字符串中 指定位置的字符,索引计数从 0 开始也可以使用 for 循环遍历 字符串中每一个字符str1 = "Hello Python"str2 = '她的外号叫"小机灵鬼"'# 索引p
2020-07-31 22:02:06
805
1
原创 学习笔记8_Python 非数字型变量 之 元组 字典
元组元组的定义Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改 i.元组 表示多个元素组成的序列 ii.元组 在 Python 开发中,有特定的应用场场合用于存储 一串 信息,数据 之间使用 , 分隔元组用 () 定义元组的 索引 从 0 开始emm_tuple = ('xiaoming', 18, 175)创建空元组emm_tuple2 = ()创建单个元素的元组emm_tuple3 = ('xiaoming',) 注意:元组中 只包含一个元素 时,
2020-07-30 20:35:54
180
1
原创 学习笔记7_Python 非数字型变量 之 列表
非数字型变量列表元组字典字符串列表列表的定义List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组专门用于存储 一串 信息列表用 [] 定义,数据 之间使用 , 分隔列表的 索引 从 0 开始索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标列表的常用操作在 python3 中定义一个 列表,例如:week_list = []输入 week_list. 按下 Tab 键,python 会提示 列表 能够使用的 方法 如下:
2020-07-29 16:22:19
335
1
原创 学习笔记6_Python 函数
函数所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用函数的使用包含两个步骤: i. 定义函数 —— 封装 独立的功能 ii. 调用函数 —— 享受 封装 的成果函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的 重用函数的基本操作函数的定义 定义函数的格式如下:def 函数名(): 函数封装的代码 …… def 是英文 define 的缩写函数名称 应该能够表达 函数封装代码 的功能,方便后续的调用
2020-07-28 21:28:30
295
1
原创 学习笔记5_Python 循环语句
while 循环循环的作用就是让 指定的代码 重复的执行while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行 while 语句基本语法格式如下:while 判断条件: 执行语句 1 执行语句 2 ...(省略)... while 语句以及缩进部分是一个 完整的代码块无限循环:由于程序员的原因,忘记 在循环内部 修改循环的判断条件,导致循环持续执行,程序无法终止!...
2020-07-28 10:41:38
229
1
原创 学习笔记4_Python 条件判断语句
01_if-else语句 常用格式如下:if 要判断的条件: 条件成立时,要做的事情 ……else: 条件不成立时,要做的事情 …… 代码的缩进为一个 tab 键,或者 4 个空格if 和 else 语句以及各自的缩进部分共同是一个 完整的代码块在Python中没有switch–case语句。 例子如下:age = int(input('请输入年龄:')) # 1. 输入用户年龄# if 语句以及缩进部分的代码是一个完整的语法块if a
2020-07-20 17:12:55
223
1
原创 学习笔记2_Python 算术运算符
01_运算符的定义 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+6,其操作数是2和6,而运算符则是"+"。02_算术运算符
2020-07-19 22:58:38
138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人