Skip to content

models for representing and manipulating a game of catan

License

Notifications You must be signed in to change notification settings

rosshamish/catan-py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

catan

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)

Installation

pip install catan

Usage

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.

File Format

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

Documentation

Most classes and modules are documented. Read the docstrings! If something is confusing or missing, open an issue.

License

GPLv3

About

models for representing and manipulating a game of catan

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages