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

相关推荐
符哥20087 小时前
一套基于Swift+MVVM为基础的iOS App 开发框架
swift
符哥200813 小时前
Swift 开发 iOS App 过程中写自定义控件的归纳总结
ios·cocoa·swift
锐意无限1 天前
Swift 扩展归纳--- UIView
开发语言·ios·swift
文件夹__iOS1 天前
AsyncStream 进阶实战:SwiftUI 全局消息流极简实现
ios·swiftui·swift
fendoudexiaoniao_ios4 天前
iOS 列表拖拽cell排序
ios·swift
大熊猫侯佩5 天前
Swift 6 驱魔实录:揭开 Combine 与 @Sendable 的“血色契约”
swift·block·combine·preconcurrency·sendable·mainactor·isolation
初级代码游戏5 天前
iOS开发 SwiftUI 15:手势 拖动 缩放 旋转
ios·swiftui·swift
ujainu6 天前
Flutter + OpenHarmony 游戏开发进阶:虚拟摄像机系统——平滑跟随与坐标偏移
开发语言·flutter·游戏·swift·openharmony
初级代码游戏8 天前
iOS开发 SwiftUI 14:ScrollView 滚动视图
ios·swiftui·swift
初级代码游戏8 天前
iOS开发 SwitftUI 13:提示、弹窗、上下文菜单
ios·swiftui·swift·弹窗·消息框