\section{Introduction}

Before starting this tutorial, you should \emph{already} know the basics of
Python. Specifically, you should know these bits of Python:
\begin{itemize}
    \item How to \py|print| things
    \item \py|if|, \py|elif| and \py|else|
    \item \py|for| and \py|while| loops
    \item \py|list|s and \py|dict|ionaries
    \item functions (\py|def|)
\end{itemize}

\subsection{Help! I don’t know what these are…}

If you have no idea what any of those things are, \emph{don’t panic}.
All that means is that you’re not quite ready to follow this tutorial yet, and
you need to learn the basics of Python first.
There are many excellent \emph{free} resources for doing this:
\begin{itemize}
    \item How to Think Like a Computer Scientist \\
        (\url{http://openbookproject.net/thinkcs/python/english2e/})
    \item Learn Python the Hard Way \\
        \url{http://learnpythonthehardway.org/}
    \item The official tutorial in the Python documentation \\
        \url{http://docs.python.org/tutorial/}
\end{itemize}

The most important resource to learn programming, however, are the people you
know who are learning Python with you, already know Python, or some other
programming language.
You can spend hours trying to understand something in books and not get it,
but ask another person to explain it, and it will all suddenly ‘click’ and make
sense.

\subsection{Yeah, I know what those are.}

Excellent! Let’s get started then.

If you’re doing this in some kind of programming class, your instructor may have
provided you with a zip file (or similar) containing SnakeGame and pyglet.
If so, follow their instructions for setting it up, and head straight on to
Your First Bot.

Otherwise, you’ll need to first install the code. The latest version of
SnakeGame is available in a Mercurial repository at
\url{http://hg.flowblok.id.au/snakegame}.
You can install it using pip:
\begin{shell}
$ pip install hg+http://hg.flowblok.id.au/snakegame#egg=SnakeGame
\end{shell}

If you wish to have a pretty graphical viewer for watching the game being
played, you will also need to install pyglet\footnoteurl{http://pyglet.org/}
and/or pygame\footnoteurl{http://pygame.org}.

\subsection{Skipping ahead}

If you already know Python, you will probably want to skip some sections of this
tutorial. To make this easier, there is a \emph{Fast track} note at the start of
each section: if you can write a bot which does what it says, you can safely
skip that section.
