您的当前位置:首页正文

开发弹球游戏

2020-09-11 来源:步旅网


项目名称 项目2-3 开发弹球游戏(4学时) 1. 根据弹球游戏的需求,探讨归纳需要解决的问题,了解面向对象程序开发的基本理念。 教学目标 2. 学会创建类和对象。 3. 初步掌握面向对象程序设计的基本方法,学会通过编程实现游戏功能。 学生准备:搜索下载小球弹跳之类的小游戏并体验,思考开发小游戏的资源准备 思路。 教师准备:弹球游戏程序。 教学重点 了解面向对象程序开发的基本理念 教学难点

初步掌握面向对象程序设计的基本方法,学会通过编程实现游戏功能。 教学过程

教学环节 教学活动及步骤 一、教师引导学生阅读案例导入情境,提出本项目的驱动性问题 我们玩过小球弹跳之类的小游戏,小球在屏幕上移动弹跳。你知道如何使用Python 面向对象程序设计来开发小游戏吗?让我们一起尝试创建弹球游戏吧。 游戏规则:弹球游戏让小球在屏幕上移动,碰到上下左右边界则弹跳。 一、教师引导学生阅读教材上的任务描述 创建一个类名为 Ball 的类,为其赋予属性和方法,创建一个名为 Ball 的对象,调用类的属性和方法,使一个蓝色的小球显示在画布中间。 二、小组针对以下问题进行探究及讨论 情境导入 任务实施一 创建小球类和对象 1. 试玩弹球游戏,说出该游戏的规则并交流游戏体验。 2. 弹球游戏中涉及的实体是什么?该实体具备哪些属性和方法? 3. 如何创建类和对象?你能说一说类和对象的关系吗? 尝试定义名为 Ball 的类,创建名为 Ball 的对象,使蓝色小球显示在画布上。 三、教师针对以上问题进行操作提示 1. 创建类和对象的格式。 (1)定义类的格式: class 类名:

1

教学环节 教学活动及步骤 属性列表 方法列表 (2)创建对象。创建对象和调用一个函数很相似,可以使用类名作为关键字去创建一个类的对象。 对象名 = 类名( ) 给对象添加属性的方法如下: 对象名.新的属性名 = 值 2. 创建 Ball 类和 Ball 对象。 (1)准备工作。 加载 Tkinter、Time 库,引入 Tkinter 模块的内容,创建弹球游戏窗口和画布。 (2)创建 Ball 类。 使用 class 语句创建 Ball 类,使用构造方法创建初始化函数,包括两个参数 huabu 和 color 属性(画布及小球颜色),为了移动小球,需要将所画小球的 ID 保存,通过初始化操作,使其绘制一个指定大小和颜色的小球并移至画布中间位置显示。定义 DRAW 函数,内容后续添加,以检测小球坐标并根据情况反弹。 (3)创建 ball 对象。 创建一个蓝色小球对象。 任务实施二 编写小球弹跳程序

一、教师提出本任务要求 分析本项目开发弹球游戏的算法和解决方案,并编写简单的小球弹跳程序,让小球在屏幕画布上左右移动,碰到画布左右边界则反弹。 2

教学环节 教学活动及步骤 二、问题探究 1. 分析开发弹球游戏的思路,说出需要解决的问题及算法策略。 2. 操作简单的小球弹跳游戏,想一想,预设小球移动方向和速度的算法是什么?检测到小球碰到画布边界时反弹的算法是什么?小球如何在画布上移动?小球的坐标位置是如何获取的?需要调用哪些 CANVAS 函数? 3.编写小球弹跳程序,让小球在画布上左右水平移动,当检测到小球碰到画布左右边界时反弹。 三、教师针对以上问题进行操作提示 从问题分析出发,画出流程图,讲解解决方案。 1. 画出本项目弹球游戏流程图。 2.小球弹跳程序的编写思路。 修改任务一ball.py程序,修改Ball类的初始化函数,设定 Ball 类运动的方向和偏移量;修改 DRAW 函数,调整小球的行为。在 DRAW 函数中检测坐标并根据坐标改变移动方向,实现反弹。

3

教学环节 教学活动及步骤 3. 编写程序,使小球左右水平移动,碰到画布左右边界时反弹。 (1)编写小球 Ball 类的初始化函数,使小球左右水平移动,并获取当前画布宽度存于对象变量中。 (2)编写 DRAW 函数,调用画布的 MOVE 函数和COORDS 函数,获取小球坐标,检测到小球碰到画布左右边界时反弹。 三、问题探究 1. 运行及调试程序。测试过程中遇到了哪些问题?你是如何处理的? 2. 思考如何让小球的移动速度快一些? 任务实施三 优化弹球游戏程序 一、教师提出本任务要求 优化弹球游戏程序,修改程序代码,让小球在屏幕画布上四处移动,碰到画布边界让它反弹。 二、问题探究 1. 修改程序代码,让小球在画布垂直方向上移动,当检测到小球碰到画布上下边界时反弹。 2. 修改程序,让小球随机移动,检测到小球碰到画布上下左右边界时反弹。 三、教师针对以上问题进行操作提示 1. 修改任务二程序代码,让小球在垂直方向上移动,检测到小球碰到画布上下边界时反弹。修改小球 Ball 类的初始化函数和 DRAW 函数。 2. 修改任务二程序代码,完善游戏功能,让小球随机移动,检测到小

4

教学环节 教学活动及步骤 球碰到画布上下左右边界时反弹。参考资源 2-3-1, 完善程序。 四、问题探究 试着编写程序代码并运行调试,参考资源 2-3-1,修改、运行及调试程序。 五、挑战进阶 在游戏中添加一个球拍,用户左右移动球拍接球以防止小球坠落。如何修改程序使小球碰到球拍时反弹?如果小球落到屏幕底部,则游戏结束。 评价反思 一、学习评价 教师引导学生依据学习评价表对本项目的学习情况进行自评或互评 二、学习反思 教师引导学生依据学习反思表对本项目的学习进行反思 5

教学环节 课后作业 教学活动及步骤 一、完成知识巩固题 1、选择题(单选或多选) (1)关于类和对象的关系,下列描述正确的是( )。 A. 类是面向对象的核心 B. 类是现实中事物的个体 C. 对象是根据类创建的,并且一个类只能对应一个对象 D. 对象描述的是现实的个体,它是类的实例 (2)以下关于 self 的说法不正确的是( )。 A. self 可有可无,它的参数位置也不确定 B. self 是可以修改的 C. self 代表当前对象的地址 D. self 不是关键词,也不用赋值 2. 填空题 (1)在 Python 中,可以使用( )关键字来声明一个类。 (2)Python 提供名称为( )的构造方法,实现让类的对象完成初始化。 3. 判断题(在括号内打“√”或“×”) (1)面向对象是基于面向过程的。( ) (2)通过类可以创建对象,有且只有一个对象实例。 ( ) 二、完成实践拓展题 设计一个表示学生的类:student。该类的属性包括name(姓名)、age(年龄)、scores (成绩),其中成绩包含语文、数学和英语 3 科成绩,每科成绩的类型为整数。此外该类还包含 3 个方法。 (1)获取学生姓名的方法:get_name( ) ,返回 str 类型。 (2)获取学生年龄的方法:get_age( ) ,返回 int 类型。 (3)返回 3 门科目中最高分数的方法:get_course( ),返回 int 类型。 写好类以后,用 zy=Student('zhaoyuan',19,[85,80,96]) 测试,并输出结果。

6

因篇幅问题不能全部显示,请点此查看更多更全内容