Advertisement
Sabriel

My

Oct 22nd, 2012
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6 1.96 KB | None | 0 0
  1. #у нас должен быть массив - поле
  2. my @pole = ();
  3. for ( my $i = 0 ; $i < 8 ; $i++ ) {
  4.     for ( my $j = 0 ; $j < 8 ; $j++ ) {
  5.         $pole[$i][$j] = 0;
  6.     }
  7. }
  8.  
  9. sub f {
  10.     my $x       = shift;    #координаты
  11.     my $y       = shift;
  12.     my $sdvig_x = shift;    # и на сколько мы их сдвигаем
  13.     my $sdvig_y = shift;
  14.     my @right    = ();
  15.  
  16.     $x += $sdvig_x;
  17.     $y += $sdvig_y;
  18.  
  19.     while ( $x < 8 && $x >= 0 && $y < 8 && $y >= 0 ) {
  20.         print "($x,$y)\n";
  21.         if ( $pole[$x][$y] == 0 ){
  22.         foreach(@right){ $right=0;}
  23.         last;}
  24.         if ($pole[$x][$y] == $u){
  25.          push @right, $pole[$x][$y];
  26.         $x += $sdvig_x;
  27.         $y += $sdvig_y;
  28.         }
  29.         else {
  30.             foreach(@right) {$right=0;}
  31.             last   
  32.         }
  33.         }
  34.     }
  35.  
  36.  
  37.  
  38. #каждый элимент поля 1 - чёрный,2 - белый,0 - пустой
  39. #функция которая говорит сделан ли ход
  40.  
  41. sub hod {
  42.  
  43.     #берем юзера и координаты хода
  44.     $u = $_[0];
  45.     $a = $_[1];
  46.     $b = $_[2];
  47.  
  48. #проверка строки а, столбца б, диагонали а-1, б-1,, а+1, б+1,, а-1, б+1,, а+1, б-1
  49.     if
  50.         (
  51.                $pole[ $a - 1 ][ $b - 1 ] != 0
  52.             || $pole[ $a + 1 ][ $b + 1 ] != 0
  53.             || $pole[ $a - 1 ][ $b + 1 ] != 0
  54.             || $pole[ $a + 1 ][ $b - 1 ] != 0
  55.             || $pole[ $a + 1 ][$b] != 0
  56.             || $pole[$a][ $b + 1 ] != 0
  57.             || $pole[ $a - 1 ][$b] != 0
  58.             || $pole[$a][ $b - 1 ] != 0
  59.         )
  60.         {
  61.  
  62. #проверка в поисках фишки того же юзера
  63.    
  64.         #проверка по строкам
  65.         f( $a, $b, 1,  0 );
  66.         f( $a, $b, -1, 0 );
  67.  
  68.         #проверка по столбцам
  69.         f( $a, $b, 0, -1 );
  70.         f( $a, $b, 0, 1 );
  71.  
  72.         #диагональки
  73.         f( $a, $b, -1, -1 );
  74.         f( $a, $b, 1,  1 );
  75.         f( $a, $b, 1,  -1 );
  76.         f( $a, $b, -1, 1 );
  77.  
  78.         if (@right+0==0 ) {print "Can't do that! \n";}
  79.         else{
  80.         foreach(@right){ $right[$a][$b] = $u;}    #меняем состояние нужной клетки
  81.         }
  82.         }
  83.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement