Skip to main content

Python Risk engine with assorted player interfaces.

Project description

PyRisk

This is a Python engine and interface for building games similar to the 1957 La Conquête du Monde by Albert Lamorisse (of “Le Ballon rouge / The Red Balloon” fame). The game is perhaps better known as Risk, and is produced by Parker Brothers (now a division of Hasbro).

Benefits over other open source implementations:

  • simple, extensible implementation
  • play-by-email

Getting PyRisk

PyRisk is available as a Git repository:

$ git clone git://tremily.us/pyrisk.git

The most recent commit is also available as a gzipped tarball at:

http://git.tremily.us/?p=pyrisk.git;a=snapshot;h=HEAD;sf=tgz

Once you get the source, installation is via Docutils:

pyrisk$ python setup.py build
pyrisk$ python setup.py install

Getting started

To setup play-by-email, you’ll have to have some method to redirect appropriate messages into a named pipe. With procmail, that will look something like:

:0
* ^Subject:.*\[PyRisk.*
{
  :0 wc
  /path/to/named/pipe

  :0
  | /bin/echo -e '\000' >> /path/to/named/pipe
}

The echo command appends a NULL byte to the FIFO, which (I think), helps the read() in _get_msg break at the appropriate point.

Once you have the procmail rule setup, just add your EmailPlayers to your game and go:

from pyrisk.base import generate_earth, Player, Engine
from pyrisk.player.email import IncomingEmailDispatcher, \
    OutgoingEmailDispatcher, EmailPlayer
from pyrisk.graphics import WorldRenderer
world = generate_earth()
ied = IncomingEmailDispatcher(fifo_path='/tmp/pyrisk.in')
oed = OutgoingEmailDispatcher(return_address='server@example.com')
wr = WorldRenderer()
players = [EmailPlayer('Alice', 'alice@big.edu', ied, oed, wr),
           EmailPlayer('Bob', 'bob@fish.net', ied, oed, wr),
           Player('Charlie')]
e = Engine(world, players)
e.run()
ied.close()

Project details


Release history Release notifications

This version
History Node

0.1

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page