基于 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 部分的代码

相关推荐
opentogether2 天前
Swift 的动态性
开发语言·ssh·swift
苍墨穹天2 天前
SWIFT基本使用
linux·swift
SchneeDuan2 天前
从源码分析swift GCD_DispatchGroup
ios·swift·源码分析·gcd
请叫我飞哥@4 天前
iOS在项目中设置 Dev、Staging 和 Prod 三个不同的环境
ios·xcode·swift
Cedric_Anik6 天前
iOS渲染概述
ui·ios·swift
hxx2216 天前
iOS swift开发系列--如何给swiftui内容视图添加背景图片显示
ios·swiftui·swift
胖虎17 天前
SwiftUI - (十九)组合视图
ios·swiftui·swift·组合视图
davidson14717 天前
Xcode
ios·swiftui·xcode·swift·apple
威化饼的一隅8 天前
【多模态】swift框架使用qwen2-vl
人工智能·深度学习·大模型·swift·多模态模型·qwen2-vl
_黎明8 天前
【Swift】集合类型 - 数组、集合、字典
swift