#!/usr/bin/perl
# Ex7_2.plx
use warnings;
my @chessboard;
my @back = qw(W S L K Kr L S W);
for (0..7) {
   $chessboard[0]->[$_] = "B" . $back[$_]; # Drugi rzd biaych figur
   $chessboard[1]->[$_] = "BP";            # Biae Piony
   $chessboard[6]->[$_] = "CP";            # Czarne Piony
   $chessboard[7]->[$_] = "C" . $back[$_]; # Drugi rzd czarnych figur

}

while (1) {
# Wywietl szachownic
   for my $i (reverse (0..7)) { # Rzd
       for my $j (0..7) {       # Kolumna
          if (defined $chessboard[$i]->[$j]) {
            print $chessboard[$i]->[$j];
          } elsif ( ($i %2) == ($j %2) ) {
             print "..";
          } else {
             print "  ";
          }
         print " ";   #Koniec komrki
      }
      print "\n";     #Koniec wiersza
   }

   print "\nPole pocztkowe [x,y]: ";
   my $move = <>;
   last unless ($move =~ /^\s*([1-8]),([1-8])/);
   my $startx = $1-1; my $starty = $2-1;
      
   unless (defined $chessboard[$starty]->[$startx]) {
      print "Na tym polu nie ma figury!\n";
      next;
   }
   print "\nPole docelowe [x,y]: ";
   $move = <>;
   last unless ($move =~ /([1-8]),([1-8])/);
   my $endx = $1-1; my $endy = $2-1;
   if ($chessboard[$starty]->[$startx]  =~ /([WB])S/)  {
     my  $color  =  $1;
     print  "Ruch skoczka o kolorze $color\n";

     #W przypadku gdy skoczek przesuwa si na zajte miejsce
     if  (defined  $chessboard[$endy]->[$endx])  {
        #sprawd, czy nie bijesz jednej ze swoich figur
        if  ($chessboard[$endy]->[$endx]  =~  /$color\w/)  {
           print  "Gupcze, nie bij swojej figury!\n";
           next;
        }
     }

     #Na koniec sprawd, czy skoczek wykona ruch w ksztacie litery L
     if  (((abs($endy  -  $starty)==2)  &&  (abs($endx  -  $startx)==1))
         || ((abs($endx  -  $startx)==2)  &&  (abs($endy  -  $starty)==1)))
     {
        print "Dobry ruch\n\n";
     }
     else
     {
        print "Skoczek porusza si po torze w ksztacie litery L\n\n";
     }
   }

   # Przesu figury
   $chessboard[$endy]->[$endx] = $chessboard[$starty]->[$startx];
   # Usu figur ze starego pola
   undef $chessboard[$starty]->[$startx];
}