Book Image

Swift 2 By Example

By : Giordano Scalzo
Book Image

Swift 2 By Example

By: Giordano Scalzo

Overview of this book

Swift is no longer the unripe language it was when launched by Apple at WWDC14, now it’s a powerful and ready-for-production programming language that has empowered most new released apps. Swift is a user-friendly language with a smooth learning curve; it is safe, robust, and really flexible. Swift 2 is more powerful than ever; it introduces new ways to solve old problems, more robust error handling, and a new programming paradigm that favours composition over inheritance. Swift 2 by Example is a fast-paced, practical guide to help you learn how to develop iOS apps using Swift. Through the development of seven different iOS apps and one server app, you’ll find out how to use either the right feature of the language or the right tool to solve a given problem. We begin by introducing you to the latest features of Swift 2, further kick-starting your app development journey by building a guessing game app, followed by a memory game. It doesn’t end there, with a few more apps in store for you: a to-do list, a beautiful weather app, two games: Flappy Swift and Cube Runner, and finally an ecommerce app to top everything off. By the end of the book, you’ll be able to build well-designed apps, effectively use AutoLayout, develop videogames, and build server apps.
Table of Contents (18 chapters)
Swift 2 By Example
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
Free Chapter
1
Welcome to the World of Swift
2
Building a Guess the Number App
Index

Pipes!


Now the bird is flapping but there are no enemies, so the game is pretty boring. It's time to add some obstacles: pipes!

Implementing the pipes node

To implement the pipes as they were in the original game, we need two classes: PipesNode, which contains the top and bottom pipes, and Pipes, which creates and handles PipesNode.

Let's begin with Pipes and add it as an actor to GameScene:

//...
let pipes = Pipes(topPipeTexture: "topPipe.png", bottomPipeTexture: "bottomPipe").addTo(screenNode)

actors = [sky, city, ground, bird, pipes]
//...

The Pipes class holds the texture name, and it is added to the node tree:

import SpriteKit

class Pipes {
    private class var createActionKey : String { get {return "createActionKey"} }
    private var parentNode: SKSpriteNode!
    private let topPipeTexture: String
    private let bottomPipeTexture: String
    
    init(topPipeTexture: String, bottomPipeTexture: String) {
        self.topPipeTexture = topPipeTexture
        self.bottomPipeTexture = bottomPipeTexture...