管理蜂巢游戏的游戏状态,并确定有效的可执行移动。
此外,从有效的移动应用中产生新的游戏状态。
该引擎可以选择性地支持所有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 test
swiftlint
。蜂巢引擎 (Hive Engine) 与 Gen42 Games 没有任何关联。