gpt4 book ai didi

mit-scratch - Scratch 编程 block 背后的架构是什么?

转载 作者:行者123 更新时间:2023-12-04 02:55:42 25 4
gpt4 key购买 nike

我需要构建 Scratch 中使用的编程 block 的迷你版或稍后!或开放 block 。

它们中的代码都很大而且很难理解,尤其是在 Scratch 中,它是用 SmallTalk 的某种子集编写的,我不知道。

我在哪里可以找到他们都用来解析 block 并将其转换为一组指令的算法,这些指令适用于某些东西,例如 Scratch 中的动画或游戏?

我对编程 block 概念背后的算法或架构非常感兴趣。

最佳答案

这只是一个非常笼统的解释,具体细节由您决定。

定义 block

有一个Block所有 block 都继承自的类。它们使用它们的标签(名称)、形状和对该方法的引用进行初始化。当它们被运行/调用时,关联的方法被传递当前上下文(sprite)和参数。

不同版本的具体实现不同。例如,在 Scratch 1.x 中,方法采用与 block 参数相对应的参数,上下文(thisself)是 Sprite 。在 2.0 中,它们被传递一个包含所有 block 的参数和上下文的参数。折断!似乎遵循 1.x 方法。

堆栈(命令) block 不返回任何内容;记者 block 做。

口译

解释器的工作方式有点像这样。每个 block 都包含对下一个 block 的引用,以及任何子例程(参数中的报告器 block ;C 槽中的命令 block )。

首先,所有论点都已解决。调用记者,并存储他们的返回值。这是针对彼此内部的许多 Reporter block 递归完成的。

然后,命令本身被执行。理想情况下,这是一个简单的命令(例如移动)。方法被调用,Stage 被更新。

继续下一个 block 。

C block

C block 的程序略有不同。这些是 if <>样式,以及 repeat <>那些。除了它们的普通参数之外,它们还引用了它们的“miniscript”子例程。

对于一个简单的if/else C block ,如果适用,只需正常执行子程序。

但是,在处理循环时,您必须确保线程正确,并等待其他脚本。

事件

按键/点击事件可以很容易地处理。只需在按键/单击时执行它们。

当广播堆栈运行时,可以通过执行帽子来完成广播之类的事情。

其他事件你必须自己解决。

等待 block

这与线程一起对我来说是解释中最令人困惑的部分。基本上,您需要弄清楚何时继续执行脚本。也许设置一个计时器在时间之后执行,但你仍然需要正确地线程。

我希望这有帮助!

关于mit-scratch - Scratch 编程 block 背后的架构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244208/

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