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)
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()
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()
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()