A first release with a decent set of features (see below the available options)
For fun I generated a map with a total of 10008 tiles (not counting the Carcassonne city starting tile).
That's one more tile than the current world record in the physical world! https://www.youtube.com/watch?v=8wM2brqgkRw
$ ./carcassonne.py -h
usage: carcassonne.py [-h] [-d] [-n N] [-z Z] [--draw-all] [-f] [-s] [--dump]
[--river-policy {USE_T,EXCLUDE_T,SHORT_RIVER,LONG_RIVER}]
[--river-period P] [--seed INT]
[FILE ...]
Display a randomized Carcassonne map
positional arguments:
FILE Tile description file (JSON format)
optional arguments:
-h, --help show this help message and exit
-d, --debug Display non-game tiles, etc.
-n N Number of tiles to display (Default: The whole
tileset)
-z Z, --zoom-factor Z
Initial zoom factor (Default: 1.0)
--draw-all Draw all tiles
-f, --full-screen Full screen
-s, --screenshot Take a screenshot of the final display
--dump Dump the final grid to an image
--river-policy {USE_T,EXCLUDE_T,SHORT_RIVER,LONG_RIVER}
Placement policies for the river tileset. Can be used
multiple times
--river-period P Period of repetition of the river tileset. Set to zero
for a single use of the river tileset
--seed INT A seed for the random generator (Default: Use a system
generated seed)