scene = canvas(
     width=800, height=800,
     center=vector(0,1,0), background=color.black)

scene.ambient = color.gray(0.4)
scene.lights = [distant_light(direction=vector(0.22,0.44,0.88), color=color.gray(0.7)),
                distant_light(direction=vector(-0.88,-0.22,-0.44), color=color.gray(0.3)),
                distant_light(direction=vector(-0.22,-0.44,-0.88), color=color.gray(0.5)),
                distant_light(direction=vector(0.88,0.22,0.44), color=color.gray(0.3))]

sf = 1 / sqrt(2)

kocka1 = box(pos=vector(0,0,0), axis=vector(1,0,0), 
             size=vector(1,1,1), color=vector(1,0.5,0))

kocka2 = box(pos=vector(0,0.5+sf/2,0), axis=vector(1,0,0), 
             size=vector(sf,sf,sf), color=vector(0,0.9,0))
kocka2.rotate(angle=pi/4, axis=vector(0,1,0))

kocka3 = box(pos=vector(0,0.5+sf+pow(sf,2)/2,0), axis=vector(1,0,0), 
             size=vector(pow(sf,2),pow(sf,2),pow(sf,2)), color=vector(0,0.6,0.8))

kocka4 = box(pos=vector(0,0.5+sf+pow(sf,2)+pow(sf,3)/2,0), axis=vector(1,0,0), 
             size=vector(pow(sf,3),pow(sf,3),pow(sf,3)), color=vector(1,1,0))
kocka4.rotate(angle=pi/4, axis=vector(0,1,0))

kocka5 = box(pos=vector(0,0.5+sf+pow(sf,2)+pow(sf,3)+pow(sf,4)/2,0), axis=vector(1,0,0), 
             size=vector(pow(sf,4),pow(sf,4),pow(sf,4)), color=vector(1,0,1))
             
kocka6 = box(pos=vector(0,0.5+sf+pow(sf,2)+pow(sf,3)+pow(sf,4)+pow(sf,5)/2,0), axis=vector(1,0,0), 
             size=vector(pow(sf,5),pow(sf,5),pow(sf,5)), color=vector(0.2,0.85,0.5))
kocka6.rotate(angle=pi/4, axis=vector(0,1,0))

kocka7 = box(pos=vector(0,0.5+sf+pow(sf,2)+pow(sf,3)+pow(sf,4)+pow(sf,5)+pow(sf,6)/2,0), axis=vector(1,0,0), 
             size=vector(pow(sf,6),pow(sf,6),pow(sf,6)), color=vector(1,0.5,0.5))

scene.append_to_caption('          ')
def transparency(b):
    if b.checked:
        kocka1.opacity = 0.5
        kocka2.opacity = 0.5
        kocka3.opacity = 0.5
        kocka4.opacity = 0.5
        kocka5.opacity = 0.5
        kocka6.opacity = 0.5
        kocka7.opacity = 0.5
    else:
        kocka1.opacity = 1
        kocka2.opacity = 1
        kocka3.opacity = 1
        kocka4.opacity = 1
        kocka5.opacity = 1
        kocka6.opacity = 1
        kocka7.opacity = 1
checkbox(bind=transparency, text='Transparent')

scene.append_to_caption("\n\n Broj kocki: ")
def broj_kocki(s):
    wt.text = '{:1.0f}'.format(s.value)
    if (s.value == 1):
        kocka1.visible = True
        kocka2.visible = False
        kocka3.visible = False
        kocka4.visible = False
        kocka5.visible = False
        kocka6.visible = False
        kocka7.visible = False
    elif (s.value == 2):
        kocka1.visible = True
        kocka2.visible = True
        kocka3.visible = False
        kocka4.visible = False
        kocka5.visible = False
        kocka6.visible = False
        kocka7.visible = False
    elif (s.value == 3):
        kocka1.visible = True
        kocka2.visible = True
        kocka3.visible = True
        kocka4.visible = False
        kocka5.visible = False
        kocka6.visible = False
        kocka7.visible = False
    elif (s.value == 4):
        kocka1.visible = True
        kocka2.visible = True
        kocka3.visible = True
        kocka4.visible = True
        kocka5.visible = False
        kocka6.visible = False
        kocka7.visible = False
    elif (s.value == 5):
        kocka1.visible = True
        kocka2.visible = True
        kocka3.visible = True
        kocka4.visible = True
        kocka5.visible = True
        kocka6.visible = False
        kocka7.visible = False
    elif (s.value == 6):
        kocka1.visible = True
        kocka2.visible = True
        kocka3.visible = True
        kocka4.visible = True
        kocka5.visible = True
        kocka6.visible = True
        kocka7.visible = False
    elif (s.value == 7):
        kocka1.visible = True
        kocka2.visible = True
        kocka3.visible = True
        kocka4.visible = True
        kocka5.visible = True
        kocka6.visible = True
        kocka7.visible = True
    
sl = slider(min=1, max=7, value=7, step=1, length=220, bind=broj_kocki, right=15)

wt = wtext(text='{:1.0f}'.format(sl.value))
