Не могу реализовать логику программы, счетчик всегда обновляется на 0
Делаю небольшую логику морского боя, реализовал убийство корабля если он занимает 1 клетку, а вот если занимает 2 клетки, то выходит так что счетчик обновляется всегда на 0, и я не убиваю его а просто попадаю, может есть у кого мысли как сделать так чтобы счетчик не обновлялся на 0? Когда я делаю второй выстрел я обновляю координаты (coordinates) на новые
let ship1 = [(x: 9, y: 9)] // координаты первого корабля
let ship2 = [(x: 5, y: 9), (x: 6, y: 9)] // координаты второго корабля
let ships = [ship1, ship2] // объединение кораблей в один массив
var shots = 0 // выстрелы
let coordinates: (x: Int, y: Int) = (5,9) // координаты выстрела
for ship in ships {
for cell in ship {
switch coordinates {
case let (x, y) where x == cell.x && y == cell.y:
shots += 1
if shots == ship.count {
print("Ship \(ship) down!")
} else {
print("Ship \(ship) wounded!")
}
default:
break
}
}
}
shots == 0 ? print("Missed") : print()
Ответы (1 шт):
Автор решения: schmidt9
→ Ссылка
Если этот код у вас находится внутри какого-то метода, то можно сделать переменную shots глобальной или свойством класса, чтобы она не сбрасывалась при каждом запуске вышеприведенного кода, ну и соответственно потом обнулять ее, если корабль убит, например вот так
if shots == ship.count {
print("Ship \(ship) down!")
shots = 0
}