Beispiel #1
0
class Game(pyglet.window.Window):
    def __init__(self):
        config = self.create_config()
        fullscreen = Config.current.fullscreen
        resizable = Config.current.resizable
        width = Config.current.width
        height = Config.current.height
        if fullscreen:
            width = None
            height = None
        super(Game, self).__init__(caption="Molecule", config=config,
            vsync=True, resizable=resizable, fullscreen=fullscreen,
            width=width, height=height)
        self.init_pyglet()
        self.DEBUG_GRAPHICS = False
        self.level = None
        self.start()

    def create_config(self):
        platform = pyglet.window.get_platform()
        display = platform.get_default_display()
        screen = display.get_default_screen()
        try:
            template = pyglet.gl.Config(sample_buffers=1,
                                        samples=4,
                                        double_buffer=True)
            config = screen.get_best_config(template)
        except pyglet.window.NoSuchConfigException:
            print("Hardware does not support all features,",
                  "fallback to just the basic features")
            config = pyglet.gl.Config(double_buffer=True)
        return config

    def start(self):
        pyglet.gl.glClearColor(250/256.0, 250/256.0, 250/256.0, 0)
        self.levels = Levels("data/levels", Config.current.level, window=self)
        self.switch_level()
        pyglet.clock.schedule_interval(self.update, 1/100.0)

    def init_pyglet(self):
        gl.glLineWidth(4)
        gl.glHint(gl.GL_LINE_SMOOTH_HINT, gl.GL_NICEST)
        gl.glEnable(gl.GL_BLEND)
        gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)

    def update(self, dt):
        self.level.update()

    def on_draw(self):
        self.clear()
        self.batch.draw()
        if self.DEBUG_GRAPHICS:
            pymunk.pyglet_util.draw(self.space)

    def switch_level(self, level=None):
        """ Switch to level, if level=None switch to next level"""
        if self.level is not None:
            self.level.delete()
        if level is None:
            level = self.levels.next_level()
            if level is None:
                Gui.create_popup(self, self.batch, "Congratulation you have won the game!",
                             on_escape=self.close)
            else:
                self.run_level(level)
        else:
            self.run_level(level)

    def run_level(self, level):
        self.batch = level.batch
        self.level = level
        self.space = level.space

    def reset_level(self):
        level = self.levels.get_current_level()
        self.switch_level(level)
Beispiel #2
0
class Game(pyglet.window.Window):
    def __init__(self):
        config = self.create_config()
        fullscreen = Config.current.fullscreen
        resizable = Config.current.resizable
        width = Config.current.width
        height = Config.current.height
        if fullscreen:
            width = None
            height = None
        super(Game, self).__init__(caption="Molecule", config=config,
            vsync=True, resizable=resizable, fullscreen=fullscreen,
            width=width, height=height)
        self.init_pyglet()
        self.DEBUG_GRAPHICS = False
        self.level = None
        self.start()

    def create_config(self):
        display = pyglet.canvas.get_display();
        screen = display.get_default_screen()
        try:
            template = pyglet.gl.Config(sample_buffers=1,
                                        samples=4,
                                        double_buffer=True)
            config = screen.get_best_config(template)
        except pyglet.window.NoSuchConfigException:
            print("Hardware does not support all features,",
                  "fallback to just the basic features")
            config = pyglet.gl.Config(double_buffer=True)
        return config

    def start(self):
        pyglet.gl.glClearColor(250/256.0, 250/256.0, 250/256.0, 0)
        self.levels = Levels("data/levels", Config.current.level, window=self)
        self.switch_level()
        pyglet.clock.schedule_interval(self.update, 1/100.0)

    def init_pyglet(self):
        gl.glLineWidth(4)
        gl.glHint(gl.GL_LINE_SMOOTH_HINT, gl.GL_NICEST)
        gl.glEnable(gl.GL_BLEND)
        gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)

    def update(self, dt):
        self.level.update()

    def on_draw(self):
        self.clear()
        self.batch.draw()
        if self.DEBUG_GRAPHICS:
            pymunk.pyglet_util.draw(self.space)

    def switch_level(self, level=None):
        """ Switch to level, if level=None switch to next level"""
        if self.level is not None:
            self.level.delete()
        if level is None:
            level = self.levels.next_level()
            if level is None:
                Gui.create_popup(self, self.batch, "Congratulation you have won the game!",
                             on_escape=self.close)
            else:
                self.run_level(level)
        else:
            self.run_level(level)

    def run_level(self, level):
        self.batch = level.batch
        self.level = level
        self.space = level.space

    def reset_level(self):
        level = self.levels.get_current_level()
        self.switch_level(level)