/snake-game

Snake AI, with templates to add your own snake

Primary LanguagePythonMIT LicenseMIT

snake-game

Snake AI, with templates to add your own snake

install pkg_resources, pygame, pyglet

run run.py (tested with python3.5, python3.6)

Testing your own snake

Your job is to make a snake program which returns one of {"U", "D", "L", "R"}, so that is survives for the longest time.

You may find that is it useful to use import snakegame.common

You can test your snake against other snakes by using run.py.

create a function which takes:

  • grid (list of lists of characters), where
    • * is an apple
    • . is an empty cell
    • A, B, ... are the heads of the respective snakes
    • a, b, ... are the bodies of the respective snakes
[
['.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '*', '.', '.', '.', '*', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '*', '.', '.', '.', '*', '.', '.', '.', '*', '.', '.', '*', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '*', '.', '.', '.', '.', '*', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.'], 
['.', '*', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '*', 'B', '.', '.', '.', '*', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'b', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '*', '*', '.', '.', '*', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '*'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.'], 
['.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '*', '.', '.', '.', '.', '*', '.', '.', '.', '*'], 
['.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '*', '.'], 
['.', '.', '.', '.', '.', '.', '.', '*', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '*', '.', '.', '.', '.', 'a', 'a', 'a', 'a', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', 'A', 'a', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '*', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'], 
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.']]
  • headLocation (x, y), where
    • grid[x][y] is where your snake's head is (garunteed to be a valid index with an uppercase letter)
(20, 8)