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