added check_killded

This commit is contained in:
eduard ermakov 2024-07-14 23:23:44 +03:00
parent 7dc71439d8
commit c435561be9
2 changed files with 55 additions and 0 deletions

View File

@ -44,6 +44,48 @@ class ShipField:
return None 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): def action(self, row, col):
self.clear_marker() self.clear_marker()
@ -56,6 +98,10 @@ class ShipField:
elif self.field_mode == ShipMode.SHOOT: elif self.field_mode == ShipMode.SHOOT:
shoot_result = self.shoot(row, col) shoot_result = self.shoot(row, col)
if shoot_result == ShootResult.KILLED:
self.fill_empty_killed(row, col)
return shoot_result == ShootResult.UNDEFINED return shoot_result == ShootResult.UNDEFINED
return False return False
@ -176,6 +222,8 @@ class ShipField:
return ShootResult.EMPTY return ShootResult.EMPTY
elif (self.field[index]).strip() == "1": elif (self.field[index]).strip() == "1":
self.field[index] = "\\" self.field[index] = "\\"
if self.check_killed(row, col):
return ShootResult.KILLED
return ShootResult.DAMAGED return ShootResult.DAMAGED
else: else:
return ShootResult.UNDEFINED return ShootResult.UNDEFINED
@ -185,6 +233,13 @@ class ShipField:
# в противном случае фолс # в противном случае фолс
return self.field[row * ShipField.field_size + col].strip() == "1" 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): def check_end(self):
return "1" not in self.field return "1" not in self.field