diff --git a/battleship/utils.py b/battleship/utils.py index 8932d18..6e4b5f3 100644 --- a/battleship/utils.py +++ b/battleship/utils.py @@ -103,7 +103,7 @@ def kill_field(field): for i in range(10): for j in range(10): if cells[i][j] == '+': - ship = [(i, j)] + ship = set([(i, j)]) queue = [(i, j)] killed = True while queue: @@ -114,29 +114,33 @@ def kill_field(field): killed = False break elif cells[x - 1][y] == '+': - ship.append((x - 1, y)) - queue.append((x - 1, y)) + if (x - 1, y) not in ship: + queue.append((x - 1, y)) + ship.add((x - 1, y)) if x < 9: if cells[x + 1][y] == 'o': killed = False break elif cells[x + 1][y] == '+': - ship.append((x + 1, y)) - queue.append((x + 1, y)) + if (x + 1, y) not in ship: + ship.add((x + 1, y)) + queue.append((x + 1, y)) if y > 0: if cells[x][y - 1] == 'o': killed = False break elif cells[x][y - 1] == '+': - ship.append((x, y - 1)) - queue.append((x, y - 1)) + if (x, y - 1) not in ship: + ship.add((x, y - 1)) + queue.append((x, y - 1)) if y < 9: if cells[x][y + 1] == 'o': killed = False break elif cells[x][y + 1] == '+': - ship.append((x, y + 1)) - queue.append((x, y + 1)) + if (x, y + 1) not in ship: + ship.add((x, y + 1)) + queue.append((x, y + 1)) if killed: for x, y in ship: cells[x][y] = 'x' diff --git a/battleship/views.py b/battleship/views.py index ed27013..9cbc943 100644 --- a/battleship/views.py +++ b/battleship/views.py @@ -98,7 +98,7 @@ def shoot(request): new_symb = '+' else: 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.save() if pos == 0: @@ -114,7 +114,7 @@ def shoot(request): player.game.winner = player.number player.game.save() return JsonResponse({ - 'shot': new_symb == 'x', + 'shot': new_symb == '+', 'game_finish': game_finish })