Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #у нас должен быть массив - поле
- my @pole = ();
- for ( my $i = 0 ; $i < 8 ; $i++ ) {
- for ( my $j = 0 ; $j < 8 ; $j++ ) {
- $pole[$i][$j] = 0;
- }
- }
- sub f {
- my $x = shift; #координаты
- my $y = shift;
- my $sdvig_x = shift; # и на сколько мы их сдвигаем
- my $sdvig_y = shift;
- my @right = ();
- $x += $sdvig_x;
- $y += $sdvig_y;
- while ( $x < 8 && $x >= 0 && $y < 8 && $y >= 0 ) {
- print "($x,$y)\n";
- if ( $pole[$x][$y] == 0 ){
- foreach(@right){ $right=0;}
- last;}
- if ($pole[$x][$y] == $u){
- push @right, $pole[$x][$y];
- $x += $sdvig_x;
- $y += $sdvig_y;
- }
- else {
- foreach(@right) {$right=0;}
- last
- }
- }
- }
- #каждый элимент поля 1 - чёрный,2 - белый,0 - пустой
- #функция которая говорит сделан ли ход
- sub hod {
- #берем юзера и координаты хода
- $u = $_[0];
- $a = $_[1];
- $b = $_[2];
- #проверка строки а, столбца б, диагонали а-1, б-1,, а+1, б+1,, а-1, б+1,, а+1, б-1
- if
- (
- $pole[ $a - 1 ][ $b - 1 ] != 0
- || $pole[ $a + 1 ][ $b + 1 ] != 0
- || $pole[ $a - 1 ][ $b + 1 ] != 0
- || $pole[ $a + 1 ][ $b - 1 ] != 0
- || $pole[ $a + 1 ][$b] != 0
- || $pole[$a][ $b + 1 ] != 0
- || $pole[ $a - 1 ][$b] != 0
- || $pole[$a][ $b - 1 ] != 0
- )
- {
- #проверка в поисках фишки того же юзера
- #проверка по строкам
- f( $a, $b, 1, 0 );
- f( $a, $b, -1, 0 );
- #проверка по столбцам
- f( $a, $b, 0, -1 );
- f( $a, $b, 0, 1 );
- #диагональки
- f( $a, $b, -1, -1 );
- f( $a, $b, 1, 1 );
- f( $a, $b, 1, -1 );
- f( $a, $b, -1, 1 );
- if (@right+0==0 ) {print "Can't do that! \n";}
- else{
- foreach(@right){ $right[$a][$b] = $u;} #меняем состояние нужной клетки
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement