diff --git a/lpst.pl b/lpst.pl index ebd78eb..7990b45 100644 --- a/lpst.pl +++ b/lpst.pl @@ -3,6 +3,7 @@ use warnings; use strict; +use utf8; my $PAD_AXIS = " "; my $PAD_EVEN = " "; @@ -12,7 +13,15 @@ my $HEX_1 = '-/--\-'; my $HEX_2 = '| __ |'; my $HEX_3 = '| |'; +my $SHADE_CHR = chr(0x2592); +my $ALT_US = chr(0x2017); +my $ALT_PIPE = chr(0x2016); + +my $HL_1 = "|_____"; +my $HL_2 = $ALT_PIPE.$ALT_US.$ALT_US.$ALT_US.$ALT_US.$ALT_US; + my $SUB_CHR = "_"; +my $ALT_SUB_CHR = $ALT_US; my $PREF_1 = substr($HEX_1, -2, 2); my $PREF_2 = ' '; @@ -214,15 +223,20 @@ my %board; # Display pieces #================================================== -sub f_1($){ +sub f_1($$){ my $p = shift; + my $c0 = shift; my $s0; $p =~ s/($P1|$P2)$DIV//; $p .= "_" if length($p) < 2; $s0 = $HEX_2; $s0 =~ s/$SUB_CHR{1,2}/$p/; - + + if($c0 % 2 == 0){ + $s0 =~ s/$SUB_CHR/$ALT_SUB_CHR/g; + } + return $s0; } @@ -245,7 +259,7 @@ sub disp_2($$){ $p = $board{$not}; - return f_1($p); + return f_1($p, $c0); # my ($r0, $c0) = (shift, shift); # return $HEX_2; } @@ -274,11 +288,16 @@ sub disp_y_axis($$$$){ sub add_cell($$$$$){ my ($s0, $s1, $s2, $r0, $c0) = @_; - + $s0 .= disp_1($r0, $c0); $s1 .= disp_2($r0, $c0); $s2 .= disp_3($r0, $c0); + # if($c0 % 2 == 0){ + # $s0 =~ s/ /$SHADE_CHR/g; + # $s1 =~ s/ /$SHADE_CHR/g; + # $s2 =~ s/ /$SHADE_CHR/g; + # } return ($s0, $s1, $s2); } @@ -359,6 +378,13 @@ sub disp_x_axis(){ }(1..11)); $s0 .= "\n"; + $s0 .= $PAD_AXIS; + $s0 .= join( + "", map{ + $_ % 2 == 1 ? $HL_1 : $HL_2 + }(1..11)); + $s0 .= "\n"; + return $s0 } @@ -390,6 +416,10 @@ sub cell_index($){ return ($AXIS{$chr1}, $chr2); } + +# Main starts here! +binmode(STDOUT, ":utf8"); + # Creates a hash of the the form # $board{cell_notation} = piece_enum %board = map { @@ -402,7 +432,7 @@ sub cell_index($){ $AXIS_RV{$_} }(1...11); -$board{"D2"} = $P1.$DIV.$MG_A; +$board{"F5"} = $P1.$DIV.$MG_QS; disp_board();