搜索

Scratch 教程

基本介绍

使用 Scratch 3 注册与登录 操作界面 我的东西

图形与声音

绘制造型&背景 编辑音效

程序积木

积木种类 动作 外观 音效 事件 控制 侦测 运算 变数 清单 函数积木

扩充功能

音乐 画笔 视频侦测 文字转语音 翻译

技巧&观念

全域变数、区域变数 深入理解区域变数 控制指定分身 控制所有分身的方法 云端变数 云端变数记录文字 变数串接文字 判断英文字母大小写 中断与停止程序 广播消息并等待 键盘与鼠标 鼠标点击与长按 侦测所有键盘按键 点击隐藏的角色 突破角色尺寸限制 角色与舞台边界 重复积木的等待时间 音乐暂停与继续播放 使用造型名称建立清单 使用造型代替变数 文字转清单 清单合并为文字 判断两个清单是否相同 复制清单、反转清单 清单数字排序 清单最大值最小值

入门范例

键盘控制猫咪 指向中间的箭头 水果音乐钢琴 猫咪的影分身之术 猫咪的细胞分裂 螃蟹跑来跑去 吃水果 摸蝴蝶 小狗追棒球 鱼儿水中游 小鸟往前飞 舞棍阿伯 小时钟 摇骰子 转动的眼球 抽奖轮盘 大乐透电脑选号 卡牌抽签 ( 20 中 1 ) 移动到边缘切换场景 人物依序跳舞 ( 广播 ) 按钮控制猫咪 ( 广播 )

进阶范例

猫咪跑步 ( 连续背景 ) 猫咪跑步 ( 超长背景 ) 大型数字 ( 图形数字 ) 拖拉怪兽碰撞墙壁 键盘钢琴 ( 记录音符 ) 中文字逐字稿 英文字逐字稿 计算机 1 ( 显示数字 ) 计算机 2 ( 加减乘除 ) 云端聊天室 音乐播放器 推猫咪 ( 视频侦测 ) 围捕小鱼 ( 视频侦测 ) 戳泡泡 ( 视频侦测 )

视觉特效范例

视差效果 水中吐泡泡 雪花随风飘 键盘钢琴 ( 音符动画 ) 无限循环画中画 水底探照灯 狙击望远镜 ( 两倍变焦 ) 猫咪万花筒 仙女棒 ( 光迹效果 ) 骇客任务背景特效 放烟火 1 ( 往上发射 ) 放烟火 2 ( 爆炸效果 )

绘图范例

镜射画图 ( 对称图形 ) 小画家 ( 舞台上画图 ) 记录画图轨迹 绘制圆形 绘制椭圆形 绘制立方体 ( 会动 ) 绘制正多边形 绘制正多角星形 ( 单纯 ) 绘制正多角星形 ( 多线 ) 绘制抛物线 绘制折线图 绘制圆饼图 绘制圆饼图 ( 指示线 ) 蜘蛛结网 ( 八边形网 ) 绘制舞台方格 绘制正弦波形 ( sin ) 正弦波毛毛虫动画 显示声波图形

物理&模拟范例

钟摆运动 简单磁铁效果 两个磁铁的磁力线 立体空间 ( 三度空间 ) 循迹移动 抛物线发射炮弹 地球绕着太阳转 弹跳的篮球 电风扇 ( 控制强度 ) 拉不走的弹力球 惯性移动 ( 鼠标 ) 惯性移动 ( 键盘 )

入门游戏范例

猴子接香蕉 打地鼠 打地鼠 ( 体感视频侦测 ) 刮刮乐 吹风机吹头发 太空狗闪躲陨石 九九乘法测验 英文单字测验 钓鱼游戏 拍西瓜 ( 储存最高分 ) 宝可梦猜猜我是谁 ( 基本 ) 形状配对拼图 台湾地图拼图 英文打字机 英文打字机 ( 判断大小写 ) 射击外星人 猜数字 ( 猜大小 ) 猜数字 ( 几 A 几 B ) 连连看 ( 产生器 ) 连连看

进阶游戏范例

青蛙过河 青蛙过马路 反弹球 ( 乒乓球 ) 打砖块 狙击气球 ( 两倍变焦 ) Flappy Bird Flappy Bird ( 声控版 ) 走迷宫 ( 基本 ) 大型迷宫 ( 键盘控制 ) 大型迷宫 ( 鼠标控制 ) 翻卡记忆游戏 翻卡记忆游戏 ( 改良版 ) 井字棋 ( 圈圈叉叉 ) 九宫格拼图 九宫格拼图 ( 改良版 ) 音阶记忆 贪吃蛇 ( 分身版 ) 贪吃蛇 ( 画笔版 ) 小鸡下楼梯 拉霸机

团康游戏范例

摇骰子 ( 1~3 个 ) 比手画脚 ( 猜动物 ) 音乐传球游戏 大声公 ( 比赛谁的气长 ) 抽签 ( 可调整中签数量 ) 转盘指针 ( 指到谁就当鬼 ) 倒数计时器 ( 基本版 ) 倒数计时器 ( 大数字版 )

游戏设计技巧

角色 ( 地上移动 ) 角色 ( 蹲下、左右转 ) 角色 ( 跳耀、两段跳 ) 角色 ( 墙壁、爬墙 ) 地图 ( 清单转换 ) 地图 ( 二维数组 ) 地图 ( 控制移动 ) 地图 ( 墙壁碰撞侦测 ) 地图 ( 吃东西侦测 ) 俄罗斯方块 ( 角色与背景 ) 俄罗斯方块 ( 移动与碰撞 ) 俄罗斯方块 ( 放置方块 ) 俄罗斯方块 ( 消除完成方块 ) 俄罗斯方块 ( 下个形状 )

俄罗斯方块 ( 角色与背景 )

这系列的教学会介绍透过 Scratch 实作“俄罗斯方块”,这篇教学会先介绍俄罗斯方块的游戏原理,并绘制俄罗斯方块游戏中会用到的角色,以及使用清单的方式绘制背景。

相关文章参考:

快速导览:

俄罗斯方块游戏原理

俄罗斯方块游戏是一个典型的“清单游戏”,虽然眼睛所见的是“方块”,但背后都是清单所组成,举例来说,如果游戏的长方形背景是 12x17 个方块组成,对应的清单就会是一个有 17 个项目,每个项目里又有 12 个子项目,每个子项目为 0 的“二维清单”。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 俄罗斯方块游戏原理 - 背景

如果在背景加入“方块”,就等同在清单中加入“不为 0”的子项目,透过这些不为 0 的子项目,就能换算出方块在背景中的长相。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 俄罗斯方块游戏原理 - 方块

如果同一行的方块摆满了需要“消除”,就表示清单中该行的“子元素全部都不为 0”,透过清单的操作 ( 删除该行、添加新的一行 ),就能够将该行的方块消除。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 俄罗斯方块游戏原理 - 消除

俄罗斯方块游戏设计重点

由于 Scratch 对于“清单”的操作较不友善,为了避免碰触大量的清单处理功能,可以使用下列的重点进行设计:

  • 使用“实体的方块”角色,透过键盘或鼠标,操控方块的“位置以及旋转方向”。
  • 方块“放置”后 ( 碰到别的方块而停止、到达底部停止 ),使用“画笔”将方块“盖印章”到舞台上。
  • 使用“背景方块”角色侦测舞台的颜色,透过颜色产生“清单”。
  • 透过“清单”判断是否需要消除某一行,消除后,再运用清单“重新绘制”舞台上的方块。
  • 当清单的第一行有子元素,表示俄罗斯方块游戏结束。

绘制角色 ( 背景格子 )

建立一个名为“背景格子”的角色,绘制第一个名为“bg”的造型,使用浅灰色,放入一个 19x19 的正方形,将正方形对齐画布中心。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

复制 bg 造型,产生七个依序名为“shape1~shape7”的造型,并将七个造型修改成不同颜色,这七个造型未来会是方块的颜色。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

绘制角色 ( 方块造型 )

建立一个名为“方块造型”的角色,绘制第一个名为“shape1”的造型,接着复制背景格子角色的 shape1 正方形造型,贴上到方块造型的 shape1 造型中,运用正方形组合成 T 形的俄罗斯方块,按照下图,使用方块组合出同样的长宽以及对齐的方块 ( 不要使用变形,单纯用位置调整 )。

注意,T 形方块组合后长宽是 59x39 ( 19x3=57,加上两个中间间隔 57+2=59,19x2=38,加上一个中间间隔 38+1=39 ),中间方块需要对齐画布中心。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

复制背景格子角色的 shape2 正方形造型,贴上到方块造型的 shape2 造型中,运用正方形组合成 L 形的俄罗斯方块,按照下图,使用方块组合出同样的长宽以及对齐的方块 ( 不要使用变形,单纯用位置调整 )。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

复制背景格子角色的 shape3 正方形造型,贴上到方块造型的 shape3 造型中,运用正方形组合成另外一个 L 形的俄罗斯方块,按照下图,使用方块组合出同样的长宽以及对齐的方块 ( 不要使用变形,单纯用位置调整 )。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

复制背景格子角色的 shape4 正方形造型,贴上到方块造型的 shape4 造型中,运用正方形组合成正方形的俄罗斯方块,按照下图,使用方块组合出同样的长宽以及对齐的方块 ( 不要使用变形,单纯用位置调整 )。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

复制背景格子角色的 shape5 正方形造型,贴上到方块造型的 shape5 造型中,运用正方形组合成 Z 形的俄罗斯方块,按照下图,使用方块组合出同样的长宽以及对齐的方块 ( 不要使用变形,单纯用位置调整 )。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

复制背景格子角色的 shape6 正方形造型,贴上到方块造型的 shape6 造型中,运用正方形组合成另外一个 Z 形的俄罗斯方块,按照下图,使用方块组合出同样的长宽以及对齐的方块 ( 不要使用变形,单纯用位置调整 )。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

复制背景格子角色的 shape7 正方形造型,贴上到方块造型的 shape7 造型中,运用正方形组合成长条形的俄罗斯方块,按照下图,使用方块组合出同样的长宽以及对齐的方块 ( 不要使用变形,单纯用位置调整 )。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景格子 )

绘制角色 ( 背景外框 )

建立一个名为“背景外框”的角色,绘制一个造型,加入 254x352 的长方形,设定“不填满”以及“有边框”,这个角色有两个目的,第一个是显示俄罗斯方块的移动范围,第二个则是作为判断左右边界的功能。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 背景外框 )

绘制角色 ( 下层边界 )

建立一个名为“下层边界”的角色,绘制一个造型,加入 254x3 的长方形,设定“不填满”以及“有边框”,这个角色主要目的在于判断是否碰触到底部。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 绘制角色 ( 下层边界 )

使用清单产生背景

点击“背景方格”角色,切换到程序编辑画面,按照下列步骤编辑程序:

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 使用清单产生背景

建立一个名为“画背景”的函数,勾选“执行完毕再更新画面”,按照下列步骤编辑函数内容:

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 使用清单产生背景

由于清单是使用清单搭配文字模拟“二维清单”,所以取出项目时,外层使用“清单项目”,内层使用“文字的第几个字”。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 使用清单产生背景

完成后,在点击绿旗的重复循环结束后,执行“画背景”函数,点击绿旗之后,舞台上就会看见画出灰色方格背景。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 使用清单产生背景

如果要测试其他图案,可以将部分的 0 换成 1~7 的数字,点击绿旗后就会看见出现不同颜色的背景。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 使用清单产生背景

背景外框与下层边界定位

能够画出背景方格后,接着使用下列的程序积木,将“背景外框”的角色定位,因为 bg_x 变数表示背景方格的中心点 x 座标,换算成背景外框的中心点需要使用 bg_x + 110。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 背景外框定位

使用下列的程序积木,将“下层边界”角色,与背景外框角色的下缘贴齐,因为 bg_x 变数表示背景方格的中心点 x 座标,换算成下层边界的中心点需要使用 bg_x + 110。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 背景外框定位

完成效果

点击绿旗,就会看见舞台中出现俄罗斯方块游戏的基本界面。

Scratch 教学 - 俄罗斯方块 ( 原理介绍、绘制角色和背景 ) - 完成效果

范例解答

范例解答:俄罗斯方块 1 ( 绘制角色和背景 )

继续阅读

如果已经熟悉了俄罗斯方块 1 ( 原理介绍、绘制角色和背景 ) 的程序,就可以继续阅读“俄罗斯方块 2 ( 角色移动、碰撞侦测与修正 )”的文章。

文章链接:俄罗斯方块 2 (角色移动、碰撞侦测与修正 )

意见反馈

微信二维码 微信扫码关注 抖音二维码 抖音扫码关注