#!/usr/bin/perl -w use strict; use Tk; # by Jack D. improving on some code of mine my ($x, $y); my $iconSize = 20; my ($width, $height) = (10, 10); my ($canvasWidth, $canvasHeight) = ($iconSize+$width*$iconSize, $iconSize+$height*$iconSize); my $w = $canvasWidth+$iconSize; my $h = $canvasHeight+$iconSize; my $MW = MainWindow->new; $MW->geometry($w.'x'.$h); my $MF = $MW->Frame->pack; my $c = $MF->Canvas( -width => $canvasWidth, -height => $canvasHeight )->pack; for ($y = $iconSize; $y < $canvasHeight; $y+=$iconSize) { for ($x = $iconSize; $x < $canvasWidth; $x+=$iconSize) { $c->createRectangle ($x, $y, $x+$iconSize, $y+$iconSize, -fill => '#AFAFAF', -activefill => '#CFCFCF', -tags=>['rect',"row.$y", "col.$x"] ); } } $c->bind('rect', '<Enter>', \&enter ); $c->bind("rect", "<Leave>", \&leave ); MainLoop; sub findtag { my ($canv) = @_; my $id = $canv->find('withtag', 'current'); my @tags = $canv->gettags($id); my ($row) = ( grep /^row\d*/, @tags ); my ($col) = ( grep /^col\d*/, @tags ); return ($row,$col); } sub enter { my ($canv) = @_; my ($r,$c) = findtag($canv); $canv->itemconfigure($r, -fill=>$canv->itemcget($r,-activefill)); $canv->itemconfigure($c, -fill=>$canv->itemcget($c,-activefill)); } sub leave{ my ($canv) = @_; $canv->itemconfigure('rect', -fill=>'#AFAFAF'); # note replaced 'all' with 'rect' above - just in case there are oth +er canvas items :-) } __END__
In reply to Re: gaming board design
by zentara
in thread gaming board design
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |