跳转到内容

Scratch 中的变量和数据

变量就像精灵的记忆 - 它们帮助程序记住重要信息,如分数、姓名或游戏中剩余的生命数。把它们想象成带标签的盒子,可以存储不同类型的信息!

变量是一个容器,用来保存在程序运行期间可以改变的值。就像一个带标签的盒子,你可以:

  • 放入信息(设置值)
  • 查看里面的内容(使用值)
  • 更改内容(更新值)
  • 在计算中使用内容(数学运算)

🎮 游戏机制

跟踪分数、生命、关卡或任何随着玩家在创作中进展而改变的游戏状态。

📊 计算

存储数字进行数学运算,计算某事发生的次数,或跟踪测量值。

💬 用户信息

记住玩家姓名、问题答案或在交互故事中做出的选择。

🎨 动态行为

基于存储的值控制精灵行为 - 让角色更智能、更有响应性!

让我们逐步学习如何创建和使用变量:

  1. 🏷️ 创建新变量 转到变量类别,点击”新建变量”。给它一个描述性的名称,如”score”或”player_name”。

  2. 📝 选择可见性 决定是”适用于所有精灵”(全局)还是”仅适用于当前精灵”(局部)。大多数游戏变量是全局的。

  3. 🎯 设置初始值 使用”将 [变量] 设为 (值)“积木给变量一个起始值。

  4. 🔄 根据需要更新 使用”将 [变量] 增加 (数量)“来增加或减少值,或使用”设为”来完全替换。

  5. 📺 如有帮助则显示 勾选变量名旁边的复选框以在舞台上显示 - 对分数和计时器很有用!

将 [score ▼] 设为 (0) - 将变量设为确切的值
将 [score ▼] 增加 (10) - 增加(或减少)这个数量
将 [name ▼] 设为 (询问的答案) - 可以存储文本,不仅仅是数字

以下是您在几乎每个项目中都会使用的基本模式:

当绿旗被点击
将 [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) 秒

列表就像可以同时保存多条信息的变量 - 想象一个购物清单或高分榜!

  1. 📋 新建列表 在变量中,点击”新建列表”并给它一个名称,如”high_scores”或”inventory”。

  2. ➕ 添加项目 使用”向 [列表 ▼] 添加 (项目)“将新信息放在列表末尾。

  3. 🔍 访问项目 使用”[列表 ▼] 的第 (1) 项”获取特定项目。列表从1开始计数,不是0!

  4. 🗑️ 删除项目 使用”删除 [列表 ▼] 的第 (1) 项”删除特定项目,或”删除 [列表 ▼] 的全部”清空所有内容。

  5. 📊 获取信息 使用”[列表 ▼] 的长度”找出列表中有多少项目。

当绿旗被点击
如果 [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)
结束

使用变量时的常见问题和解决方案:

  1. 👀 临时显示变量 勾选变量复选框,在测试期间实时查看它们的值变化。

  2. 💬 说出变量值 使用”说 (变量) (2) 秒”在特定时刻检查值。

  3. 🎨 使用不同显示样式 右键点击舞台变量显示,选择滑块、大型读数或隐藏显示。

  4. 📝 添加调试注释 使用注释积木提醒自己每个变量应该做什么。

  • 使用描述性名称:“player_score”而不是”var1”
  • 保持一致性:如果使用下划线,就到处使用
  • 表明用途:“is_game_running”清楚地显示这是状态标志
  • 全局变量用于:分数、关卡、所有精灵都需要的游戏设置
  • 精灵变量用于:个体角色健康、个人计时器、精灵特定数据
  • 开始新游戏时重置变量
  • 清理不再需要的临时变量
  • 高效使用列表 - 不要为相似数据创建单独变量
当绿旗被点击
将 [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 的指导下,您将创建能够记忆、学习并与用户一起成长的项目! 📊✨