Черепаха и нарисуйте дерево с Transcrypt

Сегодня я хочу нарисовать дерево в браузере с Transcrypt. У меня есть код на Python, который работает в Skulpt:

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?

ты можешь помочь мне с этим?

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 

устанавливать Transcrypt с помощью pip

pip install transcrypt

Скомпилируйте Python в JavaScript

transcrypt turtle_tree.py

Вы получаете папку __javascript__ с файлом turtle_tree.js (а также turtle_tree.min.js, turtle_tree.mod.js но тебе это сейчас не нужно)

Вам нужен HTML-файл, который загружает turtle_tree.js и имеет <div id="__turtlegraph__"> отобразить результат.

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 секунду (или меньше).

введите описание изображения здесь

Другие вопросы по тегам