if($_[1]->num_cards() <= 0) { # deck out of cards $_[0]->delete($_[4]); # Delete card back photo $_[0]->delete($_[3]); # Delete card back image $_[3] = ($_[0])->createRectangle(15,72,84,165); $deleted = 1; $_[1]->take_from($_[2]); $_[2] = Pile->new({ max => 52 }); ($_[0])->bind($_[3], "", [\&dk_clk, $_[1], $_[2], $_[3], $_[4]]); } #### $canvas->bind($dk_img, "", [\&frst_clk, $deck, $waste, $dk_img, $back]); my $wst_imgs = []; my $wst_crds = []; sub frst_clk { my $i = 0; my $min = min(2,$_[1]->num_cards()); $wst_crds = []; for (0..$min) { $wst_crds->[$_] = $_[1]->remove_card; } my $c; for(0..$min) { ($wst_crds->[$_])->where($_[2]); ($wst_crds->[$_])->state('up'); $c = ($wst_crds->[$_])->label(); my $path = "$card_dir\\$c.$ext"; my $p = ($_[0])->Photo( -file => $path, -format => 'gif', ); push @$wst_imgs, ($_[0])->createImage(126+15*$i++,118, -image => $p); } $_[2]->fill_pile($wst_crds); ($_[0])->bind($_[3], "", [\&dk_clk, $_[1], $_[2], $_[3], $_[4]]); } my $deleted = 0; sub dk_clk { my $i = 0; if($deleted) { $_[0]->delete($_[4]); # Delete card back photo $_[0]->delete($_[3]); # Delete card back image # Recreate them with desired properties $_[4] = ($_[0])->Photo(-file => "$card_dir\\b1fv.$ext", -format => 'gif'); $_[3] = ($_[0])->createImage(50,120, -image => $_[4]); $deleted = 0; for(@$wst_imgs) { $_[0]->delete($_); } $wst_imgs = []; ($_[0])->bind($_[3], "", [\&dk_clk, $_[1], $_[2], $_[3], $_[4]]); } for(@$wst_imgs) { $_[0]->coords($_, 126,118); } $wst_crds = []; $wst_imgs = []; my $min = min(2,$_[1]->num_cards()); for (0..$min) { $wst_crds->[$_] = $_[1]->remove_card; } my $c; for(0..$min) { last && print 'Whoa!' unless $wst_crds->[$_]; ($wst_crds->[$_])->where($_[2]); ($wst_crds->[$_])->state('up'); $c = ($wst_crds->[$_])->label(); # (($wst_crds->[$_])->[0])->where($_[2]); # (($wst_crds->[$_])->[0])->state('up'); # $c = (($wst_crds->[$_])->[0])->label(); my $path = "$card_dir\\$c.$ext"; my $p = ($_[0])->Photo( -file => $path, -format => 'gif', ); push @$wst_imgs, ($_[0])->createImage(126+15*$i++,118, -image => $p); } $_[2]->fill_pile($wst_crds); if($_[1]->num_cards() <= 0) { # deck out of cards $_[0]->delete($_[4]); # Delete card back photo $_[0]->delete($_[3]); # Delete card back image $_[3] = ($_[0])->createRectangle(15,72,84,165); $deleted = 1; $_[1]->take_from($_[2]); $_[2] = Pile->new({ max => 52 }); ($_[0])->bind($_[3], "", [\&dk_clk, $_[1], $_[2], $_[3], $_[4]]); } # do some drag/drop stuff here once know-how obtained :) } sub min { $_[0] < $_[1] ? $_[0] : $_[1]; }