X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=a.pl;h=ca030039033635b8f4b75ca5cffa9149d3ab9158;hb=a670bf0d09877b50a6c69718b0b327a1e10c5c0e;hp=48a9c04626ae9892d626f8445dd520d0fdbb65df;hpb=bc773f70fb1411290ccccd2b77694a5ca3eaa03f;p=anim.git diff --git a/a.pl b/a.pl index 48a9c04..ca03003 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"); @@ -53,64 +61,111 @@ sub up($) { $v[$i]->Set('h', $v[$i]->Get('h') + 1); } -my $scenario = [ - sub { flow(0, 5); }, - sub { up(1); }, - sub { flow(1, 5); }, - sub { up(2); }, - sub { flow(2, 5); }, - sub { up(3); }, - sub { flow(3, 5); }, -]; +sub hint($) { + my ($h) = @_; + for (my $i=0; $i<@v; $i++) { + $v[$i]->Set('hint', $i == $h); + } +} + +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 v úzkých"); for (my $i=0; $i<@v-1; $i++) { $e[$i]->Set('c', 5-$i); } $scenario = [ - sub { flow(0, 5); }, + sub { flow(0, 5); hint(1); }, sub { up(1); }, - sub { flow(1, 4); }, + sub { flow(1, 4); hint(2); }, sub { up(2); }, - sub { flow(2, 3); }, + sub { flow(2, 3); hint(3); }, sub { up(3); }, sub { flow(3, 2); }, sub { up(3); }, - sub { flow(2, -1); }, + sub { flow(2, -1); hint(2); }, sub { up(2); }, - sub { flow(1, -1); }, + sub { flow(1, -1); hint(1); }, sub { up(1); }, sub { up(1); }, sub { flow(1, 1); }, sub { up(1); }, sub { up(1); }, sub { up(1); }, - sub { flow(0, -1); }, + sub { flow(0, -1); hint(2); }, sub { up(2); }, - sub { flow(2, 1); }, + sub { flow(2, 1); hint(3); }, sub { up(3); }, sub { up(3); }, - sub { flow(2, -1); }, + sub { flow(2, -1); hint(2); }, sub { up(2); }, sub { up(2); }, - sub { flow(2, 1); }, + sub { flow(2, 1); hint(3); }, sub { up(3); }, sub { up(3); }, - sub { flow(2, -1); }, + sub { flow(2, -1); hint(2); }, sub { up(2); }, sub { up(2); }, sub { flow(2, 1); }, - sub { flow(1, -1); }, - sub { flow(0, -1); }, + sub { flow(1, -1); hint(1); }, + sub { flow(0, -1); hint(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); }, + ]; +} 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 { flow(2, -1); }, - sub { flow(1, -1); }, - sub { flow(0, -1); }, + 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; -