Beispiel #1
0
 def _dispatch_events(self):
     from time import sleep
     while not self._quit:
         self._lock()
         try:
             media.dispatch_events()
         finally:
             self._unlock()
         sleep(_MEDIA_DISPATCH_INTERVAL)
Beispiel #2
0
 def run(self):
   clock.set_fps_limit(30)
   sim_time = 0.0
   real_time = 0.0
   frames_skipped = 0
   while not self.has_exit:
     real_time += clock.tick()
     self.dispatch_events()
     media.dispatch_events()
     draw = sim_time >= real_time
     if frames_skipped >= 1:
       draw = True
       frames_skipped = 0
       real_time = sim_time
     self.tick(draw)
     if not draw:
       frames_skipped += 1
     sim_time += 1 / 30.0
def step_events():
    win.dispatch_events()
    media.dispatch_events()
    clock.tick()
def run(xml_file):
    gui = GUI(window)
    loadxml.fromFile(gui, xml_file)
    if '--dump' in sys.argv:
        print '-' * 75
        gui.dump()
        print '-' * 75

    window.push_handlers(gui)

    gui.push_handlers(dragndrop.DragHandler('.draggable'))

    @gui.select('#press-me')
    def on_click(widget, *args):
        print 'on_click', widget
        return event.EVENT_HANDLED

    @gui.select('#enable-other')
    def on_click(widget, *args):
        w = gui.get('#press-me')
        w.setEnabled(not w.isEnabled())
        return event.EVENT_HANDLED

    @gui.select('button, text-button')
    def on_click(widget, *args):
        print 'DEBUG', widget, 'PRESSED'
        return event.EVENT_UNHANDLED

    @gui.select('.show-value')
    def on_change(widget, value):
        print 'DEBUG', widget, 'VALUE CHANGED', ` value `
        return event.EVENT_UNHANDLED

    @gui.select('frame#menu-test', 'on_click')
    def on_menu(w, x, y, button, modifiers, click_count):
        if not widgets.PopupMenu.isActivatingClick(button, modifiers):
            return event.EVENT_UNHANDLED
        gui.get('#test-menu').expose((x, y))
        return event.EVENT_HANDLED

    @gui.select('.hover')
    def on_element_enter(widget, *args):
        print 'ENTER ELEMENT', widget.id
        return event.EVENT_HANDLED

    @gui.select('.hover')
    def on_element_leave(widget, *args):
        print 'LEAVE ELEMENT', widget.id
        return event.EVENT_HANDLED

    @gui.select('.drawer-control')
    def on_click(widget, *args):
        id = widget.id.replace('drawer-control', 'test-drawer')
        gui.get('#' + id).toggle_state()
        return event.EVENT_HANDLED

    @gui.select('#question-dialog-test')
    def on_click(widget, *args):
        def f(*args):
            print 'DIALOG SAYS', args

        dialogs.Question(widget.getGUI(),
                         'Did this appear correctly?',
                         callback=f).run()
        return event.EVENT_HANDLED

    @gui.select('#message-dialog-test')
    def on_click(widget, *args):
        def f(*args):
            print 'DIALOG SAYS', args

        dialogs.Message(widget.getGUI(), 'Hello, World!', callback=f).run()
        return event.EVENT_HANDLED

    @gui.select('#music-test')
    def on_click(widget, x, y, button, modifiers, click_count):
        if not button & mouse.RIGHT:
            return event.EVENT_UNHANDLED

        def load_music(file=None):
            if not file: return
            gui.get('#music-test').delete()
            m = widgets.Music(gui, file, id='music-test', playing=True)
            m.gainFocus()

        dialogs.FileOpen(gui, callback=load_music).run()
        return event.EVENT_HANDLED

    @gui.select('#movie-test')
    def on_click(widget, x, y, button, modifiers, click_count):
        if not button & mouse.RIGHT:
            return event.EVENT_UNHANDLED

        def load_movie(file=None):
            print 'DIALOG SELECTION:', file
            if not file: return
            gui.get('#movie-test').delete()
            m = widgets.Movie(gui, file, id='movie-test', playing=True)
            m.gainFocus()

        dialogs.FileOpen(gui, callback=load_movie).run()
        return event.EVENT_HANDLED

    @gui.select('#movie-test')
    def on_text(widget, text):
        if text == 'f':
            gui.get('#movie-test').video.pause()
            anim.Delayed(gui.get('#movie-test').video.play, duration=10)
            window.set_fullscreen()
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drop(widget, x, y, button, modifiers, element):
        element.reparent(widget)
        widget.bgcolor = (1, 1, 1, 1)
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drag_enter(widget, x, y, element):
        widget.bgcolor = (.8, 1, .8, 1)
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drag_leave(widget, x, y, element):
        widget.bgcolor = (1, 1, 1, 1)
        return event.EVENT_HANDLED

    try:
        sample = gui.get('#xhtml-sample')
    except KeyError:
        sample = None
    if sample:

        @layout.select('#click-me')
        def on_mouse_press(element, x, y, button, modifiers):
            print 'CLICK ON', element
            return event.EVENT_HANDLED

        sample.label.push_handlers(on_mouse_press)

    if gui.has('.progress-me'):

        class Progress:
            progress = 0
            direction = 1

            def animate(self, dt):
                self.progress += dt * self.direction
                if self.progress > 5:
                    self.progress = 5
                    self.direction = -1
                elif self.progress < 0:
                    self.progress = 0
                    self.direction = 1
                for e in gui.get('.progress-me'):
                    e.value = self.progress / 5.

        animate_progress = Progress().animate
        clock.schedule(animate_progress)

    my_escape.has_exit = False
    while not (window.has_exit or my_escape.has_exit):
        clock.tick()
        window.dispatch_events()
        media.dispatch_events()

        glClearColor(.2, .2, .2, 1)
        glClear(GL_COLOR_BUFFER_BIT)
        gui.draw()
        fps.draw()
        window.flip()
        if '--once' in sys.argv:
            window.close()
            sys.exit()

    if '--dump' in sys.argv:
        print '-' * 75
        gui.dump()
        print '-' * 75

    if gui.has('.progress-me'):
        clock.unschedule(animate_progress)

    # reset everything
    window.pop_handlers()
    gui.delete()
    window.set_size(800, 600)

    return window.has_exit
compare_hands('Ac Jc Kc Tc Qc', 'Ac Qd Jh 4c 2c', FIRST)   # royal flush beats everything
compare_hands('Ac Jc Kc Tc Qc', 'Ac Ad 8h 7c Tc', FIRST)
compare_hands('Ac Jc Kc Tc Qc', 'Ac Ad 8h 7c 7s', FIRST)
compare_hands('Ac Jc Kc Tc Qc', '8c 8d 8h 7c Tc', FIRST)
compare_hands('Ac Jc Kc Tc Qc', '8c 7d 6h 5c 4c', FIRST)
compare_hands('Ac Jc Kc Tc Qc', 'Ac 2d 3h 4c 5c', FIRST)
compare_hands('Ac Jc Kc Tc Qc', 'Ac Jd Kh Tc Qc', FIRST)
compare_hands('Ac Jc Kc Tc Qc', '8c 6c 5c Qc Jc', FIRST)
compare_hands('Ac Jc Kc Tc Qc', '8c 8d 8h 6d 6h', FIRST)
compare_hands('Ac Jc Kc Tc Qc', 'Qc Qd Qh Qs 6h', FIRST)
compare_hands('Ac Jc Kc Tc Qc', 'Ah 4h 2h 3h 5h', FIRST)
compare_hands('Ac Jc Kc Tc Qc', 'Ac Jc Kc Tc Qc', SPLIT)
compare_hands('9c 8d 7h 6c 5c', '8c 7d 6h 5c 4c', FIRST)   # high card in straights win
compare_hands('9c 8c 7c 6c 5c', '8c 7c 6c 5c 4c', FIRST)   # high card in straight flushes win
compare_hands('Jc Js Td Th Tc', 'Qc Qd Qh Qs 6h', SECOND)  # 4-kind beats full house
compare_hands('Jc Js Jd Jh Tc', 'Qc Qd Qh Qs 6h', SECOND)  # higher rank in 4 of a kind wins
compare_hands('Ac As Ad 6h 6c', 'Qc Qd Qh Ts Th', FIRST)   # higher rank in Fh wins
compare_hands('Ac As Ad 6h 6c', 'Ac Ad Ah Ts Th', SECOND)  # higher rank in Fh wins
compare_hands('Ac As Ad 6h 6c', 'Ac Ad Ah 6s 6h', SPLIT)
compare_hands('6c Tc Qc 2c 9c', 'Kh 4h 9h Jh 8h', SECOND)  # high card in flush wins

while not win.has_exit:
    win.dispatch_events()
    media.dispatch_events()
    clock.tick()
    win.clear()
    render_hand(h)
    text.draw()
    fps.draw()
    win.flip()
Beispiel #6
0
        balls.append(Ball())
    elif symbol == key.BACKSPACE:
        if balls:
            del balls[-1]
    elif symbol == key.ESCAPE:
        window.has_exit = True


if __name__ == '__main__':
    glEnable(GL_BLEND)
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

    label = font.Text(font.load('Arial', 14),
                      'Press space to add a ball, backspace to remove.',
                      window.width / 2,
                      10,
                      halign=font.Text.CENTER)

    while not window.has_exit:
        window.dispatch_events()
        media.dispatch_events()
        dt = clock.tick()

        glClear(GL_COLOR_BUFFER_BIT)
        for ball in balls:
            ball.update(dt)
            ball.draw()
        label.draw()

        window.flip()
Beispiel #7
0
def run(xml_file):
    gui = GUI(window)
    loadxml.fromFile(gui, xml_file)
    if '--dump' in sys.argv:
        print('-' * 75)
        gui.dump()
        print('-' * 75)

    window.push_handlers(gui)

    gui.push_handlers(dragndrop.DragHandler('.draggable'))

    @gui.select('#press-me')
    def on_click(widget, *args):
        print('on_click', widget)
        return event.EVENT_HANDLED

    @gui.select('#enable-other')
    def on_click(widget, *args):
        w = gui.get('#press-me')
        w.setEnabled(not w.isEnabled())
        return event.EVENT_HANDLED

    @gui.select('button, text-button')
    def on_click(widget, *args):
        print('DEBUG', widget, 'PRESSED')
        return event.EVENT_UNHANDLED

    @gui.select('.show-value')
    def on_change(widget, value):
        print('DEBUG', widget, 'VALUE CHANGED', repr(value))
        return event.EVENT_UNHANDLED

    @gui.select('frame#menu-test', 'on_click')
    def on_menu(w, x, y, button, modifiers, click_count):
        if not widgets.PopupMenu.isActivatingClick(button, modifiers):
            return event.EVENT_UNHANDLED
        gui.get('#test-menu').expose((x, y))
        return event.EVENT_HANDLED

    @gui.select('.hover')
    def on_element_enter(widget, *args):
        print('ENTER ELEMENT', widget.id)
        return event.EVENT_HANDLED

    @gui.select('.hover')
    def on_element_leave(widget, *args):
        print('LEAVE ELEMENT', widget.id)
        return event.EVENT_HANDLED

    @gui.select('.drawer-control')
    def on_click(widget, *args):
        id = widget.id.replace('drawer-control', 'test-drawer')
        gui.get('#' + id).toggle_state()
        return event.EVENT_HANDLED

    @gui.select('#question-dialog-test')
    def on_click(widget, *args):
        def f(*args):
            print('DIALOG SAYS', args)

        dialogs.Question(widget.getGUI(), 'Did this appear correctly?',
                         callback=f).run()
        return event.EVENT_HANDLED

    @gui.select('#message-dialog-test')
    def on_click(widget, *args):
        def f(*args):
            print('DIALOG SAYS', args)

        dialogs.Message(widget.getGUI(), 'Hello, World!', callback=f).run()
        return event.EVENT_HANDLED

    @gui.select('#music-test')
    def on_click(widget, x, y, button, modifiers, click_count):
        if not button & mouse.RIGHT:
            return event.EVENT_UNHANDLED

        def load_music(file=None):
            if not file:
                return
            gui.get('#music-test').delete()
            m = widgets.Music(gui, file, id='music-test', playing=True)
            m.gainFocus()

        dialogs.FileOpen(gui, callback=load_music).run()
        return event.EVENT_HANDLED

    @gui.select('#movie-test')
    def on_click(widget, x, y, button, modifiers, click_count):
        if not button & mouse.RIGHT:
            return event.EVENT_UNHANDLED

        def load_movie(file=None):
            print('DIALOG SELECTION:', file)
            if not file:
                return
            gui.get('#movie-test').delete()
            m = widgets.Movie(gui, file, id='movie-test', playing=True)
            m.gainFocus()

        dialogs.FileOpen(gui, callback=load_movie).run()
        return event.EVENT_HANDLED

    @gui.select('#movie-test')
    def on_text(widget, text):
        if text == 'f':
            gui.get('#movie-test').video.pause()
            anim.Delayed(gui.get('#movie-test').video.play, duration=10)
            window.set_fullscreen()
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drop(widget, x, y, button, modifiers, element):
        element.reparent(widget)
        widget.bgcolor = (1, 1, 1, 1)
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drag_enter(widget, x, y, element):
        widget.bgcolor = (.8, 1, .8, 1)
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drag_leave(widget, x, y, element):
        widget.bgcolor = (1, 1, 1, 1)
        return event.EVENT_HANDLED

    try:
        sample = gui.get('#xhtml-sample')
    except KeyError:
        sample = None
    if sample:
        @layout.select('#click-me')
        def on_mouse_press(element, x, y, button, modifiers):
            print('CLICK ON', element)
            return event.EVENT_HANDLED

        sample.label.push_handlers(on_mouse_press)

    if gui.has('.progress-me'):
        class Progress:
            progress = 0
            direction = 1

            def animate(self, dt):
                self.progress += dt * self.direction
                if self.progress > 5:
                    self.progress = 5
                    self.direction = -1
                elif self.progress < 0:
                    self.progress = 0
                    self.direction = 1
                for e in gui.get('.progress-me'):
                    e.value = self.progress / 5.

        animate_progress = Progress().animate
        clock.schedule(animate_progress)

    my_escape.has_exit = False
    while not (window.has_exit or my_escape.has_exit):
        clock.tick()
        window.dispatch_events()
        media.dispatch_events()

        glClearColor(.2, .2, .2, 1)
        glClear(GL_COLOR_BUFFER_BIT)
        gui.draw()
        fps.draw()
        window.flip()
        if '--once' in sys.argv:
            window.close()
            sys.exit()

    if '--dump' in sys.argv:
        print('-' * 75)
        gui.dump()
        print('-' * 75)

    if gui.has('.progress-me'):
        clock.unschedule(animate_progress)

    # reset everything
    window.pop_handlers()
    gui.delete()
    window.set_size(800, 600)

    return window.has_exit
def step_events():
    win.dispatch_events()
    media.dispatch_events()
    clock.tick()