Mit Swift implementiertes FlappyBird-Mini-Spiel

Da Apple Swift immer stärker bewirbt, ist Swift sehr schnell populär geworden. Darüber hinaus machen Swifts prägnante und bequeme Syntax sowie leistungsstarke Funktionen es für Entwickler, die iOS mit Objective-C entwickeln, notwendig, Swift ebenfalls zu verstehen und zu lernen. Dieser Artikel überspringt die trockene Syntax von Swift und beginnt direkt mit der Verwendung von Swift anhand eines kleinen Spielprojekts. Die Erkenntnisse werden wie folgt zusammengefasst:

FlappyBird ist ein Mini-Spiel, das vor einer Weile sehr beliebt war. Man tippt mit dem Finger auf den Bildschirm, um den Vogel durch Hindernisse zu balancieren. Ich habe das frühere Projekt in der OC-Version genommen und in Swift umgewandelt, daher ist der Gesamtansatz immer noch der OC-Entwicklungsansatz.

Zuerst muss ich zwei Makros definieren: eines zur Simulation der Gravitationsbeschleunigung G und eines, um bequem die Bildschirmgröße des Geräts zu erhalten. Da dieses Spiel sehr einfach ist und nur ein paar Stunden Entwicklung erfordert, müssen wir den Code nur in einer Datei schreiben: viewController.swift.

Swift hat keine Makrodefinitionen, wie sie in allgemeinen Sprachen vorkommen, aber man kann den Effekt von Makros durch das Definieren von Konstanten erreichen:

//用常量的形式代理OC中的宏定义
let G:Float=9.8
let SCREEN_SIZE = UIScreen.mainScreen().bounds

Wir müssen einige Membervariablen definieren, wie folgt:

class ViewController: UIViewController {
    var timer:NSTimer?//背景移动的定时器
    var i:Int=0//背景移动的速度
    var timer2:NSTimer?//柱子和地面移动的定时器
    var timer3:NSTimer?//小鸟移动的定时器
    var bird:UIImageView?
    var t:Float=0.0//小鸟下落的速度
    var isDowm:Bool=false//标记小鸟是否在下落
    var isGameOver:Bool=false//标记是否游戏结束
}

Es gibt viele Konzepte online zum Verständnis von ? und !. Einfach gesagt: Wenn eine Variable deklariert wird und nicht initialisiert ist, weist das System der Variable kein nil zu und meldet einen Fehler. Die Rolle von ? besteht darin, dem System mitzuteilen, dass sie an dieser Stelle, wenn sie nicht initialisiert wird, nil ist. Ebenso muss man bei der Verwendung solcher Variablen ebenfalls ? hinzufügen, um sie zu entpacken. Wenn man ! hinzufügt, ist das erzwungenes Entpacken, was man so verstehen kann, dass das System glauben soll, diese Variable sei definitiv nicht nil.

Die Erstellung der UI und anderer Funktionen ist dieselbe wie in OC, außer dass die Aufrufmethoden leicht unterschiedlich sind. Der Quellcode wird später angehängt.

Der Code zur Steuerung des Falls des Vogels ist wie folgt. Zu beachten ist: In Swift gibt es kein Konzept der impliziten Konvertierung. Wenn Sie beispielsweise int a + float b verwenden möchten, müssen Sie int manuell in float umwandeln: (Float)(a) + b

func birdMove(){
        if !isDowm{
            if bird?.frame.origin.y < SCREEN_SIZE.height-100{
                var rant:CGRect=bird!.frame
                rant.origin.y += (CGFloat)(G*(t*t/2))
                bird?.frame=rant
                t+=0.025
            }
        }else{
            if t<0.24{
                var rant = bird?.frame
                rant?.origin.y -= 4.9-(CGFloat)(G*t*t/2)
                bird?.frame=rant!
                t+=0.025
            }else{
                isDowm=false
            }
        }
    }

Der Screenshot des Spieleffekts ist wie folgt:


Ich glaube, dass Übung der notwendige Weg zum Lernen ist. Ich hoffe, gemeinsam mit gleichgesinnten Freunden Fortschritte zu machen.

GitHub-Adresse des Projekts:https://github.com/ZYHshao/swiftFlappyBird

Weiterführende Literatur

Swift-Einführungstutorial:http://www.w3cschool.cc/w3cnote/apple-swift.html