На четвёртом уроке мы закончим создание редактора уровней. Напишем самую главную функцию для сохранения сделанных изменений в файл. Затем добавим кнопки перехода к следующему и предыдущему уровню. Останется только немного облагородить интерфейс программы.
Дата отправки отчёта:
19 марта 2015 г.
Задание выполнено: за
10 час. 24 мин.
Чему научился:
Вот этот урок по количеству новоприобретенных навыков компенсировал для меня все предыдущие. Новым было практически всё - и сама идея вставлять строки в серединку текстового файла, и сдвиги строк - интересно сделаны, можно будет использовать подобные алгоритмы в прикладных проектах, и создание пустого уровня (правда он у меня почему-то при создании последний везде копирует, и я понял почему, но это мне даже больше понравилось, - человечек и нужное кол-во ящиков и мест есть, остается только перераспределить и перерисовать стены - не буду исправлять).
Что было сложным:
Пожалуй... справиться с такой проблемкой ... с resize... добавлю одну строку - нормально, добавляю один столбец - нормально, добавляю несколько столбцов - все нормально... но как только добавлю 2 или более строк и жму сохранение - вываливает ошибку, что такого элемента массива не существует. и правильно - z=1, delta=2 естественно, элемент[-1] не существует... но откуда он берется, я до сих пор не понял (однако, не теряю надежду, ищу), а проблему одолел прописыванием функции SaveLevel() в функцию добавления строки.
Комментарии:
Урок очень хороший, очень классное объяснение всей идеи и этапов реализации, новые функции очень нравятся, буду использовать в своих наработках. Но положу небольшую ложку дегтя: сам принцип записи всех уровней в один файл, и наработка множества сопутствующих технологий и алгоритмов кажется мне немного сложноватой. Решение сейчас прорабатываю: пробую сделать программку сохранения уровней в таблицу встраиваемой базы данных. Если получится, поделюсь решением.
Научился: Реализации сохранения ;) Good. ;) + Я доделал библиотеку RecourceLoader - теперь она работает, как нужно ;) / + Переделал адаптивность на разрешение - теперь лучше стали 'адаптироваться' размеры PicterBox'ов к разрешению ;) / + Тестил изменения размеров уровня - нашёл баг(У всевышнего он тоже есть), если изменить размер уровня на более большие то выдаст ислючение(IndexOF) - Исправил это добавив в тот самый цикл(переделки массива string на более большой) - написав в условие цикла - (Curr + Delta), вместо Curr ;) / При больших значениях(значит дельта больше) - выходило за рамки массива ;)