gpt4 book ai didi

mit-scratch - 克隆网格

转载 作者:行者123 更新时间:2023-12-02 21:52:07 29 4
gpt4 key购买 nike

我的目标是构建 5x5 的图像网格。在以下代码中,rowcolrowcol 被创建为 Sprite 的本地变量,以及 newcolnewrowcats 是全局的。 (顺便问一下,是否可以区分哪些变量是局部变量,哪些变量是全局变量?很容易忘记或犯错误。)

code

结果仅为 5x1 网格,如此处所示。

results

我不清楚这些语句的执行顺序。 当我作为克隆启动时 是在第二次调用add_cat 之前还是之后调用?我的初步结论是,它是在之后调用的,但克隆的全局变量似乎包含了之前的值。

当我尝试使用 asksay 以及 wait 命令对其进行调试时,结果差异很大。在某些地方添加此类暂停可以完全解决问题,从而形成 5x5 网格。在其他地方,他们造成了 1x5 网格。

主要问题是:如何修复此问题以生成 5x5 网格?

最佳答案

说明

不幸的是,Scratch 中的执行顺序有点奇怪。每当您编辑脚本(通过添加或删除 block 、编辑输入或将整个脚本拖动到编辑器中的新位置)时,它都会被放置在列表的底部(因此它最后运行)。

测试这一点的一个好方法是使用以下脚本创建一个空白项目:
two similar scripts

当您单击绿色旗帜时, Sprite 将显示“脚本一”或“脚本二”,具体取决于哪个先运行。尝试单击并拖动when green flag clicked block 之一。下次您单击绿旗时, Sprite 会说出与您刚刚拖动的脚本相对应的消息。

这种疯狂的顺序可能会使执行变得极其不可预测,尤其是在使用克隆时。

解决方案

唯一真正的解决方案是编写内置明确执行顺序的代码(而不是依赖于编辑器的突发奇想)。对于更简单的脚本,这通常意味着利用广播和等待 block 以必要的顺序运行特定事件。

对于您的具体项目,我看到两个主要解决方案:

程序解决方案这是最简单的脚本,我可能会选择使用它:
procedural solution
(rowcol 都是仅 Sprite 变量)
由于克隆在创建时会继承所有仅 Sprite 变量值,因此每个克隆在创建时将保证具有正确的行和列。

递归解决方案这个解决方案比第一个解决方案更难理解,所以我可能会避免它,除非您只是在寻找新奇的东西:
recursive solution

关于mit-scratch - 克隆网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42984298/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com