wenn 0 { [ Richard Suchenwirth ] - keine Züge dieses Wochenende, aber ja, mehr Segeltuchanimations. Von einer Skireise zu Laax, ist die Schweiz, hier mit Schuld verzögert meine besten Grüße zu allen Tcl-Freunden in der Welt: ein Gebirgserholungsort mit funikulärem, skiers und snowboarders. Unfälle geschehen: irgendein Tumble unten und müssen einige Sekunden stillstehen. Sonne und Sterne sind auch (einige) um kümmert worden. Durchläufe als Tclet auch. Genießen Sie! [ SS ] - Hey! dieses ist: wirklich nett), Ich zeige es meinem Sohn, der normalerweise diese Art von Animations mag. [ http://mini.net/files/postcard.jpg ] } der procsonne der procpolyargs { eval c $$args verursachen Polygon }, stellte procsonne { x y r } { $$x $$y c verursachen $$x+$r Oval [ expr $$y+$r ] [ expr ] - Füllerot - Umbausonne stellte::g(sun,dy) -1 Sonne ' unterere Sonne ein des c }, ' { } { Sternc-Bewegungssonne 1 $::g(sun des c unterere, gesetztes helles des upvar des g(bright) #0 des dy) hellen Bruches des foreach { x0 y0 x1 y1 } [ cbboxsonne ] [ expr 256-$y0 ] bgcolor ein [ Farbe [ expr $$bright/1.5 ] [ expr $$bright/1.5 ] $$bright ] füllen cconfig - $$bgcolor Hintergrund, wenn $$bright<100 { } { citemconfigstern - grey[expr 100-$bright/3 ] }, sonst { citemconfigstern - Fülle $$bgcolor } stellen Sie suncolor [ Farbe 255 [ expr { $$bright*1 } ] 0 ] citemconfigsonne ein - Fülle $$suncolor - gesetztes $$suncolor Papier.lösekorotron 1000 der umreiß, wenn { [ lindex [ cbboxsonne ] 3]<0 } { stellen Sie c-Bewegungssonne 200 Papier.lösekorotrones 10000 0 Satz::g(sun,dy) 1 } ein, wenn { [ lindex [ cbboxsonne ] 1]>200 } { stellen Sie c-Bewegungssonne -700 Papier.lösekorotrones 5000 0 Satz::g(sun,dy) -1 } ein, nach $$dt Sonne' } procsternen { n } { für { stellen Sie i 0 } ein { $$i<$n } { erhöhen Sie i } { stellen Sie x [ expr rand()*640 ] einstellt y ein [ c des expr rand()*200 ] verursachen Sie Oval $$x $$y [ expr $$x+2 ] [ expr $$y+2 ] - die Fülle weiß \ - der Umbaustern} } proc-Farbe der umreiß { } - Format { r g b } { foreach I { r g b } { wenn [ ein $$i]<0 stellen Sie { $$i stellen Sie ein 0}, wenn [ $$i]>255 stellen Sie { $$i stellen Sie 255 ein } ein, }, # %02x%02x%02x [ expr round($r) ] [ expr round($g) ] [ expr round($b) ] } das proc funikulär { x0 y0 x1 y1 } { c verursachen Linien- $$x0 $$y0 $$x1 $$y1 c verursachen rect $$x0 [ expr $$y0+4 ] [ expr $$x0+30 ] [ expr- $$y0+18 ], \ - Füllerot - fcar c des Umbaus verursachen rect [ expr $$x0+14 ] [ expr $$y0-10 ] [ expr $$x0+16 ] [ expr- $$y0+5 ] \ - Füllegrau - fcar Poly des Umbaus [ expr $$x0+8 ] [ ] $$y0-4 des expr ] [ $$x0+6 expr ] [ $$y0-2 expr \ [ expr $$x0+20 ] [ ] $$y0-14 des expr ] [ $$x0+22 expr ] [ $$y0-12 expr \ - Fülleschwarzes - fcar Satz x [ expr ] $$x0+2 des Umbaus stellte foreach I { $$y0+7 1 2 3 ein } y [ expr ] { c verursachen rect $$x $$y [ expr $$x+8 ] [ expr $$y+6 ] - die Fülle weiß \ - der fcar Umbau erhöhte x 9 }, Poly5 388 5 360 42 332 42 388 - Füllesäurenummer - umreißen schwarzes c verursachen Sie rect 9 370 16 380 - weißes c der Fülle verursachen rect 19 370 26 380 - Fülle, die weißes c rect 29 370 6 380 - Fülle weiße Poly445 60 475 65 475 100 445 120 - Fülle grey80 \ - umreißschwarzes - Umbauberg einstellte::g(funicular,dir) 1 verursachen, nachdem stellte 0 funikuläres ' } funikuläres proc ' { } { stellen Sie dir $::g(funicular ein, die fcar dir)cbewegung [ expr { 3*$dir } ] [ expr { - 2*$dir } ] bbox [ das cbbox fcar ] einstellte Papier.lösekorotron 100 wenn ein { [ lindex $$bbox 0]<10||[ lindex $$bbox 2]>470 } { stellen Sie::g(funicular,dir) ein [ expr { $$dir*-1 } ] stellen Sie Schriftkegel Papier.lösekorotrones ein 6000, wenn { [ $$bbox lindex 2]>470 } { foreach I { 0 2000 4100 6200 8500 10100 12345 14567 16789 } { $$i nach skier } } elseif $$dir==1 { && $::g(bright)<180 } { stellen Sie Papier.lösekorotron 20000 ein }, } $$dt nach funikulärer ' } procmarkierungsfahne { x y h } { stellen Sie c y1 $$y-$h [ expr ] verursachen $$x $$y $$x $$y1 Linien- c verursachen ein $$x $$y1 rect [ $$x+12 expr ] [ $$y1+12 expr ] - rotes c der Fülle verursachen Sie Text [ $$x+6 expr ] [ $$y1+6 expr ] - Text+ \ - { Helvetica12 fett } - füllen Sie Weiß} proc random:select L { lindex [ expr { int(rand()*[llength$$ln ])}]} das skier proc des procsomecolor { } { random:select { rotes gelbes blaues grünes purpurrotes rosafarbenes orange graues Schwarzes } } { } { stellen Sie Kennzeichnung s:[expr { int(rand()*10000) } ein, ] stellte Ski [ somecolor ] wenn { rand()<0.6 } { c verursachen Linie 0 -10 10 0 11 0 - Fülle $$ski - Fülle der Breite 2 - $$id Umbau- c verursachen Linie 4 -14 14 -4 15 -4 - $$ski - Breite 2 - Umbau- $$id c verursachen Linie 2 -15 -5 -15 - Umbau- $$id c verursachen Linie 12 -19 0 -19 - Umbau $$id einstellte::g($id,dx) 1 }, sonst ein { Poly1 -3 12 -13 15 -10 2 0 - Fülle $$ski - umreißen Sie [ somecolor ] - Umbau $$id stellte::g($id,dx) } c -1 verursachen Linie 5 -5 6 -16 7 -16 9 -9 - Fülle [ somecolor ] - Fülle der Breite 2 - $$id verursachen gesetztes ein c der Schuhe des Umbaus [ random:select { schwarzes blaues purpurrotes Rot } ] Linie 5 -5 6 -3 - $$shoes - Breite 2 - Umbau- $$id c verursachen Linie 9 -9 10 -7 - Fülle $$shoes - Fülle der Breite 2 - $$id Umbau- c verursachen Linie 2 -15 6 -21 6 -16 8 -16 8 -21 12 -19 \ - [ somecolor ] - Breite 2 - Umbau- $$id c verursachen Oval 6 -24 8 -21 - Fülleorange - etikettieren Sie $$id cbewegung $$id 478 die Erhöhung mit 107 c $$id Berg stellte::g($id,n) 0 Satz::g($id,accident) 0 skier ' $$id } proc skier ' ein { Kennzeichnung } { upvar #0::g($id,n) n gesetztes Papier.lösekorotron 40 des upvar #0::g($id,accident) dx des Akkumulators upvar #0::g($id,dx); gesetztes dy 1 wenn { [ lindex [ cbbox $$id ] 1]>400 } { clöschung $$id; Rückkehr } wenn { rand()<0.001 } { erhöhen Sie Akkumulator }, wenn $$acc { stellen Sie leichten Schlag -1 -1 $$id Papier.lösekorotrones 200; # ein Unfall: die upside-down Umdrehung erhöhte Akkumulator; gesetzte dy 6 wenn { $$acc>8 } { stellen Sie Papier.lösekorotron 5000 ein; stellen Sie Akkumulator 0} } sonst ein { erhöhen Sie n wenn { $$n>10 && rand()<0.05 } { leichter Schlag $$id; stellen Sie cbewegung n 0} } ein, $$id $$dx $$dy nachdem $$dt skier ' $$id } Rückkehr des procleichten Schlages { Umbau { xflip -1,05 } { yflip 1,05 } } { Bruch des foreach { x0 y0 x1 y1 } [ $$tag cbbox ], wenn![info x0 besteht ], xm einstellt [ expr { ($$x0+$x1)/2. } ] stellen Sie ym ein [ expr { ($$y0+$y1)/2. } ] cskala $$tag $$xm $$ym $$xflip $$yflip stellte::g($tag,dx) ein [ expr { $::g($tag, dx)*-1 } ] } #---------------------------------------------------------, wenn![winfo clöschung des c besteht ] { Segeltuchc - Breite 640 - Höhe 400 - Hintergrundlightbluesatzc-Bindungsc < 1 > [ Listenquelle [ Info-Index ] ] } alles foreach I [ nach Info ] { nach Löschen, $$i }, Sonne 0 der Sterne 50 100 40 Poly0 400 0 100 40 120 100 150 160 130 200 150 250 110 300 130 350 80 \ 700 500 - Fülle grey95 Poly0 400 0 370 170 380 330 200 360 120 420 70 540 90 570 60 700 200 \ 700 400 - füllen Sie Weiß - Umbaugebirgsfunikuläre 20 360 470 60 Markierungsfahne 160 380 40 skier ---- [ Kategorienspielwaren ]|[ künste und Fertigkeiten von Tcl-TK programmierend ]