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

简介:

用Swift实现的FlappyBird小游戏

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

    FlappyBird是前段时间很火的一款小游戏,通过手指点击屏幕平衡小鸟通过障碍。我是将以前OC版的项目拿来改成了swift,所以整体的思路还是OC的开发思路。

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

    swift中没有一般语言中的宏定义,但是可以通过定义常量的形式实现宏的效果:

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

    我们需要定义一些成员变量,如下:

?
1
2
3
4
5
6
7
8
9
10
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
             }
         }
     }

  游戏效果图如下:

165325_TOIO_2340880.png


165343_JoFU_2340880.png

我相信,实践是学习的必经途径,希望与志同道合的朋友,一起进步。

目录
相关文章
|
Swift
(一)swift的基本学习
(一)swift的基本学习
139 0
|
开发工具 Swift iOS开发
Swift学习第二练——Swift项目时光电影
Swift学习第二练——Swift项目时光电影
132 0
Swift学习第二练——Swift项目时光电影
|
Swift 开发者 iOS开发
Swift学习第一练——用Swift实现的FlappyBird小游戏
Swift学习第一练——用Swift实现的FlappyBird小游戏
170 0
Swift学习第一练——用Swift实现的FlappyBird小游戏
|
JavaScript Java iOS开发
1.Swift学习之介绍
简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 Mac OS 和 iOS 应用程序 Apple WWDC 2014 横空出世 Swift 历史 2010 年 7 月,苹果开发者工具部门总监 Chris Lattner...
1109 0
|
Swift C语言
2.Swift学习之初探
Playground是什么? 从Xcode6开始出现(Swift开始出现) 翻译为:操场/游乐场 对于学习Swift基本语法非常方便 所见即所得(快速查看结果) 语法特性发生改变时,可以快速查看 Playground Swift最...
833 0
|
安全 Swift
3.Swift学习之常量&变量
什么是常量和变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用let来定义常量,定义之后不可以修改 使用var来定义变量,定义之后可以修改 变量的基本使用 import UIKit let a : Int =...
1008 0
|
iOS开发
Swift学习第十三枪-使用Swift开发IOS中蓝牙4.0的开发流程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
1015 0
|
数据库 iOS开发 数据库管理
Swift学习第十二枪----移动数据库王者Realm入门教程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51636392 今天给大家带来的是堪称是一个可以替代SQLite,Core Data 的以及ORMlibraries的轻量级数据库—Realm移动端数据库。
919 0
|
JSON 数据格式 iOS开发
Swift学习第十枪-AFNetwoking3.0的封装
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51588829 下面是我的新建的Swift学习交流群,欢迎大家一起来共同学习Swift。
803 0
|
JSON 前端开发 数据格式
Swift学习第十一枪-基于协议的MVVM模式的实现
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51592303 下面是我的新建的Swift学习交流群,欢迎大家一起来共同学习Swift。
857 0