Задача PythonНеобходимо добавить в класс Board, который приведён в конце урока,

Задачка Python

Нужно добавить в класс Board, который приведён в конце урока, способ board.is_under_attack(row, col, color).

Способ обязан отдавать True, если поле с координатами (row, col) находится под боем желая бы одной фигуры цвета color.

Такой метод нужен, чтобы запретить ход королём под шах.

Необходимо определить классы Knight, Bishop, Queenи класс Board, в который добавлен способ is_under_attack.

Остальные способы и имена параметров Board изменять не необходимо.

Задать свой вопрос
1 ответ

Ответ:

а вообще, нету смысла разыскивать в инете) Прекол лицея конкретно в самостоятельном решении и получении навыков

Разъясненье:

WHITE = 1

BLACK = 2

def opponent(color):

   if color == WHITE:

       return BLACK

   else:

       return WHITE

def correct_coords(row, col):

   return 0 lt;= row lt; 8 and 0 lt;= col lt; 8

class Queen:

   def __init__(self, row, col, color):

       self.row = row

       self.col = col

       self.color = color

   def set_position(self, row, col):

       self.row = row

       self.col = col

   def char(self):

       return 'Q'

   def get_color(self):

       return self.color

   def can_move(self, row, col):

       if not (0 lt;= row lt; 8 and 0 lt;= col lt; 8):

           return False

       if (абс(self.row - row) == abs(self.col - col)) \

               or (абс(self.row - row) * абс(self.col - col) == 0):

           return True

       return False

class Knight:

   def __init__(self, row, col, color):

       self.row = row

       self.col = col

       self.color = color

   def set_position(self, row, col):

       self.row = row

       self.col = col

   def char(self):

       return 'N'

   def get_color(self):

       return self.color

   def can_move(self, row, col):

       if not (0 lt;= row lt; 8 and 0 lt;= col lt; 8):

           return False

       if абс(self.col - col) * абс(self.row - row) == 2 \

               and self.row != row and self.col != col:

           return True

       return False

class Pawn:

   def __init__(self, row, col, color):

       self.row = row

       self.col = col

       self.color = color

   def set_position(self, row, col):

       self.row = row

       self.col = col

   def char(self):

       return 'P'

   def get_color(self):

       return self.color

   def can_move(self, row, col):

       if not (0 lt;= row lt; 8 and 0 lt;= col lt; 8):

           return False

       if self.col != col:

           return False

       if self.color == WHITE:

           direction = 1

           start_row = 1

       else:

           direction = -1

           start_row = 6

       if self.row + direction == row:

           return True

       if self.row == start_row and self.row + 2 * direction == row:

           return True

       return False

class Rook:

   def __init__(self, row, col, color):

       self.row = row

       self.col = col

       self.color = color

   def set_position(self, row, col):

       self.row = row

       self.col = col

   def char(self):

       return 'R'

   def get_color(self):

       return self.color

   def can_move(self, row, col):

       if not (0 lt;= row lt; 8 and 0 lt;= col lt; 8):

           return False

       if self.row != row and self.col != col:

           return False

       return True

class Bishop:

   def __init__(self, row, col, color):

       self.row = row

       self.col = col

       self.color = color

   def set_position(self, row, col):

       self.row = row

       self.col = col

   def char(self):

       return 'B'

   def get_color(self):

       return self.color

   def can_move(self, row, col):

       if not (0 lt;= row lt; 8 and 0 lt;= col lt; 8):

           return False

       if абс(self.row - row) == абс(self.col - col):

           return True

       return False

class Board:

   def __init__(self):

       self.field = []

       for row in range(8):

           self.field.append([None] * 8)

   def current_player_color(self):

       return self.color

   def cell(self, row, col):

       piece = self.field[row][col]

       if piece is None:

           return '  '

       color = piece.get_color()

       c = 'w' if color == WHITE else 'b'

       return c + piece.char()

   def move_piece(self, row, col, row1, col1):

       if not correct_coords(row, col) or not correct_coords(row1, col1):

           return False

       if row == row1 and col == col1:

           return False

       piece = self.field[row][col]

       if piece is None:

           return False

       if piece.get_color() != self.color:

           return False

       if not piece.can_move(row1, col1):

           return False

       self.field[row][col] = None

       self.field[row1][col1] = piece

       piece.set_position(row1, col1)

       self.color = opponent(self.color)

       return True

   def is_under_attack(self, row, col, color):

       for i in range(8):

           for j in range(8):

               if self.field[i][j] is not None:

                   piece = self.field[i][j]

                   if piece.get_color() == color:

                       if piece.can_move(row, col):

                           return True

       return False

, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы
там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо

Русский язык.

Тыныштық күйіндегі карусель 35 с-та 3,0 рад/с бұрыштық жылдамдықпен үдей қозғалады.

Разные вопросы.

Сочинение на тему "Русский язык не сможет умереть!"

Математика.

Приветствую! Меня зовут Станислав, я представляю компанию under.site. Хотел бы предложить интересное решение

Разные вопросы.

Масса трёх одинаковых пакетов чая 180г чему равна масса

Математика.

Газообразный аммиак объёмом 2.24 л (н.у.) был полностью поглощён 14.68 мл

Химия.

Упражнение 2 Выпишите глаголы и вставьте пропущенные буквы

Русский язык.

Радиус окружности, описанной около равностороннего треугольника, равен 6. Найдите сторону треугольника

Геометрия.

Вычислите силу с которой при давлении 100 КПа атмосфера давит на

Физика.

Синтаксический разбор и схема Но мы сказали, что нам ничего не

Русский язык.

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт