小学高年级课后服务 scratch3.0编程课件 二阶课程 项目3数字华容道 第4节 位置移动课件(共56张PPT +教案)

资源下载
  1. 二一教育资源

小学高年级课后服务 scratch3.0编程课件 二阶课程 项目3数字华容道 第4节 位置移动课件(共56张PPT +教案)

资源简介

数字华容道项目第四讲: 位置移动
一、 课程目标
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,那么数字块和空白块相邻
3
2
3
2
1
2
1
0
1
计算列数
1 ÷ 3 = 0……1
2 ÷ 3 = 0……2
3 ÷ 3 = 1……0
4 ÷ 3 = 1……1
5 ÷ 3 = 1……2
6 ÷ 3 = 2……0
7 ÷ 3 = 2……1
8 ÷ 3 = 2……2
9 ÷ 3 = 3……0
1
2
3
1
2
3
1
2
3









位置号
列数
列数 =
如果 列数 = 0
那么 列数 → 3
行数差 + 列数差 = 1 数字块和空白块相邻
行数-行数 列数-列数
计算行数
1
1
1
2
2
2
3
3
3









位置号
行数
行数 = 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

展开更多......

收起↑

资源列表