This commit is contained in:
Administrator 2022-08-28 19:05:46 +03:00
parent a475f6c68f
commit 81dba6991b
2 changed files with 15 additions and 11 deletions

View File

@ -103,7 +103,7 @@ def kill_field(field):
for i in range(10): for i in range(10):
for j in range(10): for j in range(10):
if cells[i][j] == '+': if cells[i][j] == '+':
ship = [(i, j)] ship = set([(i, j)])
queue = [(i, j)] queue = [(i, j)]
killed = True killed = True
while queue: while queue:
@ -114,29 +114,33 @@ def kill_field(field):
killed = False killed = False
break break
elif cells[x - 1][y] == '+': elif cells[x - 1][y] == '+':
ship.append((x - 1, y)) if (x - 1, y) not in ship:
queue.append((x - 1, y)) queue.append((x - 1, y))
ship.add((x - 1, y))
if x < 9: if x < 9:
if cells[x + 1][y] == 'o': if cells[x + 1][y] == 'o':
killed = False killed = False
break break
elif cells[x + 1][y] == '+': elif cells[x + 1][y] == '+':
ship.append((x + 1, y)) if (x + 1, y) not in ship:
queue.append((x + 1, y)) ship.add((x + 1, y))
queue.append((x + 1, y))
if y > 0: if y > 0:
if cells[x][y - 1] == 'o': if cells[x][y - 1] == 'o':
killed = False killed = False
break break
elif cells[x][y - 1] == '+': elif cells[x][y - 1] == '+':
ship.append((x, y - 1)) if (x, y - 1) not in ship:
queue.append((x, y - 1)) ship.add((x, y - 1))
queue.append((x, y - 1))
if y < 9: if y < 9:
if cells[x][y + 1] == 'o': if cells[x][y + 1] == 'o':
killed = False killed = False
break break
elif cells[x][y + 1] == '+': elif cells[x][y + 1] == '+':
ship.append((x, y + 1)) if (x, y + 1) not in ship:
queue.append((x, y + 1)) ship.add((x, y + 1))
queue.append((x, y + 1))
if killed: if killed:
for x, y in ship: for x, y in ship:
cells[x][y] = 'x' cells[x][y] = 'x'

View File

@ -98,7 +98,7 @@ def shoot(request):
new_symb = '+' new_symb = '+'
else: else:
new_symb = '.' new_symb = '.'
player.game.turn = (1 - player.game.turn) player.game.turn = (1 - player.game.turn)
player.game.last_move_ts = timezone.now() player.game.last_move_ts = timezone.now()
player.game.save() player.game.save()
if pos == 0: if pos == 0:
@ -114,7 +114,7 @@ def shoot(request):
player.game.winner = player.number player.game.winner = player.number
player.game.save() player.game.save()
return JsonResponse({ return JsonResponse({
'shot': new_symb == 'x', 'shot': new_symb == '+',
'game_finish': game_finish 'game_finish': game_finish
}) })