新プログラミング言語Swiftでを使って作られたFlappyBirdサンプルについて

WWDCの中で最もインパクトが強かったと思われるのがiOS/Mac OSXアプリ用新プログラミング言語Swiftの登場ではないでしょうか。 電子書籍を読んで勉強するのはもちろんですが、やはり実際に動くコードをみるとわかりやすいんじゃないかと思います。

新プログラミング言語Swiftでを使って作られたFlappyBirdサンプルのソースを見て、そこから学んで行きたいので、
FlappyBirdサンプルのソースを教えてください。
2014-06-06 13:49 コメント
已邀请:

ベストアンサー

0

iQi - 面白いアプリを開発中

{ 賛成 }:

FlappyBirdサンプルのソースは下記となります。

https://github.com/gscalzo/FlappySwift

AppDelegate.swiftなどもあり、ファイル数は5つくらいのSwiftファイルとなっています。全体の動きをつかむのも難しくなさそうです。

コードをいくら見ていても実際に自分が作りたいものとは厚くて高い壁があるものです。実際に動くソースを見て、そこから学んでいくのはいかがでしょう。

FlappySwiftはiOS用、MIT Licenseのオープンソース・ソフトウェアです。

GameScene.swift 一部抜粋

//
//  GameScene.swift
//  FlappyBird
//
//  Created by Nate Murray on 6/2/14.
//  Copyright (c) 2014 Fullstack.io. All rights reserved.
//

import SpriteKit

class GameScene: SKScene {
var bird = SKSpriteNode()
var skyColor = SKColor()
var verticalPipeGap = 150.0
var pipeTextureUp = SKTexture()
var pipeTextureDown = SKTexture()
var movePipesAndRemove = SKAction()

override func didMoveToView(view: SKView) {
    // setup physics
    self.physicsWorld.gravity = CGVectorMake( 0.0, -5.0 )

    // setup background color
    skyColor = SKColor(red: 81.0/255.0, green: 192.0/255.0, blue: 201.0/255.0, alpha: 1.0)
    self.backgroundColor = skyColor

    // ground
    var groundTexture = SKTexture(imageNamed: "land")
    groundTexture.filteringMode = SKTextureFilteringMode.Nearest

    var moveGroundSprite = SKAction.moveByX(-groundTexture.size().width * 2.0, y: 0, duration: NSTimeInterval(0.02 * groundTexture.size().width * 2.0))
    var resetGroundSprite = SKAction.moveByX(groundTexture.size().width * 2.0, y: 0, duration: 0.0)
    var moveGroundSpritesForever = SKAction.repeatActionForever(SKAction.sequence([moveGroundSprite,resetGroundSprite]))

    for var i:CGFloat = 0; i < 2.0 + self.frame.size.width / ( groundTexture.size().width * 2.0 ); ++i {
        var sprite = SKSpriteNode(texture: groundTexture)
        sprite.setScale(2.0)
        sprite.position = CGPointMake(i * sprite.size.width, sprite.size.height / 2.0)
        sprite.runAction(moveGroundSpritesForever)
        self.addChild(sprite)
    }

    // skyline
    var skyTexture = SKTexture(imageNamed: "sky")
    skyTexture.filteringMode = SKTextureFilteringMode.Nearest

    var moveSkySprite = SKAction.moveByX(-skyTexture.size().width * 2.0, y: 0, duration: NSTimeInterval(0.1 * skyTexture.size().width * 2.0))
    var resetSkySprite = SKAction.moveByX(skyTexture.size().width * 2.0, y: 0, duration: 0.0)
    var moveSkySpritesForever = SKAction.repeatActionForever(SKAction.sequence([moveSkySprite,resetSkySprite]))

    for var i:CGFloat = 0; i < 2.0 + self.frame.size.width / ( skyTexture.size().width * 2.0 ); ++i {
        var sprite = SKSpriteNode(texture: skyTexture)
        sprite.setScale(2.0)
        sprite.zPosition = -20;
        sprite.position = CGPointMake(i * sprite.size.width, sprite.size.height / 2.0 + groundTexture.size().height * 2.0)
        sprite.runAction(moveSkySpritesForever)
        self.addChild(sprite)
    }

・・・
2014-06-06 13:54 コメント

ログインまたは登録してから回答してください

EXIT フルスクリーンモード 回答