Swift學習第一練——用Swift實現的FlappyBird小遊戲

來源:互聯網
上載者:User

標籤:

用Swift實現的FlappyBird小遊戲

      伴隨著apple公司對swift的推廣態度深入,swift火的很快,並且swift精簡便捷的文法和強大的功能,對於使用Object—C開發iOS的開發人員來說,也有必要瞭解學習一下swift。這篇部落格跳過swift乾澀的文法,直接從一個小遊戲項目開始使用swift,將其中收穫總結如下:

    FlappyBird是前段時間很火的一款小遊戲,通過手指點擊螢幕平衡小鳥通過障礙。我是將以前OC版的項目拿來改成了swift,所以整體的思路還是OC的開發思路。

    首先,我需要定義兩個宏,一個用來類比重力加速度G,一個用來便捷擷取裝置螢幕尺寸。因為這個遊戲非常簡單,開發起來也只需要幾個小時,所以我們只需要在一個檔案中寫代碼:viewController.swift。

    swift中沒有一般語言中的宏定義,但是可以通過定義常量的形式實現宏的效果:

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

    我們需要定義一些成員變數,如下:

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//標記是否遊戲結束}

    對於?和!號的理解,網上概念很多,簡單理解聲明變數時如果不初始化系統是不會給變數賦nil的,會報錯,?的作用就是告訴系統這裡如果沒有初始化就是nil。同理,在用這類變數的時候,也需要加上?解包,如果加!就是強制解包,可以理解為讓系統認為這個變數一定不是nil。

    對於UI的建立等部分函數和OC一樣,只是調用的方式略有不同,後面會附上源碼。

    在控制小鳥下落的部分代碼如下,其中有一點需要注意,在swift中沒有隱士轉換這個概念,比如你要使用int a + float b 你必須手動將int轉為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            }        }    }

  遊戲如下:


我相信,實踐是學習的必經途徑,希望與志同道合的朋友,一起進步。

項目github地址:https://github.com/ZYHshao/swiftFlappyBird

Swift學習第一練——用Swift實現的FlappyBird小遊戲

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.