🎮 游戏机制
跟踪分数、生命、关卡或任何随着玩家在创作中进展而改变的游戏状态。
变量就像精灵的记忆 - 它们帮助程序记住重要信息,如分数、姓名或游戏中剩余的生命数。把它们想象成带标签的盒子,可以存储不同类型的信息!
变量是一个容器,用来保存在程序运行期间可以改变的值。就像一个带标签的盒子,你可以:
🎮 游戏机制
跟踪分数、生命、关卡或任何随着玩家在创作中进展而改变的游戏状态。
📊 计算
存储数字进行数学运算,计算某事发生的次数,或跟踪测量值。
💬 用户信息
记住玩家姓名、问题答案或在交互故事中做出的选择。
🎨 动态行为
基于存储的值控制精灵行为 - 让角色更智能、更有响应性!
让我们逐步学习如何创建和使用变量:
🏷️ 创建新变量 转到变量类别,点击”新建变量”。给它一个描述性的名称,如”score”或”player_name”。
📝 选择可见性 决定是”适用于所有精灵”(全局)还是”仅适用于当前精灵”(局部)。大多数游戏变量是全局的。
🎯 设置初始值 使用”将 [变量] 设为 (值)“积木给变量一个起始值。
🔄 根据需要更新 使用”将 [变量] 增加 (数量)“来增加或减少值,或使用”设为”来完全替换。
📺 如有帮助则显示 勾选变量名旁边的复选框以在舞台上显示 - 对分数和计时器很有用!
将 [score ▼] 设为 (0) - 将变量设为确切的值
将 [score ▼] 增加 (10) - 增加(或减少)这个数量
将 [name ▼] 设为 (询问的答案) - 可以存储文本,不仅仅是数字
[score ▼] - 圆形报告积木给出当前值
说 (score) (2) 秒 - 向用户显示值
如果 score > 100 那么 - 在条件和比较中使用
显示变量 [score ▼] - 在舞台上使其可见
隐藏变量 [score ▼] - 从舞台显示中移除
通过右键点击舞台显示来更改显示样式
以下是您在几乎每个项目中都会使用的基本模式:
当绿旗被点击将 [score ▼] 设为 (0)
当 [收集品 ▼] 被点击将 [score ▼] 增加 (10)播放声音 (硬币 ▼) 直到播放完毕
如果 score = 100 那么 说 [你赢了!] (3) 秒结束
当绿旗被点击将 [lives ▼] 设为 (3)
当接收到 (玩家被击中 ▼)将 [lives ▼] 增加 (-1)如果 lives = 0 那么 说 [游戏结束!] (3) 秒 停止 [全部 ▼]结束
当绿旗被点击将 [time ▼] 设为 (60)重复执行直到 time = 0 等待 (1) 秒 将 [time ▼] 增加 (-1)结束说 [时间到!] (2) 秒
当绿旗被点击询问 [你的名字是什么?] 并等待将 [player_name ▼] 设为 (询问的答案)说 (连接 [你好,] (player_name)) (3) 秒
列表就像可以同时保存多条信息的变量 - 想象一个购物清单或高分榜!
📋 新建列表 在变量中,点击”新建列表”并给它一个名称,如”high_scores”或”inventory”。
➕ 添加项目 使用”向 [列表 ▼] 添加 (项目)“将新信息放在列表末尾。
🔍 访问项目 使用”[列表 ▼] 的第 (1) 项”获取特定项目。列表从1开始计数,不是0!
🗑️ 删除项目 使用”删除 [列表 ▼] 的第 (1) 项”删除特定项目,或”删除 [列表 ▼] 的全部”清空所有内容。
📊 获取信息 使用”[列表 ▼] 的长度”找出列表中有多少项目。
当绿旗被点击如果 [high_scores ▼] 的长度 = 0 那么 向 [high_scores ▼] 添加 (0)结束
当游戏结束如果 score > [high_scores ▼] 的第 1 项 那么 将 [high_scores ▼] 的第 (1) 项替换为 (score) 说 [新高分!] (3) 秒结束
当 [宝藏 ▼] 被点击向 [inventory ▼] 添加 (宝藏名称)说 (连接 [发现:] (宝藏名称)) (2) 秒
当 [使用物品 ▼] 被点击如果 [inventory ▼] 的长度 > 0 那么 说 (连接 [使用:] ([inventory ▼] 的第 (1) 项)) (2) 秒 删除 [inventory ▼] 的第 (1) 项否则 说 [没有物品可用!] (2) 秒结束
Scratch 变量可以存储不同类型的信息:
🔢 数字
整数:整数如 5、-10、0
小数:带小数点的数字如 3.14、-2.5
适用于分数、位置、计时器和计算
📝 文本(字符串)
单词和短语:“你好”、“玩家1”、“游戏结束”
混合内容:“分数:100”、“第5关”
适用于姓名、消息和显示信息
✅ 布尔类值
真/假概念:用1表示真,0表示假
状态跟踪:“开”、“关”、“准备”、“游戏中”
有助于游戏状态和条件判断
🎨 特殊值
颜色:存储画笔绘图的颜色值
坐标:将x,y位置存储为文本如”100,50”
复杂数据:高级项目的JSON类字符串
当绿旗被点击将 [difficulty ▼] 设为 (1)将 [enemy_speed ▼] 设为 (2)
每隔 (30) 秒将 [difficulty ▼] 增加 (1)将 [enemy_speed ▼] 设为 ((difficulty) * (2))
当接收到 (玩家动作 ▼)如果 player_level < 5 那么 说 [做得好,新手!] (2) 秒否则 说 [出色的工作,专家!] (2) 秒结束
// 仅适用于共享项目当绿旗被点击如果 ☁ global_high_score < local_score 那么 将 [☁ global_high_score ▼] 设为 (local_score)结束
当绿旗被点击询问 [简单(1)还是困难(2)模式?] 并等待将 [game_mode ▼] 设为 (询问的答案)
如果 game_mode = 1 那么 将 [enemy_count ▼] 设为 (3)否则 将 [enemy_count ▼] 设为 (8)结束
使用变量时的常见问题和解决方案:
👀 临时显示变量 勾选变量复选框,在测试期间实时查看它们的值变化。
💬 说出变量值 使用”说 (变量) (2) 秒”在特定时刻检查值。
🎨 使用不同显示样式 右键点击舞台变量显示,选择滑块、大型读数或隐藏显示。
📝 添加调试注释 使用注释积木提醒自己每个变量应该做什么。
当绿旗被点击将 [correct_answers ▼] 设为 (0)将 [total_questions ▼] 设为 (10)将 [current_question ▼] 设为 (1)
重复 (total_questions) 次 将 [num1 ▼] 设为 (在 (1) 到 (10) 间随机选一个数) 将 [num2 ▼] 设为 (在 (1) 到 (10) 间随机选一个数) 询问 (连接 (连接 (num1) [ + ]) (num2)) 并等待
如果 询问的答案 = (num1 + num2) 那么 将 [correct_answers ▼] 增加 (1) 说 [正确!] (1) 秒 否则 说 [下次再试!] (1) 秒 结束
将 [current_question ▼] 增加 (1)结束
说 (连接 [你答对了] (连接 (correct_answers) [道题,共10题!])) (5) 秒
准备用数据构建更复杂的程序了吗?
变量和列表是智能、交互式程序的基础。在 Vibelf 的指导下,您将创建能够记忆、学习并与用户一起成长的项目! 📊✨