Package catan provides models for representing and manipulating a game of catan
Board coordinates must be specified as described in module hexgrid
.
.catan
files will be written to the working directory by class Game (see catanlog
).
class Game also supports undo and redo, which is useful for building GUIs.
Supports Python 3. Might work in Python 2.
Author: Ross Anderson (rosshamish)
pip install catan
import catan.board
import catan.game
import catan.trading
players = [Player(1, 'ross', 'red'),
Player(2, 'josh', 'blue'),
Player(3, 'yuri', 'green'),
Player(4, 'zach', 'orange')]
board = catan.board.Board()
game = catan.game.Game(board=board)
game.start(players=players)
print(game.get_cur_player()) # -> ross (red)
game.buy_settlement(0x37)
game.buy_road(0x37)
game.end_turn()
...
game.roll(6)
game.trade(trade=catan.trading.CatanTrade(...))
game.undo()
game.redo()
game.play_knight(...)
game.end_turn()
...
game.end()
See catan-spectator
for extensive usage.
catan-spectator writes game logs in the .catan
format described by package catanlog
.
They look like this:
green rolls 6
blue buys settlement, builds at (1 NW)
orange buys city, builds at (1 SE)
red plays dev card: monopoly on ore
Most classes and modules are documented. Read the docstrings! If something is confusing or missing, open an issue.
GPLv3