我爱游戏_掌控板_打砖块
一、基本信息
作品名称 我爱游戏_掌控板_打砖块
作者姓名 于飞
作者单位 嘉善信息技术工程学校
教材名称 《慧编程》
教材类型 自编教材
教材简介 自编校本教材,作为学生自由选修课使用,丰富学生课程生活,打造“四力融合,课程改革”,符合其中创造力的学习。
执教年级 职业高中
课时长度 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。
优点:
自己制作的小程序可以脱离电脑独立运行;
实现了“反弹”效果;
给之前的“反弹球”项目添加了功能;
通过遍历列表的使用,让学生熟练掌握列表的使用。
附件:
点赞