14. 12. 17
Время на чтение:
Привет всем!
В этой части мы поговорим о JSON и добавим несколько вариантов ландшафта. Если у вас есть вопросы по предыдущем частям или этой, оставляйте в комментариях в блогу. Ну, поехали!
Представьте, у вас есть какой-то массив с полезной информацией, ее вам нужно редактировать, хранить не только в оперативной, но и в постоянной памяти устройства, а главное - быстро и просто переносить из одной в другую, а еще вдобавок между разными носителями, ну и как вишенка на торте - чтобы все эта информация легко прочитывалась человеком.
Заголовок намекает, что все это должен уметь JSON, собственно, так это и есть. По сути, это текстовый файл, поэтому человеку легко его читать и редактировать, переносить между носителями, но главное, что большинство языков программирования умеют с ним работать либо “из коробки”, либо с помощью библиотек, которые написал какой-нибудь добрый энтузиаст.
Вот пример JSON файла:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Структура у него крайне простая, есть несколько уровней, регулируются они скобками, это как многомерный массив, есть ключ и, собственно, сама информация. В нашем примере ключом является “value”, а информацией по этому ключу “File”.
Если все максимально упростить, то JSON выглядит так:
{
“ключ_1” : информация_1,
“ключ_2” : информация_2,
…
“ключ_i” : информация_i
}
Осталось разобраться со вложенностью, тут все просто: информацией может быть сам JSON, поэтому по какому-то ключу мы получим не строку или число, а JSON, например:
{
“ключ_1” : {
“ключ_2.1” : информация_2.1,
“ключ_2.2” : информация_2.2,
…
“ключ_2.i” : информация_2.i
},
“ключ_2” : информация_2,
…
“ключ_i” : информация_i
}
Ключом, кстати, может быть не только строка, но и, например, число.
С теорией разобрались, ну а на практике мы будем использовать JSON для разных целей, сегодня разберем пример с его использованием в качестве генератора карты. Как известно, наше поле состоит из клеточек, между ними могут быть дороги, а также каждая клеточка может иметь свой ландшафт. В дальнейшем структура будет гораздо сложнее, но в качестве демонстрации мощи JSON пойдет и это поле.
Итак, создадим где-нибудь в проекте файл tmp.JSON (потом его удалим, он нужен только для демонстрации), наполнять содержимым будем по следующему алгоритму:
Так как у нас есть 6 рядов по 4 клеточки, то для каждого ряда сделаем JSON с ключом - номером столбца, информацией - JSON с единственным ключом “type”, он будет задавать тип ландшафта (лес, пустыня и тд), для удобства пуска будет только лес или обычный ландшафты. Обычный у нас уже есть, для леса сделаем зеленое изображение клеточки по мануалу прошлой части.
{
"0": {
"0": {
"type": 1
},
"1": {
"type": 1
},
…
"5": {
"type": 0
}
},
…
"3": {
"0": {
"type": 0
},
…
"5": {
"type": 1
}
}
}
// Типы поставим рандомно для чистоты эксперимента
Здесь мы первой строчкой ищем директорию, в которой лежит наш JSON, а дальше поэтапно его распаковываем, так как он вложенный, а потом, собственно, присваиваем клеточкам маски в соответствии с их типом. Если мы все это запустим, выглядеть будет так:
А что если я скажу, что есть куда более удобный способ работать с JSON и вообще многими вещами, которые “из коробки” языка программирования не удобны? Или, например, в языке программирования какой-то функционал не реализован?
Собственно, для этого и были созданы Библиотеки, про которые я уже упоминал в прошлых частях, но об этом мы поговорим в следующий раз, так как тема большая и без ее знания разрабатывать приложения очень трудоемко. Не забывайте подписываться, до следующей недели!
Другие статьи
В этой главе мы продолжим разрабатывать игровое поле, для чего напишем несколько вспомогательных классов. На их примере разберем несколько протоколов и перегрузку операторов, что поможет сильно сократить объем кода и повысить его читабельность.
Цикл статей о первом опыте самостоятельной разработки игры для iOS учеником Московской школы программистов. Часть 2.
В этой главе мы начнем использовать технологию git, поговорим про расширения и сделаем первые шаги по созданию нашего поля боевых действий.
Цикл статей о первом опыте самостоятельной разработки игры для iOS учеником Московской школы программистов. Начало.
"После множественных попыток и экспериментов я все-таки решил написать свою iOS-игру. В этом блоге будет рассказана поэтапная история ее создания. Скажу сразу, до этого момента я пробовал разные проекты, набивал шишки, но приложения, прошедшего путь от самого начала и до логического завершения, ещё не делал. Так что в последующих постах я расскажу вам именно первый опыт разработки полноценного продукта."
Наш юный падаван придумал, как написать iOS-приложение за 30 минут всего одной строчкой заклинания!
Итак, необходимо выполнить всего четыре простых шага:
1. Скачайте бесплатное приложение Xcode для работы с кодом.
2. Создайте новый проект в Xcode (выбрать «платформа iOS», тип приложения «Single View Application»)...