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

相关推荐
汉秋2 小时前
告别 GeometryReader:SwiftUI .visualEffect 实战解析
swiftui·swift
linweidong4 小时前
美团ios开发100道面试题及参考答案(下)
objective-c·swift·jspatch·ios开发·ios面试·ios面经·xcode调试
__WanG1 天前
screen time api - FamilyActivityPicker 获取选中应用
ios·iphone·swift
东坡肘子2 天前
Swift、SwiftUI 与 SwiftData:走向成熟的 2025 -- 肘子的 Swift 周报 #116
人工智能·swiftui·swift
大熊猫侯佩3 天前
Swift 6.2 列传(第十三篇):香香公主的“倾城之恋”与优先级飞升
swift·编程语言·apple
1024小神3 天前
Swift配置WKwebview加载网站或静态资源后,开启调试在电脑上debug
swift
kkoral4 天前
基于MS-Swift 为 Qwen3-0.6B-Base 模型搭建可直接调用的 API 服务
python·conda·fastapi·swift
Yorelee.5 天前
ms-swift在训练时遇到的部分问题及解决方案
开发语言·nlp·transformer·swift
崽崽长肉肉6 天前
swift中的知识总结(一)
ios·swift
Yakamoz6 天前
Swift Array的写时复制
swift