diff options
author | Peter Ward <peteraward@gmail.com> | 2012-07-20 00:12:03 +1000 |
---|---|---|
committer | Peter Ward <peteraward@gmail.com> | 2012-07-20 00:12:03 +1000 |
commit | 6916ec3e381aba2d1d3c44e5ee2a66047c73d8e8 (patch) | |
tree | 975bec996f94e3ff4154a7de7d871580ceeda41a /snakegame/__init__.py | |
parent | a2130079ca771104d87a919f0b4d88583e66d566 (diff) |
Get the game to actually work (pyglet, at least!).
Diffstat (limited to 'snakegame/__init__.py')
-rw-r--r-- | snakegame/__init__.py | 60 |
1 files changed, 56 insertions, 4 deletions
diff --git a/snakegame/__init__.py b/snakegame/__init__.py index 7fbff4d..73e1060 100644 --- a/snakegame/__init__.py +++ b/snakegame/__init__.py @@ -1,10 +1,62 @@ import argparse from snakegame.engines import BUILTIN_ENGINES -from snakegame.bots import BUILTIN_BOTS + +def first(d): + for item in d: + return item + +def rsplit_get(s, sep, default): + if sep not in s: + return (s, default) + return s.rsplit(sep, 1) + +def import_thing(name, default_obj): + pkg, obj = rsplit_get(name, ':', default_obj) + mod = __import__(pkg, fromlist=[obj]) + return getattr(mod, obj) + +def load_engine(name, builtins=BUILTIN_ENGINES): + engine = BUILTIN_ENGINES.get(name, name) + return import_thing(engine, 'Engine') def main(argv=None): - parser = argparse.ArgumentParser() - parser.add_argument('-e', '--engine') + parser = argparse.ArgumentParser(conflict_handler='resolve') + parser.add_argument( + '-e', '--engine', + default=first(BUILTIN_ENGINES), + ) + parser.add_argument( + '-l', '--loop', + action='store_true', + default=False, + ) + parser.add_argument( + '-w', '--width', + default=30, + ) + parser.add_argument( + '-h', '--height', + default=20, + ) + parser.add_argument( + '-a', '--apples', + default=40, + ) + parser.add_argument('bot', nargs='+') args = parser.parse_args(argv) - print args + + engine = load_engine(args.engine) + + game = engine(args.height, args.width, args.apples) + + for name in args.bot: + bot = import_thing(name, 'bot') + game.add_bot(bot) + + game.run() + + if args.loop: + while True: + game.run() + |