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

315 阅读3分钟

本项目是用于 Swift 初学者的一个教学练习项目,我们最终的目的是基于 Swift 做出下面这样的一个贪吃蛇小游戏。

完整 Demo 地址:RickeyBoy/SnakeGame

我的笔记文章合集地址:RickeyBoy/Rickey-iOS-Notes

如果大家感兴趣,欢迎点赞收藏~

步骤 3:完善 GameView

具体的过程,可以下载项目之后看具体的注释。可以稍微看一下下图的构造,可以看到第一个标记点,整个棋盘中的元素都是基于刚才写的 UnitView 基本单元格。

shot_2431.png

简单讲解一下代码,GameView 作为游戏的核心视图类,它的主要职责就是管理整个游戏棋盘的布局。

GameView 的初始化主要分为三个步骤:

  1. 布局棋盘 (layoutBoxes)

    1. 计算行列数量
    2. 计算边距确保居中显示
    3. 创建并布局每个 UnitView 单元格
    4. 将所有单元格存储在 mapArrays 中
  2. 初始化蛇 (initialSnakeBodys)

    1. 在固定位置(7,5)创建蛇头
    2. 添加两个蛇身体节点(6,5)和(5,5)
    3. 设置对应的 unitType
  3. 初始化食物 (initialFoods)

    1. 随机生成食物的位置坐标
    2. 将对应位置的 UnitView 标记为食物

知识点:Swift 中的权限管理

在 Swift 中,一共有这样几种访问权限:

访问级别定义访问范围
public公开跨模块访问
internal内部模块内访问
private私有源文件内访问
fileprivate文件私有定义文件内访问

可以注意到,在上面的文件中,部分地方我使用了 public,部分地方我用了 private,这是因为内部的方法我不希望给其他 Class 调用。

那么我们为什么要进行权限控制呢?权限控制的主要目的是为了封装和安全性:

  • 封装:隐藏实现细节,只暴露必要的接口,使得代码更易于维护和理解。
  • 安全性:限制对敏感数据和功能的访问,防止意外或恶意的修改。
  • 模块化:促进代码的模块化,每个模块只关注其内部的职责,降低模块间的耦合。

知识点:注释的技巧

可以看到我在代码中使用了// MARK: - 标记,这是一种非常好用的注释方式:

  1. 组织代码:通过添加 // MARK: - 来标记代码的不同部分,使得代码结构更加清晰,便于阅读和维护。
  2. 导航辅助:许多代码编辑器和 IDE 会使用这些标记来提供更好的导航功能,允许开发者快速跳转到特定的代码段。
  3. 文档生成:在生成文档时,// MARK: - 可以帮助文档工具组织和分类内容。

比如这里的导航辅助,我们点击文件上方导航栏:

shot_2440.png

就可以看到使用 // MARK: - 标记的部分:

shot_2438.png

类似的方法还有:

  • // TODO: 标记遗留的 todo
  • // FIXME: 标记需要修复的错误

效果如下图:

shot_2452.png