Исправил баг проверки завершения игры


1 0

У меня в игре Umbers был баг - игра могла завершиться чуть раньше времени, когда были еще ходы и могла не завершиться даже когда закончились все ходы.

У меня жена начала играть в эту игру и когда увидела баг, то тут же достучалась до разработчика. Сразу же фиксить не было времени, но вчера начал разбираться, исправил, и игра уже доступна для скачивания здесь: Umbers. Скорость утверждения приложения со стороны Apple начинает поражать, все стало очень быстро. 

 А теперь немного о природе бага. Я написал свой собственный класс для Array2D (код на Swift):

struct Array2D {
    let columns: Int
    let rows: Int
    var array: Array
    
    init(columns: Int, rows: Int) {
        self.columns = columns
        self.rows = rows
        array = Array(repeating: nil, count: rows*columns)
    }
    
    subscript(column: Int, row: Int) -> T? {
        get {
            return array[row*columns + column]
        }
        set {
            array[row*columns + column] = newValue
        }
    }
}
 

И код прекрасно работает, если обращаться к нему как tiles[col, row] и именно так я делал везде, кроме метода проверки доступности ходов, где поменял местами tiles[row, col] и это привело к тому, что проверялись неверные элементы. 

Проблема моего класса в том, что он не проверяет на выход за пределы границы. Когда я писал его, то подумал - если я сам использую класс, то никогда не буду пытаться выходить за границы и поэтому при неправильном использовании класс не сообщил о проблеме. Если бы проверка была, то класс при создании массива размерностью tiles[10, 5] сообщил бы об ошибке при попытке обратиться к элементу tiles[4б 9] и я бы нашел ошибку раньше.

Очередной урок себе - делай проверки даже если сам только будешь использовать класс. 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Паника, что-то случилось!!! Ничего не найдено в комментариях. Срочно нужно что-то добавить, чтобы это место не оставалось пустым.

Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне