puzzle-draw: Creating graphics for pencil puzzles.

[ graphics, library, mit, program ] [ Propose Tags ]

puzzle-draw is a library and tool for drawing pencil puzzles using Diagrams. It aims to provide a utility layer on top of Diagrams to help with drawing arbitrary puzzles, and to support several specific puzzles types In addition, it includes functionality for parsing puzzle data from a YAML file format.


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
cairo

Build against Cairo backend

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.2.0.0, 0.3.0.0
Change log CHANGES.md
Dependencies aeson (>=0.7), base (>=4.8 && <5), containers (>=0.5), diagrams-cairo (>=1.3), diagrams-lib (>=1.3.1), diagrams-svg (>=1.3), filepath (>=1.3), hashable (>=1.2), linear, mtl (>=2.1), optparse-applicative (>=0.12 && <0.13), parsec (>=3.1), process (>=1.2), puzzle-draw, SVGFonts (>=1.4), tasty (>=0.8), tasty-golden (>=2.0), text (>=1.1), unordered-containers (>=0.2), vector-space (>=0.8), yaml (>=0.8.4) [details]
License MIT
Author Robert Vollmert
Maintainer rfvollmert@gmail.com
Category Graphics
Source repo head: git clone http://github.com/robx/puzzle-draw.git
Uploaded by vollmert at 2016-12-11T21:35:10Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables test-compare, checkpuzzle, drawpuzzle
Downloads 5195 total (24 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2016-12-11 [all 1 reports]

Readme for puzzle-draw-0.2.0.0

[back to package description]

Build Status

puzzle-draw

puzzle-draw is a library and command-line tool for drawing pencil puzzles using Diagrams. It aims to provide a utility layer on top of Diagrams to help with drawing arbitrary puzzles, as well as supporting several specific puzzle types directly. In addition, it includes functionality for parsing puzzle data from a YAML file format.

Examples

A liar slitherlink with solution:

Liar Slitherlink

This was rendered from the following YAML document:

type: slitherlinkliar
puzzle: |
  1..0.3
  .03222
  0....1
  3....3
  32202.
  3.3..3
solution:
  loop: |
    .┌──┐┌┐
    .│┌─┘││
    .│└──┘│
    ┌┘.┌─┐│
    └┐┌┘.││
    ┌┘│..││
    └─┘..└┘
  liars: |
    ...X..
    .X....
    X.....
    .....X
    ....X.
    ..X...

There is a demo web application at puzzle-draw-demo.herokuapp.com that provides some more examples and that can be used to generate SVG images from such puzzle descriptions.

Or see a puzzle set that covers the puzzle types that are supported as of 2014-05.

Installing

This is a brief overview of how to install the command line tool. You'll need to get a Haskell environment, by installing the Haskell Platform. Then install puzzle-draw with cabal:

$ cabal install puzzle-draw

This will compile puzzle-draw against the SVG backend, and install a binary drawpuzzle that formats puzzles to SVG. Alternatively, you can compile against the Cairo backend by passing -fcairo:

$ cabal install -fcairo puzzle-draw

This will enable PDF and PNG output. Be warned that getting Cairo installed can be tricky on non-Linux platforms.

Running

As an example, suppose the Liar Slitherlink puzzle description above is copied into a file slitherliar.pzl.

$ drawpuzzle slitherliar.pzl

This will generate two files slitherliar.svg and slitherliar-sol.svg, containing the puzzle and solved puzzle, respectively. Run

$ drawpuzzle -h

to see some command line options that allow modifying the program's behaviour, e.g., choosing the output format.