使用 RapydScript 的乌龟和绘图树

Turtle and drawing tree with RapydScript

今天我想用 RapydScript 在浏览器中画一棵树。 我在 Python:

中有代码
import random
import turtle

def tree(size, myTurtle):
    myTurtle.pensize(size / 20)

    if size < random.randint(1,2) * 20:
        myTurtle.color("green")
    else:
        myTurtle.color("brown")

    if size > 5:
        myTurtle.forward(size)
        myTurtle.left(25)
        tree(size - random.randint(10, 20), myTurtle)
        myTurtle.right(50)
        tree(size - random.randint(10, 20), myTurtle)
        myTurtle.left(25)
        myTurtle.penup()
        myTurtle.backward(size)
        myTurtle.pendown()

window = turtle.Screen()
window.setup(800,600)
window.bgcolor("white")

myTurtle = turtle.Turtle()
myTurtle.color("brown", "blue")
myTurtle.left(90)
myTurtle.speed(0)
myTurtle.penup()
myTurtle.setpos(0, -250)
myTurtle.pendown()

我想在浏览器中运行它以获得这种效果:

不用担心树上的文字,它是波兰语 ;) 我在 Skulpt 中 运行 这个,也许你听说过,上面的效果。 现在我想 运行 在 RapydScript 中将其与 Skulpt 和 Brython 进行比较。

我想知道在 RapydScript 中是否可行,因为这段代码使用了 turtle 模块。 我想我需要在 RapydScript 上以某种方式将此代码更改为 运行。 RapydScript 是否允许导入 turtle 模块?

如您所见: http://www.transcrypt.org/live/turtle_site/turtle_site.html

Transcrypt(RapydScript 的类似工具)可以用 turtle 绘制。

你能帮我解决这个问题吗?

当然我想使用 Python,我知道 RapydScript 允许使用 JavaScript,但我想要 Python :))

参见 RapydScript repo 中的 src/lib - 没有 turtle 模块。而且它无法从 Python 导入 turtle 模块,因为它不会在浏览器中绘制 canvas。所以不创建turtle模块就不能画树

如@furas 所述,基础仓库中没有 turtle 模块。首先,我认为您误解了 turtle 模块是什么,它只不过是围绕另一个图形库的抽象。即使在 Python 中,它也不是处理图形的首选方式,它只是 Logo 工具包的一个子集,旨在让孩子们更容易编程。

话虽如此,Transcrypt 存在于与 RapydScript 完全相同的 JavaScript 世界中,它使用的 turtle 与 Python 的 turtle 无关,它是 SVG 的包装器。事实上,这里是:https://github.com/JdeH/Transcrypt/blob/master/transcrypt/modules/turtle/init.py

看看那段代码,我可以告诉你,你几乎可以 copy-paste 将它逐字输入 RapydScript 到 "gain" 那里的海龟模块。 RapydScript 支持代码所做的一切,甚至 RS 和 Transcrypt 之间的导入机制也将工作相同。

此外,快速 Google 搜索显示了此 turtle 模块的 2 JavaScript 个实现(您可以将其附加到与 RapydScript 相同的页面并像使用它们一样使用它们'重新 Python):
http://berniepope.id.au/html/js-turtle/turtle.html
https://github.com/davebalmer/turtlewax

最后,你是否使用turtle模块并不会使你的代码变得更多或更少Python。您似乎也有一个误解,即通过使用来自 RapydScript 的 JavaScript 库,您需要在 JavaScript 中编写其余代码。事实并非如此,RapydScript 示例目录已经显示 D3, canvas, and WebGL 个示例。没有 turtle 模块的原因是因为它与 JavaScript(和 RapydScript)可以访问的图形库相比已经过时了。但是,欢迎您使用 turtle 模块实现进行拉取请求。