Top.Mail.Ru
Личный кабинет +7 (495) 150-64-32

Создание игры для iOS. Часть 5

Всем привет!

В этом выпуске наше поле обзаведется дорогами, и мы поговорим о подключении сторонних библиотек.

Дороги

Начнем с визуальной составляющей.
Пока у нас есть два вида дорог: вертикальные, горизонтальные, возможно, со временем добавятся еще два диагональных типа. У дорог будут разные скины. Еще нам нужно знать, между какими клеточками проложена эта дорога.

init(cells: (FID, FID)) {
self.x = cells.1.x - cells.0.x
self.y = cells.1.y - cells.0.y
}

И переменную типа (вертикальная/горизонтальная/ …):

var type: Int {
return (x == 0) ? 1 : ((y == 0) ? 0 : (x + y == 0) ? 2 : 3)
}

Теперь к самому классу дороги - так как все его первоначальные свойства мы уже разобрали, то имеет смысл привести только его реализацию:

class Pass: SKSN {
var orientation: Int = 0 // 0 - horizontal, 1 - vertical
var type: Int = 0
var cells: (FID, FID) = (FID(), FID())

var imgName: String {
return "Pass." + String(Direction(cells: cells).type) + "." + String(type)
}

init (cells: (FID, FID), cellSize: CGSize, type: Int) {
self.type = type
self.orientation = Direction(cells: cells).type
self.cells = cells
super.init(texture: SKTexture(imageNamed: imgName), color: UIC.clear, size: cellSize)
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

Здесь imgName - генератор названия изображения по параметрам нашего пути,
вот пример возвращаемого значения: “Pass.0.0”

Теперь создадим два скина: вертикальный и горизонтальный. Сохраняем их в Assets.xcassets

 разработка, игра

полоса  полоса 

И проверим, что у нас получилось. Для этого в FieldScene после генерации клеточек добавим следующие строчки:

let pass1 = Pass(cells: (FID(1, 1), FID(2, 1)), cellSize: field.cellSize, type: 0)
pass1.position.x = (field.scheme[1][1].position.x + field.scheme[2][1].position.x) / 2
pass1.position.y = (field.scheme[1][1].position.y + field.scheme[2][1].position.y) / 2
let pass2 = Pass(cells: (FID(3, 3), FID(3, 4)), cellSize: field.cellSize, type: 0)
pass2.position.x = (field.scheme[3][3].position.x + field.scheme[3][4].position.x) / 2
pass2.position.y = (field.scheme[3][3].position.y + field.scheme[3][4].position.y) / 2
self.addChild(pass1)
self.addChild(pass2)
// Эти строчки нужны исключительно для теста

Запускаем проект, видим, что все отрабатывает корректно.

Теперь поговорим о сторонних библиотеках.

Помните, как неудобно было работать с JSON, используя стандартные инструменты языка? К счастью, создатели SwiftyJSON обо всем позаботились.

Итак, как же подключать сторонние библиотеки:

  1. Установить/обновить CocoaPods, для этого в терминале пишем sudo gem install cocoapods

    код

  2. Теперь в терминале переходим в директорию проекта (папка, где лежит .xcodeproj), в моем случае cd Desktop/Grasp/Grasp/
  3. Находясь в директории проекта, в терминале пишем pod init (Это создает Podfile для нашего проекта)
  4. Открываем этот Podfile, например, nano Podfile
  5. Изменяем его содержимое на следующее:
    platform :ios, '8.0' // Зависит от вашего проекта
    use_frameworks!

    target 'Grasp' do
    pod 'SwiftyJSON' // здесь пишем список библиотек, которые хотим установить
    end
    // Не забудьте проверить совместимость библиотек с вашей версие iOS

    код

  6. Сохраняем Podfile, а в терминале в директории проекта вызываем pod install

    коды игры

Все, готово! Теперь, заметим, что в директории проекта появился файл .xcworkspace, теперь работать нужно в нем, а не в .xcodeproj

коды


На этом все, а в следующем выпуске мы сделаем первую версию генератора карт и подробнее разберем библиотеку SwiftyJSON.

Хочу поступить

Другие статьи

Все статьи