Mercurial > skaapsteker
view skaapsteker/__main__.py @ 134:4713a2a3b0be
Initial cutscene screen
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Tue, 05 Apr 2011 00:06:07 +0200 |
parents | e1dd3b785269 |
children | 0ad313ec564d |
line wrap: on
line source
"""Game main module. """ import sys import optparse import pygame from pygame.locals import SWSURFACE from . import options from .constants import SCREEN, FREQ, BITSIZE, CHANNELS, BUFFER, DEBUG from .engine import Engine from .levelscene import LevelScene from .menuscene import MenuScene def parse_args(args): parser = optparse.OptionParser() parser.add_option("--no-sound", action="store_false", default=True, dest="sound", help="disable sound") parser.add_option("--dvorak", action="store_true", default=False, dest="dvorak", help="Dvorak keyboard layout") if DEBUG: parser.add_option("--level", type="str", default=None, dest="level", help="Initial level") parser.add_option("--no-rects", action="store_false", default=True, dest="rects", help="Disable debugging rects") opts, _ = parser.parse_args(args or []) options['dvorak'] = opts.dvorak options['sound'] = opts.sound if DEBUG: options['debug_rects'] = opts.rects return opts.level def main(): """Launch Nine Tales. """ level = parse_args(sys.argv) pygame.display.init() pygame.font.init() if options['sound']: try: pygame.mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER) except pygame.error, exc: raise # TODO: bail out to no_sound(exc) else: # Ensure get_sound returns nothing, so everything else just works # TODO: bail out to disable_sound() pass pygame.display.set_mode(SCREEN, SWSURFACE) #pygame.display.set_icon(pygame.image.load( # data.filepath('icons/nine_tales24x24.png'))) pygame.display.set_caption("Nine Tales") engine = Engine() if level is not None: engine.change_scene(LevelScene(engine.game_state, level)) else: engine.change_scene(MenuScene(engine.game_state)) try: engine.run() except KeyboardInterrupt: pass if __name__ == '__main__': main()