added check_killded
This commit is contained in:
parent
7dc71439d8
commit
c435561be9
|
@ -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
|
||||
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue