关注
28
粉丝
27
帖子
大于
04月27日

【教学设计】我爱游戏_掌控板14_打砖块

我爱游戏_掌控板_打砖块

一、基本信息

作品名称 我爱游戏_掌控板_打砖块

作者姓名 于飞

作者单位 嘉善信息技术工程学校

教材名称 《慧编程》

教材类型 自编教材

教材简介 自编校本教材,作为学生自由选修课使用,丰富学生课程生活,打造“四力融合,课程改革”,符合其中创造力的学习。

执教年级 职业高中

课时长度 2课时

涉及器材 掌控板

涉及软件 mPython

文件清单 教学设计、配套视频、配套代码

二、作品内容

【硬件搭建】所需材料掌控板和数据线,用数据线将掌控板和电脑连接,选择已经连接COM接口,点击连接成功。


【作品功能】点击“运行”将程序上传到掌控版。

打砖块这个经典小游戏大家都玩过,使用重复语句“造出”一面16*3的砖墙(即,每行16块,3行),位于屏幕上边缘,每块“砖块”由边长8*8的空心矩形绘制,如果被小球角色碰到,砖块会消失。

球拍角色为实心矩形,位于屏幕下边缘。使用功能A/B按键控制左右移动,尽量接住小球使其反弹,如果没有接住小球,接触到下边缘,游戏结束,显示得分。

小球角色为半径为3的空心圆,碰到砖头、球拍、上边缘、左右边缘都会反弹,如果碰到下边缘,游戏结束,显示得分。


【教材与学情分析】:本课是《慧编程》的第十四节课,这些学生在上一学期已经完成了scratch的基础学习,对于逻辑语句的使用已经没有障碍,但是没有接触过市场上的编程外设,这次课之前学生们已经学习过13次关于掌控板的课程,对于图形绘制、坐标系、基础数列和逻辑语句(包括嵌套语句)已经有了一些了解。这次的课主要学习的是列表的使用,添加“体感控制,增强互动性。

本课授课对象是中职一年级编程兴趣班学生,学生人数40人以上。中职类学生相对普高来说数学和英语的基础素质较差,所以选用这样一款图形化编程软件,上学期有过scratch的基础,搭配掌控板可以实体操作,相信这些学生可以通过自己的操作,真正的做出一款小游戏,重拾自信。

【学习目标】:1.熟练掌握mPython和掌控板的使用。

2.精通掌控板的坐标系。

3.熟练掌握列表功能的使用。

【学习重难点】

重点:1.掌握列表元素的遍历。

2.熟练掌握变量和坐标的使用。

难点:读取列表中元素,使用遍历方法判断元素是否发生“碰撞”。

【教学资源】:学生机房、电脑一人一机、掌控板六人一块、 学生机与教师机局域互联并安装mPython软件;成品体验。

【联系实际】

经典游戏“打砖块”,从我会玩游戏开始就知道这“打砖块”的存在。开具发射小球向上运动,小球如果碰到“砖块”,砖块角色消失,小球角色反弹。玩家需要控制屏幕下边缘的“球拍”角色左右移动,接住小球使其继续反弹,如果没有接到小球,使其接触到界面的下边缘,那么游戏结束,显示得分。


【预设流程】

环节一、制作砖块

教师活动:

将提前烧录好程序的掌控板发给每个组,让大家先回顾一下上次课的“反弹球”项目,再体验一下这节课的“打砖块”项目。

这次我们制作的“打砖块”项目,基础操作类似于我们上次课制作的“反弹球”,区别在与“砖块”角色的增加,这次课我们将着重讲解:砖块的制作、砖块的碰撞、砖块的消失。

新建“砖块”阵列,砖块的大小为8*8,因为x轴为0~127,

我制作了3层砖块墙,16*3,共计48个砖块。

实现16*3的砖墙,这个砖墙使用空心矩形8*8的边长,如果是实心的,就是混在一起的效果,所以使用空心的,便于观察和验证,体验更佳。


实现了16*3的砖墙,砖墙使用空心矩形8*8的边长空心矩形。


学生活动:观看教师对比演示,回顾“反弹球”,体验“掌控板-打砖块”小游戏,制作砖墙角色。

环节二、绘制“球”角色,新建变量

教师活动:播放demo视频,绘制主角球。这里没有做分数的显示,因为分数会影响显示,我们只在结束时显示一下分数好了。

绘制接球的球拍在屏幕底部,宽度为30,使用A/B按键控制其左右移动;

绘制半径为2的小球,实时改变其坐标(x,y),碰到上左右边缘都会向方向运动,这个只需改变cx和cy的值即可。

当小球y小于2时(即到了上边缘,我们要把小球的半径考虑进去),增量cy设为1(向下运动);

当小球y大于59且x在Lx-2~Lx+32之间时(即碰到了球拍),增量cy设为-1(向上运动);

当小球x小于2时(即到了左边缘),增量cx设为1(向右运动);

当小球x大于125时(即到了右边缘),增量cx设为-1(向左运动)

变量x,主角空心圆的x坐标;

变量y,主角空心圆的y坐标;

变量cx,主角空心圆的x坐标增量;

变量cy,主角空心圆的y坐标增量;

变量Lx,球拍矩形的x坐标;

列表my_listx,砖块的x坐标列表;

列表my_listy,砖块的y坐标列表;

变量m,初始用于砖块坐标写入列表my_listx(每个砖头的x坐标值),运行后用于遍历列表my_listx元素。

变量n,初始用于砖块坐标写入列表my_listy(每个砖头的y坐标值),运行后用于遍历列表my_listy元素。

变量socre,分数统计。

函数my_func,用于控制主角空心圆形的运动和球拍的控制(这个函数主要用于减少脚本长度,为了让血神够可以在一个页面看全脚本)。


当前运行效果:

将球拍和小球元素加入到其中(也就是之前做的“接小球”项目),这样就有了互动功能,A/B控制球拍左右移动。小球碰到球拍就反弹,碰到下边缘就游戏结束。


学生活动:观看教师演示,教师演示结束后编辑脚本,并思考“如何判断球和球拍、上下左右边缘、砖块发生碰撞”。

环节三、碰撞判断(小球与球拍、边缘、砖块)

教师活动:教师先给大家再次演示项目,并交给学生体验,解释说明矩形和圆形图形特性(坐标点为矩形左上角,长宽分别向下和右延伸;圆形的坐标点为图形圆心,圆心到边的距离就是半径长度)。广播屏幕编辑脚本。

小球与球拍:

当小球y大于60时(即碰到了下边缘),如果没有被球拍接到,游戏停止,显示得分。

小球与边缘:

到达最上就向下运动;

到达最左就向右运动;

到达最右就想左运动;

小球与砖块:

前面我们制作好了两个完全独立的单元(砖头阵列,48个砖头和反弹的小球、接球的球拍),

打砖块的球拍、运动的小球和砖块我们都做好了,并做好了底边球拍和小球的互动逻辑,接下来我们制作小球和砖头的逻辑,即小球碰到砖头实现1加分;2反弹;3砖块消失。

小球与下边缘:

到达最下如果有球拍接着就向上运动,否则中断游戏,显示“游戏结束,得分为:***”。

没有制作分数的实时显示,原因有两个:1、显示分数会影响运行速度;2、显示分数会遮挡角色。


运行脚本效果:


学生活动:观看教师演示脚本编辑,待教师广播结束后,自行编辑,上传运行,主要测试各个边界和砖块的碰撞是否可以正常发生。

环节六、比较脚本

教师活动:将已经边界好的脚本截图发送给学生端。让学生们自行纠错,关于位置和得分的判断学生与教师不同的教师需要查看,如果有问题及时纠错指导。教师机房巡视,及时协助学生修改bug。


学生活动:上传修复好的脚本,如遇问题举手示意教师协助解决,待完成后,运行流畅的同学可以分享自己的作品。

【拓展探究】

教师活动:

1、整个过程就是在控制球拍左右移动接球打砖块,有点乏味,有什么办法改进一下,可以增加游戏的趣味性?

2、砖块全部消失后,没有后续操作。

解决方案:

1、主角小球的“出生地点”在一定范围内随机向上运行,增加随机性。

2、可以编辑“球拍长度与分数的负相关公式”,实现分数越高,球拍越短(但是要做好最小限制,保证游戏可以运行),或制作“球拍运动速度与分数的负相关公式”,实现分数越高,球拍运动速度越慢(要做好最小限制,保证游戏可以运行)。以上只是两个提议,还可以有更多想法。

3、添加“循环语句”,制作成无尽模式的“打砖块”。

【交流总结】

教师活动:请每一组出一个代表,展示并说明自己的作品。

学生活动:组代表进行展示,一边运行,一边解说游戏。说出跟人观点(哪些地方需要改进,通过学习,提出程序的具体改进方法)

设计意图:小组之间互相对比,各有不同,相互学习。通过每隔代表的介绍,可以判断学生的掌握情况,梳理了整节课的知识重点,改进方向的提出,放手让学生去做,增强互动性,让更多学生做出不一样的程序。

【教学反思】

不足:

小球运行过程单一,游戏过程比较平静,没有对“砖块消失”后的程序进行编辑,造成无终止的局面,算是一个重大bug。

优点:

自己制作的小程序可以脱离电脑独立运行;

实现了“反弹”效果;

给之前的“反弹球”项目添加了功能;

通过遍历列表的使用,让学生熟练掌握列表的使用。

附件:




1

点赞

171 次阅读1 人赞