Skip to main content

The Great Elf Game adapted for Python North East - client & server

Project description

The annual Christmas Elves game server and client

Python North East December brings you the Christmas Elf Challenge. Your task, should you choose to accept it, is to collect the most

Running your Game

This part of the guide will give you the instructions to set up the game so you can start trying to set a high score!


Make sure you have Python installed - if you have Windows, check out the Beginner’s Guide of the Xmas Elves document.

Once you’re ready, you can get the client code running:

pyvenv venv
. venv/bin/activate
pip install pyne-xmas-elves

Building your Bot

Create your game file, called

from pyne_xmas_elves.client import BaseGame

class Game(BaseGame):
    """Your main Game Class.

    PLAYER_NAME = 'Tom Cooper'

    def turn(self, elves_available):
        """Take a single turn.

        The elves_available argument will tell you how many elves you can use
        as a guide.
        send_to_woods = elves_available // 2
        send_to_forest = (elves_available - send_to_woods) // 2
        send_to_mountains = elves_available - send_to_forest
        return (send_to_woods,

Helper Attributes

While taking a turn, you can access the following attributes on self:

  • amount_raised - total money raised

  • current_turn - the current turn number

  • last_turn - what the last turn number will be

  • previous_weather - the weather from the previous expedition

Run the game

After creating your bot, you can run the game:

elves game

Running the Server

Installing Dependencies

The server is self-contained with an SQLite database, so just install the requirements:

pip install -r requirements.txt


We’re using Django Channels, so running the server is as easy as:

python server/ runserver


To interact with the server session, we use a simple REST API to send new data into the server. The full API docs can be found by running a server and navigating to /docs/.

Starting a New Session

To start a new session, send a POST request with a name variable form-encoded to https://<host>/sessions/:

curl -X POST -d player_name="Scott"

and you’ll get a simple JSON object back with a session URL that you post your turns against.

Taking a Turn

To take a turn, make a POST request against the day endpoint of a session.

Instructions and Rules

See the attached Google Doc for the rules and any of the latest tips and tricks.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyne-xmas-elves-0.7.1.tar.gz (6.5 kB view hashes)

Uploaded source

Built Distribution

pyne_xmas_elves-0.7.1-py3-none-any.whl (12.1 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page