1

今天我想用 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 中是否可能,因为这段代码使用了海龟模块。我想我需要以某种方式更改此代码才能在 RapydScript 上运行它。RapydScript 是否允许导入海龟模块?

正如你在这里看到的: http ://www.transcrypt.org/live/turtle_site/turtle_site.html

Transcrypt(类似于 RapydScript 的工具)以某种方式可以用海龟绘制。

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

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

4

2 回答 2

2

请参阅src/libRapydScript回购- 没有turtle模块。它不能从 Python 中导入 turtle 模块,因为它不在浏览器的画布上绘制。因此,如果您不创建 turtle 模块,则无法绘制树。

于 2016-10-03T05:53:21.500 回答
2

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

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

看看那个代码,我可以告诉你,你可以将它几乎逐字复制粘贴到 RapydScript 中,以在那里“获得”一个海龟模块。RapydScript 支持代码所做的一切,甚至 RS 和 Transcrypt 之间的导入机制也将同样工作。

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

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

于 2016-10-03T12:30:23.160 回答