本项目是用于 Swift 初学者的一个教学练习项目,我们最终的目的是基于 Swift 做出下面这样的一个贪吃蛇小游戏。
完整 Demo 地址:RickeyBoy/SnakeGame
我的笔记文章合集地址:RickeyBoy/Rickey-iOS-Notes
如果大家感兴趣,欢迎点赞收藏~
知识点:直接给 enum 增加方法来简化代码
在 Swift 语言中,enum
(枚举)是一种非常强大的数据类型,它不仅可以定义一组相关的值,还可以为这些值添加方法,从而实现代码的模块化和简化。
这里我们以 UnitViewType 为例来,体会一下给 enum 增加方法的好处。UnitViewType
枚举被用于定义游戏中不同单元格的类型,我们可以增加方法(添加一个generateImage
方法)根据类型获取对应展示的图片:
- 蛇头(
snakeHead
)展示绿色菱形 - 蛇身(
snakeBody
)展示浅蓝色圆形 - 食物(
food
)随机展示一张食物图片 - 空白格子(
normal
)什么都不展示
这种方法的好处是,它将图片生成的逻辑封装在了UnitViewType
枚举内部,这样在使用的时候就能直接调用了,不用再关心具体的逻辑,减少了代码量,也使得代码更加清晰和易于维护:
当然,Swift 中的 enum 是一个非常强大的类型,强烈推荐大家学习后多应用,这里列举几个:
- 定义关联值 (Associated Values):为每个
case
携带不同类型的数据。:为每个case
指定统一类型的默认值。 - 实现协议 (Protocol Conformance):让
enum
遵循协议如Codable
或Equatable
。 - 扩展功能 (Extensions):添加方法或计算属性扩展功能。
- 使用泛型 (Generics):可以通过泛型提升 enum 的通用性
知识点:通过 #imageLiteral 在代码中引用图片
在 Swift 中,图片可以直接展示在代码中,这样非常的简洁清晰:
那么要如何触发呢,我们如何实现这样的效果呢?其实注释掉这段代码就发现秘密了,需要使用 #imageLiteral 关键字:
我非常推荐在小型项目中使用 #imageLiteral
,从而在代码中直接引用图片资源,这是一种非常便捷且直观的方法。这不仅提高了代码的可读性,也能避免在项目中查找和引用资源文件的麻烦,以及出现错误的情况。
这一期介绍了两个小的技巧,下一期继续完善 UI 部分的代码