Mini-jeu FlappyBird implémenté avec Swift

À mesure que la promotion de Swift par Apple s'intensifie, Swift est devenu populaire très rapidement. De plus, la syntaxe concise et pratique de Swift et ses fonctionnalités puissantes font qu'il est nécessaire pour les développeurs qui utilisent Objective-C pour développer sur iOS de comprendre et d'apprendre aussi Swift. Cet article passe outre la syntaxe aride de Swift et commence directement à utiliser Swift à partir d'un petit projet de jeu. Les points à retenir sont résumés comme suit :

FlappyBird est un mini-jeu qui a été très populaire il y a quelque temps. Vous tapotez l'écran avec votre doigt pour diriger l'oiseau à travers les obstacles. J'ai pris le projet précédent en version OC et je l'ai converti en Swift, donc l'approche globale reste l'approche de développement OC.

Tout d'abord, je dois définir deux macros : une pour simuler l'accélération gravitationnelle G, et une pour obtenir facilement la taille de l'écran de l'appareil. Comme ce jeu est très simple et ne prend que quelques heures à développer, nous n'avons qu'à écrire du code dans un seul fichier : viewController.swift.

Swift n'a pas de définitions de macros comme dans les langages généraux, mais vous pouvez obtenir l'effet des macros en définissant des constantes :

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

Nous devons définir quelques variables membres, comme suit :

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//标记是否游戏结束
}

Il existe de nombreux concepts en ligne pour comprendre ? et !. En termes simples, lors de la déclaration d'une variable, si elle n'est pas initialisée, le système n'attribuera pas nil à la variable et signalera une erreur. Le rôle de ? est de dire au système que si elle n'est pas initialisée ici, elle vaut nil. De même, lors de l'utilisation de telles variables, vous devez également ajouter ? pour les déballer. Si vous ajoutez !, il s'agit d'un déballage forcé, ce qui peut être compris comme le fait de laisser le système croire que cette variable n'est définitivement pas nil.

La création de l'UI et d'autres fonctions est identique à celle d'OC, sauf que les méthodes d'appel sont légèrement différentes. Le code source sera joint plus tard.

Le code pour contrôler la chute de l'oiseau est le suivant. Une chose à noter : il n'existe pas de concept de conversion implicite en Swift. Par exemple, si vous voulez utiliser int a + float b, vous devez convertir manuellement int en float : (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
            }
        }
    }

La capture d'écran de l'effet du jeu est la suivante :


Je crois que la pratique est le chemin nécessaire pour apprendre. J'espère progresser avec des amis partageant les mêmes idées.

Adresse GitHub du projet :https://github.com/ZYHshao/swiftFlappyBird

Pour aller plus loin

Tutoriel d'introduction à Swift :http://www.w3cschool.cc/w3cnote/apple-swift.html