管理蜂巢游戏的游戏状态,并确定有效的可执行移动。
此外,从有效的移动应用中产生新的游戏状态。
该引擎可以选择性地支持所有3个官方蜂巢扩展包的游戏:蚊子 (Mosquito)、瓢虫 (Lady Bug) 和丸虫 (Pill Bug)。有关选项的详细信息,请参阅下面的 GameState。
您可以阅读下面有关引擎的每个组件的信息,或者直接使用 GameState 的实例。
let state = GameState()
一个 Unit 代表着蜂巢游戏中使用的各种棋子之一 - 蚂蚁、蜘蛛等等。
每个 Unit 都有一个 class(类),它定义了昆虫的类型,一个 owner(所有者)让您知道它属于谁,以及一个 identifier(标识符)来区分每个实例。
有多种函数可以确定一个 Unit 是否可以移动,以及它可以移动到哪里。
每个 Unit 类还提供对 Unit 类的扩展,以计算其移动。有关更多信息,请参阅扩展类,例如 Unit+Ant 和 Unit+Beetle。
一个 Position 是 "棋盘" 上的一个空间,Unit 可以放置或移动到该空间。
Position 依赖于六边形网格系统,灵感来自 Red Blog Games 的一篇优秀文章。有关网格系统实现的详细信息,请点击此处。
Position 类还提供了函数来确定 Unit 是否可以在两个 Positions 之间自由移动,这对于确定当前状态下的有效移动非常重要。
一个 Movement 提供了关于在棋盘上移动 Unit 或将新的 Unit 引入棋盘的详细信息。
.move(unit:to:) 指定将一个 Unit 移动到一个 Position 的指令。.place(unit:at:) 指定将一个 Unit 放置在一个 Position 的指令。.yoink(pillBug:unit:to:) 指定通过使用丸虫将一个 Unit 移动到一个 Position 的指令。.pass 指定一个非移动,仅当玩家没有其他移动时可用。GameState 是管理蜂巢游戏整体状态的结构。
首先创建一个实例:let state = GameState()
默认情况下,GameState 将创建一个没有其他选项的基本游戏。您可以通过 GameState.Option 启用扩展棋子和常见的非官方规则,以及性能增强。
将一组 GameState.Option 提供给 GameState(options:) 构造函数以更改您启用的选项。
您可以使用 availableMoves 枚举所有当前可用的移动。
要使用给定的移动更新 GameState,请调用 apply(_:),它将就地改变状态。 如果你想探索各种 Movement,你可以使用 undoMove() 撤消一个移动。
为了获得更好的性能,您可以使用 GameState.Option.disableMovementValidation 禁用移动验证。
该软件包使用 Swift Package Manager 构建,因此您可以在 Package.swift 文件中将其作为依赖项。
dependencies: [
.package(url: "https://github.com/autoreleasefool/hive-engine.git", from: "3.1.2")
],
有关最新版本,请参阅Releases。
swift testswiftlint。蜂巢引擎 (Hive Engine) 与 Gen42 Games 没有任何关联。