diff --git a/HNS/Excercises/ShipCraft/Переделка/ShipField.py b/HNS/Excercises/ShipCraft/Переделка/ShipField.py index 373cbe1..5c52ae4 100644 --- a/HNS/Excercises/ShipCraft/Переделка/ShipField.py +++ b/HNS/Excercises/ShipCraft/Переделка/ShipField.py @@ -44,6 +44,48 @@ class ShipField: return None + def check_killed(self, row, col): + if row < 0 or row > ShipField.field_size: + return + if col < 0 or col > ShipField.field_size: + return + + ship_killed = True + ship_direction = ShipDirection.UNKNOWN + + #check vertical + for r in range(row + 1, ShipField.field_size): + if self.check_ship(r, col): + return False + + elif self.check_empty(r, col): + break + + for r in range(row - 1, -1, -1): + if self.check_ship(r, col): + return False + + elif self.check_empty(r, col): + break + + # проверим горизонталь + for c in range(col + 1, ShipField.field_size): + if self.check_ship(row, c): + ship_direction = ShipDirection.HORIZONTAL + else: + break + + for c in range(col + 1, ShipField.field_size): + if self.check_ship(row, c): + return False + + elif self.check_empty(row, c): + break + return True + + def fill_empty_killed(self, row, col): + pass + def action(self, row, col): self.clear_marker() @@ -56,6 +98,10 @@ class ShipField: elif self.field_mode == ShipMode.SHOOT: shoot_result = self.shoot(row, col) + + if shoot_result == ShootResult.KILLED: + self.fill_empty_killed(row, col) + return shoot_result == ShootResult.UNDEFINED return False @@ -176,6 +222,8 @@ class ShipField: return ShootResult.EMPTY elif (self.field[index]).strip() == "1": self.field[index] = "\\" + if self.check_killed(row, col): + return ShootResult.KILLED return ShootResult.DAMAGED else: return ShootResult.UNDEFINED @@ -185,6 +233,13 @@ class ShipField: # в противном случае фолс return self.field[row * ShipField.field_size + col].strip() == "1" + def check_damaged(self, row, col): + return self.field[row * ShipField.field_size + col].strip() == "\\" + + def check_empty(self, row, col): + cell = self.field[row * ShipField.field_size + col].strip() + return cell == "0" or cell == "" + def check_end(self): return "1" not in self.field diff --git a/HNS/Excercises/ShipCraft/Переделка/__pycache__/ShipField.cpython-39.pyc b/HNS/Excercises/ShipCraft/Переделка/__pycache__/ShipField.cpython-39.pyc index 3801120..3d066aa 100644 Binary files a/HNS/Excercises/ShipCraft/Переделка/__pycache__/ShipField.cpython-39.pyc and b/HNS/Excercises/ShipCraft/Переделка/__pycache__/ShipField.cpython-39.pyc differ