From: Martin Mares Date: Sun, 28 Oct 2007 21:32:35 +0000 (+0100) Subject: Vsechny tri. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=81d978ea3aaa26d789ed7580e640fcb281271466;p=anim.git Vsechny tri. --- diff --git a/AA/Net.pm b/AA/Net.pm index 3b17fdb..6d23d3d 100644 --- a/AA/Net.pm +++ b/AA/Net.pm @@ -17,11 +17,9 @@ sub new($$$$) { 'y' => sub { $v->Get('y') + 80 }, 'size' => 50, 'text' => sub { $v->Get('xs') }, - 'color' => sub { - $v->Get('hint') ? [0,1,0] : - $v->Get('xs') ? [1,0,0] : [1,1,1] - }, + 'color' => sub { $v->Get('xs') ? [1,0,0] : [1,1,1] }, ); + $v->Bind('color', sub { $v->Get('hint') ? [0,0.7,0] : [0.7,0,0.7] }); return $v; } diff --git a/a.pl b/a.pl index 3d8b598..57b3d93 100755 --- a/a.pl +++ b/a.pl @@ -17,6 +17,14 @@ my $ui = AA::UI->new(''); my $back = AA::Background->new('bg'); +my $title = AA::Label->new('title'); +$title->MultiSet( + 'text' => 'Goldbergův algoritmus', + 'size' => 60, + 'x' => 1024/2, + 'y' => 80, +); + my @v; for (my $i=0; $i<5; $i++) { my $v = AA::NetV->new("v$i"); @@ -41,7 +49,7 @@ for (my $i=1; $i<@v; $i++) { my $ii = $i; # need to keep a copy in the current closure $v[$i]->Bind('xs', sub { $e[$ii-1]->Get('f') - (($ii == @v-1) ? 0 : $e[$ii]->Get('f')) }); } -$v[4]->{XS}->Set('color', [1,0,1]); +$v[4]->{XS}->Set('color', [0,1,0]); sub flow($$) { my ($i,$df) = @_; @@ -60,17 +68,20 @@ sub hint($) { } } -my $scenario = [ - sub { flow(0, 5); hint(1); }, - sub { up(1); }, - sub { flow(1, 5); hint(2); }, - sub { up(2); }, - sub { flow(2, 5); hint(3); }, - sub { up(3); }, - sub { flow(3, 5); hint(-1); }, -]; +my $scenario; -if (1) { +if (!@ARGV || $ARGV[0] eq "1") { + $scenario = [ + sub { flow(0, 5); hint(1); }, + sub { up(1); }, + sub { flow(1, 5); hint(2); }, + sub { up(2); }, + sub { flow(2, 5); hint(3); }, + sub { up(3); }, + sub { flow(3, 5); hint(-1); }, + ]; +} elsif ($ARGV[0] eq "2") { + $title->Set('text', "Goldberg podruhé"); for (my $i=0; $i<@v-1; $i++) { $e[$i]->Set('c', 5-$i); } @@ -115,9 +126,46 @@ if (1) { sub { flow(1, -1); hint(1); }, sub { flow(0, -1); hint(-1); }, ]; +} elsif ($ARGV[0] eq "3") { + $title->Set('text', "Goldberg s nejvyšším vrcholem"); + for (my $i=0; $i<@v-1; $i++) { + $e[$i]->Set('c', 5-$i); + } + $scenario = [ + sub { flow(0, 5); hint(1); }, + sub { up(1); }, + sub { flow(1, 4); }, + sub { up(1); }, + sub { up(1); }, + sub { up(1); }, + sub { up(1); }, + sub { up(1); }, + sub { flow(0, -1); hint(2); }, + sub { up(2); }, + sub { flow(2, 3); }, + sub { up(2); }, + sub { up(2); }, + sub { up(2); }, + sub { up(2); }, + sub { up(2); }, + sub { up(2); }, + sub { flow(1, -1); hint(1); }, + sub { flow(0, -1); hint(3); }, + sub { up(3); }, + sub { flow(3, 2); }, + sub { up(3); }, + sub { up(3); }, + sub { up(3); }, + sub { up(3); }, + sub { up(3); }, + sub { up(3); }, + sub { up(3); }, + sub { flow(2, -1); hint(2); }, + sub { flow(1, -1); hint(1); }, + sub { flow(0, -1); hint(-1); }, + ]; +} else { + die "What do you want?\n"; } $ui->RunScenario($scenario, 1); - -exit 0; -