Swift学习第一练——用Swift实现的FlappyBird小游戏

用Swift实现的FlappyBird小游戏

      伴随着apple公司对swift的推广态度深刻,swift火的很快,而且swift精简便捷的语法和强大的功能,对于使用Object—C开发iOS的开发者来讲,也有必要了解学习一下swift。这篇博客跳过swift干涩的语法,直接从一个小游戏项目开始使用swift,将其中收获总结以下:git

    FlappyBird是前段时间很火的一款小游戏,经过手指点击屏幕平衡小鸟经过障碍。我是将之前OC版的项目拿来改为了swift,因此总体的思路仍是OC的开发思路。github

    首先,我须要定义两个宏,一个用来模拟重力加速度G,一个用来便捷获取设备屏幕尺寸。由于这个游戏很是简单,开发起来也只须要几个小时,因此咱们只须要在一个文件中写代码:viewController.swift。swift

    swift中没有通常语言中的宏定义,可是能够经过定义常量的形式实现宏的效果:app

//用常量的形式代理OC中的宏定义
let G:Float=9.8
let 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同样,只是调用的方式略有不一样,后面会附上源码。spa

    在控制小鸟下落的部分代码以下,其中有一点须要注意,在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
            }
        }
    }

  游戏效果图以下:code

 

我相信,实践是学习的必经途径,但愿与志同道合的朋友,一块儿进步。游戏

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

专一技术,热爱生活,交流技术,也作朋友。

——珲少 QQ群:203317592

相关文章
相关标签/搜索