Pequeño juego FlappyBird implementado con Swift
A medida que Apple profundiza su actitud de promoción de Swift, Swift se ha vuelto popular rápidamente. Además, por la sintaxis concisa y conveniente de Swift y sus potentes funciones, también es necesario que los desarrolladores que usan Object-C para desarrollar iOS conozcan y aprendan Swift. Este artículo omite la árida sintaxis de Swift y comienza directamente a usar Swift desde un pequeño proyecto de juego. Resumo los logros obtenidos de la siguiente manera:
FlappyBird es un pequeño juego que fue muy popular hace un tiempo. Consiste en tocar la pantalla con el dedo para equilibrar al pájaro y atravesar obstáculos. Tomé el proyecto que antes estaba en la versión OC y lo modifiqué a Swift, por lo que la idea general sigue siendo la del desarrollo en OC.
En primer lugar, necesito definir dos macros: una para simular la aceleración gravitatoria G y otra para obtener fácilmente el tamaño de la pantalla del dispositivo. Como este juego es muy simple y solo toma unas horas desarrollarlo, solo necesitamos escribir código en un archivo: viewController.swift.
En Swift no existe la definición de macros como en los lenguajes comunes, pero se puede lograr el efecto de una macro definiendo constantes:
//用常量的形式代理OC中的宏定义 let G:Float=9.8 let SCREEN_SIZE = UIScreen.mainScreen().bounds
Necesitamos definir algunas variables miembro, como sigue:
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//标记是否游戏结束
}
En cuanto al entendimiento de los símbolos ? y !, hay muchos conceptos en internet. En pocas palabras, al declarar una variable, si no se inicializa, el sistema no le asigna nil y se produce un error. La función de ? es decirle al sistema que, si no está inicializada, entonces es nil. De manera similar, al usar este tipo de variables, también se necesita agregar ? para desenvolver; si se agrega ! es desenvolvimento forzado, lo que se puede entender como hacer que el sistema piense que esta variable definitivamente no es nil.
Para la creación de la interfaz de usuario y otras funciones, es igual que en OC, solo que la forma de llamada es ligeramente diferente. El código fuente se adjuntará más adelante.
El código para controlar la caída del pájaro es el siguiente. Hay un punto a tener en cuenta: en Swift no existe el concepto de conversión implícita. Por ejemplo, si quieres usar int a + float b, debes convertir manualmente int a 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 imagen del efecto del juego es la siguiente:


Creo que la práctica es el camino necesario para aprender. Espero avanzar junto a amigos que compartan las mismas ideas.
Dirección de GitHub del proyecto:https://github.com/ZYHshao/swiftFlappyBird
Lectura adicional
Tutorial de introducción a Swift:http://www.w3cschool.cc/w3cnote/apple-swift.html