import random, math
import pygame as pg
pg.init()
pg.display.set_caption("Olovka za crtanje")
(sirina, visina) = (600, 400)
prozor = pg.display.set_mode((sirina, visina))

trag = []                    # ranije pozicije nacrtanih piksela
(x, y) = (sirina//2, visina//2) # početna pozicija olovke

# rastojanje između dve tačke
def rastojanje(A, B):
    (xa, ya) = A
    (xb, yb) = B
    return math.sqrt((xb-xa)*(xb-xa) + (yb-ya)*(yb-ya))

def crtaj():
    # postavljanje boje pozadine na belu
    prozor.fill(pg.Color("white"))
    for (x, y) in trag:  #crtamo sve piksele zabeležene u listi trag
        pg.draw.circle(prozor,pg.Color("gray"),(x,y),3)
        

def novi_frejm():
    global x, y
    (xm, ym) = pg.mouse.get_pos() #pozicija miša
    d = rastojanje((xm, ym),(x,y))                # rastojanje od pozicije miša do centra loptice
    v = 5 #brzina crtanja
    if d < v:                                     # ako je loptica veoma blizu miša
        (x, y) = (xm, ym)                         # pomeramo joj centar tačno na poziciju miša
    else:                                         # u suprotnom
        x = x + int(v * (xm - x) / d )            # pomeramo je u pravcu miša
        y = y + int(v * (ym - y) / d )
    if not trag or trag[len(trag)-1] != (x, y):   # ako je trag prazan ili ako je njegov poslednji element različit od trenutne loptice
        trag.append((x,y))                        #   ubacujemo koordinate centra loptice

def obradi_dogadjaj(dogadjaj):
    global trag
    if dogadjaj.type == pg.MOUSEBUTTONDOWN:        # događaj pritiska dugmeta miša
        trag = []                                  # brišemo dosadašnji trag
 
kraj = False
sat = pg.time.Clock()                                  # sat koji određuje broj frejmova u sekundi
while not kraj:
    # crtamo i ažuriramo sadržaj prozora
    crtaj()
    pg.display.update()

    # proveravamo da li je korisnik isključio prozor
    for dogadjaj in pg.event.get():
        if dogadjaj.type == pg.QUIT:
            kraj = True
        else:
            obradi_dogadjaj(dogadjaj)

    # pauziramo do sledeceg frejma
    sat.tick(24)
    novi_frejm()

pg.quit()


# isključujemo rad biblioteke PyGame
