当前课程知识点:Python 交互式程序设计导论 > 第6周 > A 课程视频(类) > 华容道中的类
返回《Python 交互式程序设计导论》慕课在线视频课程列表
欢迎来到python交互式程序设计导论mooc课堂
这一讲呢,我们给大家讲解华容道的类
好,可能前面的视频同学们,大家已经看过
其他老师对python当中类这个概念已经做过介绍
我们再来回顾一下
首先,python是一种面向对象的编程语言
这个大家应该清楚
Python的类,它的英文名叫class
是用来创建对象的代码模板,这一点一定要清楚
Python由于是继承其他类,并对其进行扩展来创建新的类
类的属性是用来干啥的呢
它是用来记录由这个类创建的每个对象的各种状态的
所以在类的定义当中应当提供初始化的一个对象所有状态
也叫属性的一种机制,通常呢,是有一个初始化的函数
类的方法是用来干嘛的呢
它是用来表示,尤其创建的每个对象所具备的行为功能
因此在类的定义的当中应该实现每一个方法
就是要把每一个方法的代码我们把它编写出来
并且这些方法它的功能是满足你的要求
好了,当一个对象通过某个特定的类的构造器被创建以后
我们称这个对象呢,是这个类的一个实例
好,我们可以通过点运算符
就是对象名后面紧跟着点,这个运算符来访问对象的属性和方法
好,这些概念大家熟悉了以后,其实对类呢就可以灵活的来应用
好,下面看一下我们在华容道这个游戏当中有一个类,叫figure
实际上我们华容道游戏当中大家如果有些同学玩过这个游戏
应该知道,总共有10个棋子
这10个棋子包括五虎上将
就是关羽、张飞、马超、黄忠和赵云
还有曹操,就是6个了,还有4个士兵
其中五虎上将和士兵把曹操围在正,棋盘的正中央的上方
我们要通过移动棋子,让曹操从棋盘的正中央的下方逃出去
显然我们有10个棋子
我们怎么来描述这10个棋子呢,怎么来控制这10个棋子呢
我们可以定义一个棋子的类
然后通过这个类,创建10个棋子
之所以这样做,是因为这10个棋子它有很多共同的特点
比如说它都有一个名称
这个名称就是这个棋子具体的名字
比如说曹操、张飞、关羽等等,士兵1,士兵2,士兵3,士兵4
它也有一幅图片,对应的一幅图片对象,来把这个棋子绘制出来
当然,这每一幅图片都有它自己图片本身的中心点
以及图片,它的原始图片的大小
同样,每一个棋子我们要在画板,就是说游戏面板
把它画在什么位置,这个位置是我们的目标图片的中心点
同样我们要把这个图片画多大呢,在画板上
也有一个目标的大小,这些呢,每一个棋子都有这样的属性
另外我们还有一个属性,就是这个棋子它朝哪个方向移动
实际上在华容道游戏里头,棋子只能朝四个方向移动
要么向上移,要么向下移,要么向左移,要么向右移
它是不能斜着移动的
因此,这个属性就是move_direction
这个属性呢,可以取left表示向左,取right表示向右
取up表示向上,取down表示向下
如果这个棋子是静止的,不动的时候呢,这个移动方向move_direction它的值是none
好了,这些属性用来描述每个棋子的状态
好的,作为华容道游戏当中的棋子这个类,它应该有哪些功能
有哪些方法呢,这里重点介绍4个
一个是set_move_direction,一个是collide
一个是update,最后一个是draw
其中,第一个set_move_direction用来指定这个棋子朝哪个方向移动
好,我们鼠标拖动这个棋子的时候就会设置
通过这个函数来设置move_direction属性
一旦这个属性被设置以后
另外一个方法,就是update
就会根据现在它允许移动的方向,或者鼠标指挥它移动的方向
来用固定的速度更新这个棋子的中心点的位置
就是在画布上中心点的位置,从而实现棋子的移动
当然我们还得有一个检测碰撞的方法
就是棋子的移动是有条件的
比如说,我这个棋子向左移动
如果左边已经有别的棋子
或者左边已经到了边界了,这是不能移动的
因此,我们用这个方法来检测是不是发生了碰撞
如果发生了碰撞,会自动把move_direction设成none
这样呢,更新函数就不会再让这个棋子移动
最后呢,根据这个棋子类的src_center、src_size、des_center、des_size
这4个参数把棋子画在这个画布上
好,有了这个类的定义之后
我们就可以用这个类创建10个棋子
左边这幅图就是我们游戏画面看到的情况
有马超在最左上角,紧接着右边是曹操
再右边是张飞,马超的下边是赵云
赵云的右边有关羽,关羽的右边是黄忠
然后,关羽的下边有两个士兵
赵云的下边还有个士兵,黄忠的下边有一个士兵
好,这个布局是怎么来决定的
就是我们用figure这个类,在创建对象的时候
就是棋子对象的时候,指定的参数来决定的
尤其是这个参数,就是倒数第二个参数
倒数第二个参数是指定了这幅图片在画板上它的中心点位置
在哪个点上开始画这个图像
因此大家可以观察一下,这些第三个参数是不一样的
当然,我们鼠标拖动其中的一个棋子
也会调用set_move_direction来改变它的运动方向
然后,它的方法当中的update就会更新第三个参数
就是棋子在画布中的显示的位置,中心点这个位置
从而实现了棋子的移动
好的,华容道中的类figure,我们就给大家介绍到这里
欢迎大家收看,我们下次再见!
-课程简介
--课程简介
-A 课程视频(算数操作符及表达式)
--绪论
-B 课程视频(变量及赋值)
--变量
--项目提交
-C 辅助视频(计算机结构、Python开发环境安装)
-D 辅助视频(如何提交项目)
--项目提交
-第0周--小测验
-本周项目:"我喜欢Python"
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
--项目提交
-A 课程视频(函数)
--函数
--其它操作符
--随机函数
-B 课程视频(逻辑及表达式)
--逻辑值和比较
--条件
--编程技巧
-第1周--小测验
-本周项目:“老虎杠子鸡虫”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(Python交互式应用)
--事件驱动编程
--按钮
-B 课程视频(输入框、全局变量)
--输入框
--编程技巧
-第2周--小测验A
-第2周--小测验B
-本周项目:猫咪藏在哪个房间
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(画布绘图)
--画布和图形绘制
--字符串处理
--图片和音效
-B 课程视频(计时器)
--计时器
--交互式绘图
--“神奇时钟”游戏
--编程技巧
-第3周--小测验A
-第3周--小测验B
-本周项目:“神奇时钟”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(列表)
--列表
--键盘输入
--碰撞和反射
-B 课程视频(键盘控制)
--速度控制
--运动
--编程技巧
--“桌上冰球”游戏
-第4周--小测验A
-第4周--小测验B
-本周项目:“桌上冰球”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(鼠标输入、列表进阶)
--鼠标输入
--Video
--Video
--Video
-B 课程视频(字典和图片)
--Video
--Video
--Video
--Video
-第5周--小测验A
-第5周--小测验B
-本周项目:“世界杯八强连连看”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类)
--华容道中的类
-B 课程视频(平铺图片)
--平铺图片
--理解对象
--编程技巧
--“华容道”游戏
-第6周--小测验A
-第6周--小测验B
-本周项目:“华容道”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类进阶及文件操作)
--集合
--文件操作
--文字块类
--处理停止的文字块
-B 课程视频(游戏状态控制)
--游戏记分规则
--编程技巧
-第7周--小测验A
-第7周--小测验B
-本周项目:决战三字经
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板
-A、课程视屏(精灵集合)
--Video
--精灵类
--战士类
--编程技巧
-B、课程视屏(动画)
--精灵碰撞
--精灵动画
--编程技巧
--保卫家园游戏
-第8周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板