Exemplo n.º 1
0
class Game(scene.Scene):

    def __init__(self, world):
        scene.Scene.__init__(self, world)
        self.group = group.Group()
        self._create_ui()

        self.gui = gui.Gui()
        self.table = Table(self.gui, self.group, self.turn)
        self.gui.add_widgets(self.group.sprites())

        self.mouse = gui.Mouse(self.gui)
        self.group.add_mouse(self.mouse)

        self.background = world.screen.convert()
        self.update_view()

    def _create_ui(self):
        """Crea la interfaz del juego """

        # genera el visor de turnos
        self.turn = gui.Turn()
        self.group.add(self.turn)

    def update(self):
        self.group.update()
        self._update_view()

    def draw(self, screen):
        pass

    def update_view(self):
        """ Actualiza la vista"""
        self.table.draw(self.background)
        self.world.screen.blit(self.background, (0, 0))
        pygame.display.flip()

    def _update_view(self):
        """ Actualiza la vista"""
        self.group.clear(self.world.screen, self.background)
        pygame.display.update(self.group.draw(self.world.screen))


    def on_event(self, event):
        if event.type in common.MOUSE_EVENTS:
            self.mouse.send_event(event)
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_b:
                self.table.blink_checkers_that_can_move()
            elif event.key == pygame.K_u:
                #for DEBUG
                mov = ask(self.world.screen, "Convertir a Dama")
                regular = re.compile(r'^([0-7]),([0-7])$')
                if not regular.match(mov):
                    message = 'Fichas ' + mov + ' invalida'
                    self.update_view()
                else:
                    r, _, c = tuple(mov)
                    try:
                        if self.table.square_occupied((int(r),int(c))):
                            self.table.convert_to_king((int(r),int(c)))
                    except ValueError, mesg:
                        print mesg

                    finally:
                        self.update_view()