This module implements Nazo Puyo generators.
Types
GenerateOption = object requirement*: GenerateRequirement moveCount*: Positive colorCount*: range[1 .. 5] heights*: array[Column, Option[Natural]] puyoCounts*: tuple[color: Option[Natural], garbage: Natural] ## `color` can be `none` only if the kind is chain-like. connect2Counts*: tuple[total: Option[Natural], vertical: Option[Natural], horizontal: Option[Natural]] connect3Counts*: tuple[total: Option[Natural], vertical: Option[Natural], horizontal: Option[Natural], lShape: Option[Natural]] allowDouble*: bool allowLastDouble*: bool
- Option for generation.
GenerateRequirement = object
- Requirement for generation.
GenerateRequirementColor {.pure.} = enum All, SingleColor, Garbage, Color
- Requirement color for generation.
Procs
func color(self: GenerateRequirement): GenerateRequirementColor {.inline, ...raises: [], tags: [], forbids: [].}
func color=(self: var GenerateRequirement; color: GenerateRequirementColor) {. inline, ...raises: [], tags: [], forbids: [].}
- Sets the color of the requirement. If the requirement does not have a color, UnpackDefect is raised.
proc generate(option: GenerateOption; rule: Rule; parallelCount: Positive = processorCount()): NazoPuyoWrap {. inline, ...raises: [GenerateError, KeyError], tags: [TimeEffect], forbids: [].}
- Returns a randomly generated nazo puyo that has a unique solution. If generation fails, GenerateError will be raised. parallelCount will be ignored on JS backend.
proc generate(option: GenerateOption; rule: Rule; seed: SomeSignedInt; parallelCount: Positive = processorCount()): NazoPuyoWrap {.inline.}
- Returns a randomly generated nazo puyo that has a unique solution. If generation fails, GenerateError is raised. parallelCount is ignored on JS backend.
proc generate[F: TsuField or WaterField](option: GenerateOption; parallelCount: Positive = processorCount()): NazoPuyo[F] {.inline.}
- Returns a randomly generated nazo puyo that has a unique solution. If generation fails, GenerateError will be raised. parallelCount will be ignored on JS backend.
proc generate[F: TsuField or WaterField](option: GenerateOption; seed: SomeSignedInt; parallelCount: Positive = processorCount()): NazoPuyo[F] {. inline.}
- Returns a randomly generated nazo puyo that has a unique solution. If generation fails, GenerateError is raised. parallelCount is ignored on JS backend.
func initGenerateRequirement(kind: RequirementKind; color: GenerateRequirementColor): GenerateRequirement {. inline, ...raises: [], tags: [], forbids: [].}
- Returns a requirement.
func initGenerateRequirement(kind: RequirementKind; color: GenerateRequirementColor; number: RequirementNumber): GenerateRequirement {. inline, ...raises: [], tags: [], forbids: [].}
- Returns a requirement.
func initGenerateRequirement(kind: RequirementKind; number: RequirementNumber): GenerateRequirement {. inline, ...raises: [], tags: [], forbids: [].}
func kind(self: GenerateRequirement): RequirementKind {.inline, ...raises: [], tags: [], forbids: [].}
- Returns the kind of the requirement.
func kind=(self: var GenerateRequirement; kind: RequirementKind) {.inline, ...raises: [], tags: [], forbids: [].}
- Sets the kind of the requirement.
func number(self: GenerateRequirement): RequirementNumber {.inline, ...raises: [], tags: [], forbids: [].}
func number=(self: var GenerateRequirement; number: RequirementNumber) {.inline, ...raises: [], tags: [], forbids: [].}
- Sets the number of the requirement. If the requirement does not have a color, UnpackDefect is raised.