View difference between Paste ID: aNWM0NbG and DzAWwhH1
SHOW: | | - or go back to the newest paste.
1
# uzduotis http://galvosukykla.lt/failai/mokymas/programavimas/2013-pavasaris/ktug/KD2-pasiruosimas-sokiai.pdf
2
from turtle import *
3
reset()
4
5-
u=1000
5+
6
Y=[0, 100, 200, 100, 150, 200 ]
7
L=['v', 'm', 'v', 'v', 'm', 'm']
8
Vardai=['Tomas', 'Agne', 'Petras', 'Vytas', 'Egle', 'Ona']
9
Merginos=[]
10
Vaikinai=[]
11
12
class Dancer(Turtle):
13
    def dance(self, x, y):
14
        sx, sy = self.pos() # startine pozicija, pries pajudant
15
        self.goto(x, y)     # vaikino judesys
16
17
        dx=x-sx; dy=y-sy    # kiek pajudejo vaikins
18
19
        msx, msy = self.issirinkta.pos()     # merginos start. vieta
20
        self.issirinkta.goto(msx+dx, msy+dy) # merginos judesys
21
22
23
n=len (X);
24
for i in range (n):
25
    ##d = Turtle(); # sukuria piestuka
26
    d = Dancer()  # sukuria sokti poroje galinti piestuka
27
    d.up()
28
    d.goto(X[i], Y[i])  # sokejas nueina i vieta
29
    d.name=Vardai[i]
30
    d.write(d.name)
31
    d.lytis=L[i]
32
    d.poroje=False
33
    if L[i]=='v':
34
        d.ondrag(d.dance) # susiejam tempima pele su poros judejimu
35
        d.shape('square')
36
        Vaikinai.append(d)
37
    if L[i]=='m':
38
        d.shape('circle')
39
        Merginos.append(d)
40
    d.shapesize(0.5)
41
42
43
for v in Vaikinai:
44
    v.color('blue')
45
for m in Merginos:
46
    m.color('yellow')
47
48
49
def renkasi_vaikinai(M, V):
50
    for v in V:
51
        print(v.name)
52
        u=1000  # maziausio atstumo kintamasis (pradine reiksme, kad galetu mazeti)
53
        for m in M:
54
            print(m.name, m.pos(), v.distance(m), m.poroje ) # spausd merginos varda, vieta, atstuma iki jos, ir ar poroje
55
            # jeigu mergina dar laisva ir pakankamai arti
56
            if m.poroje==False and v.distance(m) < u:
57
                u = v.distance(m)  # isidemim atstuma iki jos
58
                v.issirinkta = m   # isidemim mergina
59
        print("issirinko", v.issirinkta.name)  # spausdinam vaikino issirinktosios varda
60
        v.issirinkta.poroje=True   # pazymim, kad mergina jau nelaisva
61
        
62
        color("blue") # nubreziam linija
63
        up();   goto(v.pos())  # nuo vaikino
64
        down(); goto(v.issirinkta.pos())  #iki merginos
65
66
renkasi_vaikinai(Merginos, Vaikinai) #iskvieciam "poravimosi" funkcija
67
68
mainloop() # kad leistu peles veiksmus