基于 Swift 从零到一开发贪吃蛇游戏(四)

本项目是用于 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 遵循协议如 CodableEquatable
  • 扩展功能 (Extensions):添加方法或计算属性扩展功能。
  • 使用泛型 (Generics):可以通过泛型提升 enum 的通用性

知识点:通过 #imageLiteral 在代码中引用图片

在 Swift 中,图片可以直接展示在代码中,这样非常的简洁清晰:

那么要如何触发呢,我们如何实现这样的效果呢?其实注释掉这段代码就发现秘密了,需要使用 #imageLiteral 关键字:

我非常推荐在小型项目中使用 #imageLiteral,从而在代码中直接引用图片资源,这是一种非常便捷且直观的方法。这不仅提高了代码的可读性,也能避免在项目中查找和引用资源文件的麻烦,以及出现错误的情况。


这一期介绍了两个小的技巧,下一期继续完善 UI 部分的代码

相关推荐
coooliang2 天前
【iOS】SwiftUI状态管理
ios·swiftui·swift
席子哥哥的代码库4 天前
自制简单的图片查看器(python)
开发语言·python·swift
打工人你好4 天前
Swift 的 KeyPath 是什么?
swift
struggle20255 天前
Ollmao (OH-luh-毛程序包及源码) 是一款原生 SwiftUI 应用程序,它与 Ollama 集成,可在 Mac 上本地运行强大的 AI 模型
ios·swiftui·swift
神仙别闹7 天前
基于Swift实现拼图游戏
开发语言·搜索引擎·swift
神仙别闹8 天前
基于Swift实现仿IOS闹钟
ios·cocoa·swift
ctf_022612 天前
echarts 3d中国地图飞行线
3d·echarts·swift
没头脑的ht12 天前
UITableView的复用原理
ios·swift
自不量力的A同学14 天前
苹果公司宣布正式开源 Xcode 引擎 Swift Build145
swift
SchneeDuan15 天前
iOS--SDWebImage源码解析
ios·缓存·swift·第三方库·sdwebimage