Version 4 of Postcard from Switzerland

Updated 2004-07-21 20:00:17

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 - greyexpr 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