]> mj.ucw.cz Git - anim.git/blobdiff - a.pl
Mrazeni scen a obousmerny posun v GUI.
[anim.git] / a.pl
diff --git a/a.pl b/a.pl
index 48a9c04626ae9892d626f8445dd520d0fdbb65df..ca030039033635b8f4b75ca5cffa9149d3ab9158 100755 (executable)
--- 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;
-