Logo

蜂巢引擎 (Hive Engine)

管理蜂巢游戏的游戏状态,并确定有效的可执行移动。

此外,从有效的移动应用中产生新的游戏状态。

该引擎可以选择性地支持所有3个官方蜂巢扩展包的游戏:蚊子 (Mosquito)、瓢虫 (Lady Bug) 和丸虫 (Pill Bug)。有关选项的详细信息,请参阅下面的 GameState

用法

您可以阅读下面有关引擎的每个组件的信息,或者直接使用 GameState 的实例。

let state = GameState()

单元 (Unit)

一个 Unit 代表着蜂巢游戏中使用的各种棋子之一 - 蚂蚁、蜘蛛等等。

每个 Unit 都有一个 class(类),它定义了昆虫的类型,一个 owner(所有者)让您知道它属于谁,以及一个 identifier(标识符)来区分每个实例。

有多种函数可以确定一个 Unit 是否可以移动,以及它可以移动到哪里。

每个 Unit 类还提供对 Unit 类的扩展,以计算其移动。有关更多信息,请参阅扩展类,例如 Unit+AntUnit+Beetle

位置 (Position)

一个 Position 是 "棋盘" 上的一个空间,Unit 可以放置或移动到该空间。

Position 依赖于六边形网格系统,灵感来自 Red Blog Games 的一篇优秀文章。有关网格系统实现的详细信息,请点击此处

Position 类还提供了函数来确定 Unit 是否可以在两个 Positions 之间自由移动,这对于确定当前状态下的有效移动非常重要。

移动 (Movement)

一个 Movement 提供了关于在棋盘上移动 Unit 或将新的 Unit 引入棋盘的详细信息。

游戏状态 (GameState)

GameState 是管理蜂巢游戏整体状态的结构。

首先创建一个实例:let state = GameState()

选项 (Options)

默认情况下,GameState 将创建一个没有其他选项的基本游戏。您可以通过 GameState.Option 启用扩展棋子和常见的非官方规则,以及性能增强。

将一组 GameState.Option 提供给 GameState(options:) 构造函数以更改您启用的选项。

API

您可以使用 availableMoves 枚举所有当前可用的移动。

要使用给定的移动更新 GameState,请调用 apply(_:),它将就地改变状态。 如果你想探索各种 Movement,你可以使用 undoMove() 撤消一个移动。

为了获得更好的性能,您可以使用 GameState.Option.disableMovementValidation 禁用移动验证。


安装 (Installation)

Swift Package Manager

该软件包使用 Swift Package Manager 构建,因此您可以在 Package.swift 文件中将其作为依赖项。

    dependencies: [
        .package(url: "https://github.com/autoreleasefool/hive-engine.git", from: "3.1.2")
    ],

有关最新版本,请参阅Releases

要求 (Requirements)


贡献 (Contributing)

  1. 编写您的更改并确保您对其进行测试!该引擎拥有接近 100% 的代码覆盖率,并期望精确符合游戏规则。
    • swift test
  2. 安装 SwiftLint 以实现样式一致性
    • 从存储库的根目录运行 swiftlint
    • 应该没有错误或冲突。 如果有,请在打开 PR 之前修复它们。
  3. 打开一个包含您更改的 PR 👍
  4. CI 将运行您的更改,并确保它们在 Linux 和 macOS 上构建并通过所有测试

注意 (Notice)

蜂巢引擎 (Hive Engine) 与 Gen42 Games 没有任何关联。