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

相关推荐
报错小能手16 小时前
ios开发方向——swift并发进阶核心 Task、Actor、await 详解
开发语言·学习·ios·swift
用户79457223954132 天前
【AFNetworking】OC 时代网络请求事实标准,Alamofire 的前身
objective-c·swift
报错小能手2 天前
SwiftUI 框架 认识 SwiftUI 视图结构 + 布局
ui·ios·swift
东坡肘子2 天前
被 Vibe 摧毁的版权壁垒,与开发者的新护城河 -- 肘子的 Swift 周报 #131
人工智能·swiftui·swift
报错小能手2 天前
ios开发方向——swift错误处理:do/try/catch、Result、throws
开发语言·学习·ios·swift
小夏子_riotous2 天前
openstack的使用——5. Swift服务的基本使用
linux·运维·开发语言·分布式·云计算·openstack·swift
mCell3 天前
MacOS 下实现 AI 操控电脑(Computer Use)的思考
macos·agent·swift
用户79457223954133 天前
【DGCharts】iOS 图表渲染事实标准——8 种图表类型、高度可定制,3 行代码画出一条折线
swiftui·swift
chaoguo12343 天前
Any metadata 的内存布局
swift·metadata·value witness table
tangweiguo030519874 天前
SwiftUI布局完全指南:从入门到精通
ios·swift