【问题标题】:Turtle and draw a tree with Transcrypt龟并用 Transcrypt 画一棵树
【发布时间】:2017-02-10 20:59:06
【问题描述】:

今天我想用 Transcrypt 在浏览器中画一棵树。 我有在 Skulpt 中工作的 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 中运行这个,也许你听说过它,你有上面的效果。 现在我想在 Transcrypt 中运行它并将其与 Skulpt 和 Brython 进行比较。

正如您在此处看到的: http://www.transcrypt.org/live/turtle_site/turtle_site.html

Transcrypt 不知何故可以用海龟绘制。

这段代码有什么变化,可以与 Transcrypt 一起使用?

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

【问题讨论】:

  • Spróbuję coś pokombinować i dam Ci znać (mam nadzieję że zaraz)。
  • “编译并运行”在地址“transcrypt.org/compile”上发送代码,但得到响应“404 页面不存在”(PL: coś im nie działa)
  • 看来您可以使用pip 安装Transcrypt,然后阅读Transcrypt doc 如何生成可以在浏览器中运行的HTML 页面。
  • 我也不能通过网站上的“编译运行”来运行它。
  • 仅供参考:“编译并运行”在移植到新的 Transcrypt 网站时被破坏并已修复。但是,使用 Transcrypt 的常规方法是在本地安装它,如下所示。它是一个编译器,会在项目的 __javascript__ 子目录中生成一个 .js。有关如何将其连接到 HTML 的示例位于 transcrypt.org/examples。 Transcrypt 在本地而不是在浏览器中编译的原因是为了获得精简、快速的页面。 ——雅克·德胡格

标签: python transcrypt


【解决方案1】:

首先:您需要对代码进行一些修改,因为Transcrypt 中的某些函数名称不同或不存在。您必须添加turtle.done() 才能显示结果。

turtle_tree.py

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.up()       # penup()
        myTurtle.back(size) # backward(size)
        myTurtle.down()     # pendown()

#window = turtle.Screen()   # doesn't exists
#window.setup(800,600)      # doesn't exists
#window.bgcolor("white")    # doesn't exists

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

tree(135, myTurtle)

myTurtle.done() # display 

使用pip安装Transcrypt

pip install transcrypt

将 Python 编译成 JavaScript

transcrypt turtle_tree.py

你得到文件夹__javascript__ 和文件turtle_tree.js(和turtle_tree.min.jsturtle_tree.mod.js,但你现在不需要它)

您需要加载turtle_tree.js 并具有&lt;div id="__turtlegraph__"&gt; 的HTML 文件来显示结果。

turtle_tree.html

<!DOCTYPE html>

<html>

<head>
    <meta charset="utf-8"/>
    <title>Turtle Tree</title>

    <style>
        #__turtlegraph__ {
            height: 600px;
            width: 800px;
        }
    </style>
</head>

<body>

    <div id="__turtlegraph__"></div>
    <script src='turtle_tree.js'></script>

</body>

</html>

将 HTML 文件放入__javascript__ 文件夹并在浏览器中打开。


在 Python 3.5.2 / Linux Mint 17.3 / Firefox 48.0 上测试 - 绘制时间为 1 秒(或更短)。

【讨论】:

  • 您好,我感兴趣的是 Transcrypt 的 Turtle 模块中最缺少哪些功能,因此可以添加它们。
  • 您在编译到 JS 时出错。成绩单 turtle_tree.py 应该是“transcrypt”
  • @Monica 你是对的 - 我一直在 transcriptscript :)
  • @JacquesdeHooge 我不知道 - 我第一次使用 Transcrypt。也许所有的别名都像 backward 代表 backpenup 代表 up
  • 谢谢,我会在下一个版本中添加。
猜你喜欢
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
相关资源
最近更新 更多