42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
#
|
|
# Code under the MIT license by Alexander Pruss
|
|
#
|
|
|
|
import lsystem
|
|
from mcturtle import *
|
|
from sys import argv
|
|
COLORS = (WOOL_WHITE,HARDENED_CLAY_STAINED_WHITE,WOOL_PINK,WOOL_MAGENTA,WOOL_PURPLE,HARDENED_CLAY_STAINED_LIGHT_BLUE,HARDENED_CLAY_STAINED_CYAN,HARDENED_CLAY_STAINED_PURPLE,HARDENED_CLAY_STAINED_LIGHT_GRAY,HARDENED_CLAY_STAINED_MAGENTA,HARDENED_CLAY_STAINED_PINK,HARDENED_CLAY_STAINED_RED,WOOL_RED,REDSTONE_BLOCK,HARDENED_CLAY_STAINED_ORANGE,WOOL_ORANGE,HARDENED_CLAY_STAINED_YELLOW,WOOL_YELLOW,WOOL_LIME,HARDENED_CLAY_STAINED_LIME,HARDENED_CLAY_STAINED_GREEN,WOOL_GREEN,HARDENED_CLAY_STAINED_GRAY,WOOL_BROWN,HARDENED_CLAY_STAINED_BROWN,WOOL_GRAY,HARDENED_CLAY_STAINED_BLUE,WOOL_BLUE,WOOL_CYAN,WOOL_LIGHT_BLUE,WOOL_LIGHT_GRAY)
|
|
t = Turtle()
|
|
t.pendelay(0)
|
|
t.turtle(None)
|
|
t.penblock(STAINED_GLASS_PURPLE)
|
|
t.gridalign()
|
|
|
|
# rules from
|
|
# http://kanga.nu/~claw/blog/2008/11/16/game-design-tools/inkscape-l-systems-svg-penrose-and-other-tilings/
|
|
rules = { 'W': '+++X--F--ZFX+',
|
|
'X': '---W++F++YFW-',
|
|
'Y': '+ZFX--F--Z+++',
|
|
'Z': '-YFW++F++Y---',
|
|
}
|
|
axiom = 'W'
|
|
|
|
colorIndex = 0
|
|
def go():
|
|
global colorIndex
|
|
t.penblock(COLORS[colorIndex % len(COLORS)])
|
|
colorIndex += 1
|
|
t.go(6)
|
|
|
|
|
|
|
|
dictionary = {
|
|
'F': go,
|
|
'+': lambda: t.yaw(-30),
|
|
'-': lambda: t.yaw(30),
|
|
'[': lambda: t.push(),
|
|
']': lambda: t.pop()
|
|
}
|
|
|
|
lsystem.lsystem(axiom, rules, dictionary, 6)
|