资源简介 数字华容道项目第四讲: 位置移动一、 课程目标1、掌握克隆体的属性相关知识,掌握数学运算、逻辑运算的使用;2、学习使用自制积木定义函数;3、了解 3×3 方格中,计算行数和列数的方法。二、 课堂组织形式1、开放式问题讨论2、引导式思维发散3、问答式课堂互动4、针对问题探究实践5、学生动手制作项目6、课堂内容梳理巩固三、课堂准备编号 名称 内容 来源 备注【 1】 PPT 课件 课堂全流程演示文稿 火星科学盒官网【2】 课程资料 PPT 课件、讲义、视频 火星科学盒官网【 3】 教师参考程序 项目完整程序 网盘链接下载【4】 学生上课使用资料 笔记本电脑或者台式电脑 老师自备 电脑系统需求: win 10+,或 macOS 10.13+编程所需素材 网盘链接下载课堂报告 网盘链接下载【 5】 编程软件下载 scratch3.0 scratch 官网 课前下载安装四、主要脚本程序编号 详细内容 功能描述【 1】 “()除以()的余数” 计算两个数字相除得到的余数【2】 “() >()” 比较两个数据的大小, 当前面填入的内容大于 后面时,返回的值为“true”否则为 “false”【 3】 “() <()” 比较两个数据的大小, 当前面填入的内容小于 后面时,返回的值为“true”否则为 “false”【4】 “造型编号” 获取角色的造型编号属性,也可以获取单个克 隆体的造型编号五、上课流程本节课包括 5 步具体流程:(1)第 1 步为知识讲解。老师通过演示操作讲解有关于克隆体属性的知识,总结可以直接获取的克隆体的属性有什么 。时长控制 在 10 分钟内。(2)第 2~3 步为作品编程。首先分析判断两个克隆体是否相邻时需要满足的条件,然后讲解如何使用位置号计算行列数,完成计 算行数差和列数差的函数的自定义。 之后带领学生思考回顾如何实现数字块和空白块位置的交换,实现点击数字块后,移到相邻空白 块位置的功能。时长控制在 60 分钟内(3)第 4 步为拓展思考。 思考如何记录还原数字块顺序所需要的步数,并编写程序实现。时长控制在 10 分钟内。(4)第 5 步为课堂总结, 知识图谱的形式总结课程内容,巩固重点知识点 。时长控制在 5 分钟内。上课步骤 主要内容 备注【第 1 步】 知识讲解 【对应 PPT】“克隆体的 属性” 【时长】 10min 【引入】 在普通版的数字华容道游戏中, 是通过侦测数字块能否碰到空白块来侦测数字块和空 白块是否相邻的。但是在克隆版的游戏中, 每个克隆体没有单独的名字, 也没有办法直 接侦测克隆体之间是否互相碰到。和原角色相比, 克隆体的某些状态是无法直接侦测 的, 那么, 克隆体的其他属性比如坐标等等, 是否可以直接获得呢?我们一起来测试一 下吧。 【讲解】 1. 老师拼接脚本后,边演示边讲解,讲解克隆体可以直接获取坐标、方向等属性的知 识; 2. 通过演示讲解可以直接获取克隆体造型编号的知识; 3. 讲解克隆体可以侦测是否碰到其他角色,以及可以侦测是否碰到某种颜色的知识。【第 2 步】 相邻的条件 【对应 PPT】“相邻的条 【衔接】 上节课的作品中, 已经完成了游戏的初始化, 点击绿旗运行游戏之后, 数字块和空白块件” 【时长】 35min 就会乱序分布在棋盘上。接下来就需要点击数字块移动它的位置, 将数字进行排序了。 所以接下来需要完成点击数字块后,移动数字块位置的功能。 【讲解】 老师带领学生逐步分析如何判断数字块和空白块是否相邻: 1. 观察并分析数字块和空白块相邻时的特点: 位于同一行或同一列; 2. 分析得出数字块和空白块相邻的条件:行数差和列数差的和为 1; 3. 讲解如何计算行数和列数 【制作】 学生编写程序,新建自制积木,定义计算数字块(空白块)行数和列数的脚本。(程序 样例见“第六部分 - 程序 1-1”)、 【讲解】 1. 讲解克隆体的造型编号和位置号的项目编号之间的关系,分析得出可以使用造型编 号获取对应的位置号; 2. 讲解如何计算数字块和空白块的行数和列数 【制作】 学生编写计算数字块和空白块列数与行数的脚本(程序样例见“第六部分 - 程序 1- 2”)【讲解】 带领学生分析如何计算行数差和列数差 【制作】 1. 学生拼接脚本, 完成计算行数差和列数差的程序编写(程序样例见“第六部分 - 程 序 1-3”) 2. 新建自制积木,将计算行列差的脚本定义为一个函数, 方便程序的调用(程序样例 见“第六部分 - 程序 1-4”)【第 3 步】 数字块移动 【对应 PPT】“数字块移 动” 【时长】 25min 【讲解】 1. 使用流程图分析点击数字块后, 控制数字块移动程序的执行过程; 2. 分析列表“位置号”中应该交换的项目是什么; 【制作】 学生编写程序, 实现点击角色后, 如果数字块和空白块相邻, 就交换对应列表项的功能 (程序样例见“第六部分 - 程序 2-1”) 【讲解】 带领学生回顾移动数字块和空白块位置的实现方式, 【制作】 学生编写程序实现点击角色后,如果数字块和空白块相邻,就交换位置的效果。(程序样例见“第六部分 - 程序 2-2”) 【讲解】 1. 运行程序观察效果,发现所有方块都会移动到空白块所在的位置; 2. 分析如何解决这个问题:添加限制条件,只有空白块才可以移动 【制作】 学生修改脚本, 实现接收广播后, 只有被点击的数字块和空白块可以移动的功能(程序 样例见“第六部分 - 程序 2-3”) 【总结】 总结任务中实现的角色功能及使用的主要脚本。【第 4 步】 拓展思考 【对应 PPT】“思考与拓 展” 【时长】 10min 【讲解】 带领学生分析如何记录数字块移动的步数 【制作】 学生编写程序,添加变量记录数字块移动的步数(程序样例见“第六部分 - 程序小挑 战”) 此部分为课堂挑 战,根据课堂实 际情况完成【第 5 步】知识巩固 【对应 PPT】“总结巩固” 【时长】 5min 老师根据ppt 中的知识图谱回顾本节课的主要内容,带领学生完成知识总结六、主要程序说明任务一: 点击数字块后, 判断和空白块是否相邻,相邻时交换位置程序样例编号 程序样例与说明 对应的角色1-1 【方块】【程序 1-1 描述】 定义计算数字块(空白块) 行数和列数的脚 本,使用位置号进行计算,所以需要定义一个带有输入项的函 数。 列数用位置号除以 3 的余数得出,行数通过判断位置号的范 围得到。1-2 【程序 1-2 描述】 调用自定义积木,输入数字块的位置号后计算 数字块的行数和列数并分别存储在变量中;输入空白块的位置号 后计算空白块的行列数,同样分别存储在对应的变量中。1-3 【程序 1-3 描述】调用自制积木分别计算数字块和空白块的行数 和列数,之后比较数字块和空白块之间行列数的大小,用较大的 数字减去较小的数字,计算行数差和列数差1-4【程序 1-4 描述】将计算行数差和列数差的脚本定义为一个自制 积木,后续计算行数差和列数差时,直接调用自制积木就可以执 行2-1 【程序 2-1 描述】 点击角色后,调用计算行数差和列数差的脚 本,计算数字块和空白块之间的行数差和列数差。之后判断列数 差和行数差的和是否等于 1,等于 1 时,就交换这个数字块和空 白块对应的列表。 【方块】2-2【程序 2-2 描述】 数字块被点击后, 调用自制函数计算与空白块 之间的行数差和列数差。满足和空白块相邻的条件时,交换这个 数字块和空白块对应的列表项,发送移动的广播消息,并将这个 数字块移动到对应的位置。 方块角色接收到移动的广播后,移动 到空白块位置号对应的位置2-3【程序 2-3 描述】 克隆体接收到广播后,通过造型编号判断自己 是不是空白块,只有空白块才可以移动到空白块列表对应的位置拓展任务:添加变量,记录还原数字块顺序所需的数字块的移动步数程序样例编号 程序样例与说明 对应的角色小挑战 【方块】【程序 小挑战 描述】 点击绿旗后, 变量“步数”的初始值为 0,数字块和空白块每交换一次, 变量就增加 1。(共56张PPT)数字华容道位置移动克隆体属性思考与拓展相邻的条件数字块移动总结与巩固克隆体属性1检测是否碰到可以直接获得的克隆体哪些属性呢?可以侦测是否相互碰到不能侦测是否相互碰到克隆体获取属性获取属性克隆体可以响应被鼠标点击可以直接获取克隆体的x坐标可以直接获取克隆体的y坐标可以直接获取克隆体的方向可以直接获取克隆体的造型编号侦测模块克隆体可以侦测是否碰到其他角色克隆体可以侦测是否碰到某种颜色克隆体的属性克隆体可以响应被鼠标点击可以直接获取克隆体的x坐标可以直接获取克隆体的y坐标可以直接获取克隆体的方向可以直接获取克隆体的造型编号克隆体可以侦测是否碰到其他角色克隆体可以侦测是否碰到某种颜色相邻的条件2任务一任务一:点击数字块,移动数字块的位置,进行排序检测是否碰到如何检测数字块和空白块是否相邻移到相邻空白块无法直接侦测是否碰到相邻的条件数字块和空白块相邻 数字块和空白块位于同一行或同一列数字块和空白块位于同一行或同一列 数字块和空白块相邻同一行同一列同一列同一行相邻的条件第1行第2行第3行第1列第2列第3列同一行同一列列数相差1相邻列数相差1不相邻列数相差1相邻列数相差1不相邻列数相差2列数相差1行数相差2行数相差1条件简化各个数字块与空白块之间的行数差+列数差的值是多少?同一行列数相差1相邻行数相差1同一列与与行数差:0列数差:0列数差:1行数差:1如果行数差+列数差=1,那么数字块和空白块相邻323212101计算列数1 ÷ 3 = 0……12 ÷ 3 = 0……23 ÷ 3 = 1……04 ÷ 3 = 1……15 ÷ 3 = 1……26 ÷ 3 = 2……07 ÷ 3 = 2……18 ÷ 3 = 2……29 ÷ 3 = 3……0123123123①②③④⑤⑥⑦⑧⑨位置号列数列数 =如果 列数 = 0那么 列数 → 3行数差 + 列数差 = 1 数字块和空白块相邻行数-行数 列数-列数计算行数111222333①②③④⑤⑥⑦⑧⑨位置号行数行数 = 1行数 = 2行数 = 3位置号:1 ~ 3 行数 = 1位置号:4 ~ 6 行数 = 2位置号:7 ~ 9 行数 = 3计算行列数新建变量存储行、列数计算列数计算一个除法算式的余数例:如果 列数 = 0那么 列数 → 3列数 = 位置号 ÷ 3的余数计算行数位置号:1 ~ 3 行数 = 1位置号:4 ~ 6 行数 = 2位置号:7 ~ 9 行数 = 3计算行数如果成立不成立如果成立不成立自制函数每次点击方块时都要执行组合成自制积木方便调用位置号行数列数输入项输出编辑任务试一试:建立自制积木,定义使用位置号计算行列数的脚本1.位置号是输入项2.计算行列数时需要调用位置号计算行列数Step1:新建自制函数,定义使用位置号计算行列数的积木获取位置号如何获取被点击角色的位置号数字块被点击时计算行列数获取位置号克隆体的位置号位置号:获取位置号如何获取空白块的位置号?空白块位置号:位置号:计算行列数变量存储数字块行、列数变量存储空白块行、列数计算被点击的数字块的行列数:计算空白块的行列数:存储行列数输入位置号输出列数输出行数计算并存储被点击的数字块的行列数:计算并存储空白块的行列数:编辑任务试一试:新建变量,拼接脚本,计算并存储数字块及空白块的行列数1.输入项是对应的位置号2.计算完成后存储在各自的变量中存储行列数Step2:输入各自的位置号,计算数字块及空白块的行列数计算行列差行数:1行数:2行数:3行数差:1(空白块-数字块)行数差:1(数字块-空白块)比较数字块行数和空白块行数如果成立不成立编辑任务试一试:在计算行列数脚本的下方继续编程完成行数差和列数差的计算,并将结果分别存储在变量中1.需要新建两个变量2.计算行列差时需要先比较计算行列差Step3:计算数字块和空白块之间的行数差和列数差自制积木每次点击方块时执行,计算行列差编辑任务试一试:新建自制积木,定义计算行数差和列数差的积木数字块移动3移动数字块计算行列差与空白块相邻?交换列表内容是否移动角色位置不做反应角色被点击被点击数字块的位置号空白块的位置号移动被点击数字块的位置移动空白块的位置移动数字块交换列表内容移动方块位置交换什么?被点击的数字块的位置号被点击的数字块的位置号交换编辑任务试一试:编写脚本,实现数字块被点击时如果和空白块相邻,就交换位置号列表项的功能交换两个列表项时需要中间变量交换位置号Step4:点击数字块,满足相邻条件时,交换列表内容移动位置数字块移动空白块移动移动位置计算行列差与空白块相邻?交换列表内容是否移动角色位置不做反应角色被点击数字块空白块编辑任务试一试:编写脚本,实现数字块被点击时如果和空白块相邻,和空白块交换位置的效果1.根据交换后的列表内容移动位置2.发送广播,移动空白块位置移动角色位置Step5:交换列表内容后,移动角色位置空白块移动为什么所有方块都移到了空白块的位置空白块移动接收广播是空白块?移动是否不做反应空白块接收广播是空白块?移动是否不做反应Step6:移动空白块的位置编辑任务试一试:修改脚本,实现接收到广播后只有空白块移动位置的功能造型编号为9的克隆体是空白块任务一总结实现功能:点击数字块时,如果数字块和空白块相邻,就交换数字块和空白块的位置。主要脚本:思考与拓展4记录移动步数如何记录移动的步数开始游戏数字块和空白块交换挑战任务试一试:编写脚本,使用变量记录还原数字块顺序所需要的移动步数数字块和空白块交换时,步数才会增加记录移动步数总结与巩固5 展开更多...... 收起↑ 资源列表 第4.docx 第4节-位置移动.pptx