gbk.py

Created by schraf

Created on April 13, 2024

1.15 KB

Ghee Beom Kim


import turtle
from math import sqrt
from kandinsky import fill_rect

fill_rect(0,0,320,222,(196,207,209))
t = turtle

t.speed(0)
r3 = sqrt(3)
D = 8

ob1 = 0,2,90,r3,60,r3,90,1,120,1,-90,r3/2,-90,1,90,r3/2
ob2 = 0,1,-120,1,-90,2*r3,-90,1,-60,2
ob3 = 0,3,-60,3,-90,r3/2,-90,1,90,r3/2,90,1,-120,1,-90,r3,60,r3
ob4 = 0,2,90,r3,60,r3,90,1

def go(x,y,a):
  t.penup()
  t.setheading(a)
  t.goto(x,y)
  t.fd(D*r3)
  t.right(90)
  t.fd(2*D)
  t.setheading(a + 90)  

def aff(o,n):
  t.pendown()
  for i in range(0,len(o),2):
    t.left(o[i])
    if n == 3 and i == 10:
      (xp, yp) = t.position()
      ap = t.heading()
    t.fd(D*o[i+1])
  if n == 3:
    t.penup()
    t.goto(xp, yp)
    t.setheading(ap)

def tiles(x,y,a):    
  go(x,y,a)    
  aff(ob1,1)
  go(x,y,a) 
  aff(ob2,2)
  go(x,y,a) 
  aff(ob3,3)
  aff(ob4,1)

def shape(u,v):  
  for i in range(6):  
    t.setheading(60 * i)
    t.penup()
    t.goto(u, v)
    t.fd(4 * r3 * D)
    (x, y) = t.position()
    for a in range(3):  
      tiles(x,y,60 * i + 120 * a -60)

for l in range(3):
  for c in range(3):
    shape(-6 * D * (l % 2) * r3 + 12 * D * c  * r3 - 100, (36 - l * 18) * D - 80) 

t.hideturtle()