if ev.type == pygame.QUIT: sys.exit () # We could handle other events separately, too, but do not care. # Draw the rectangle on the screen. cnt -= 1 if cnt == 0: rnd = (random.randint (0, 5), random.randint (0, 5), \ random.randint (0, 5)) color = (rnd[0] * 340) % 255, (rnd[1] * 122) % 255, \ (rnd[2] * 278) % 255 pygame.draw.rect (screen, color, (60, 50, 50, 50)) cnt = 100 # Pass all received events to the Renderer. We also could pass only # a subset of them, but want it to get all. re.distribute_events (*events) # Force a refresh of the UI elements as our main screen changed and # we want them to be placed upon the changes (look at the # intersection with the rectangle). re.refresh () # We do not need to flip as it is done in the refresh() method of # the Renderer. If we assign just a part of the screen to the # Renderer, we would have to, of course. # pygame.display.flip () # Do not use 100% CPU. pygame.time.delay (15)
class DoctorsSurgery(Game): def __init__(self, screen, *args, **kw): Game.__init__(self, *args, **kw) self.re = Renderer () self.re.screen = screen self.doctor_widget = DoctorWidget() self.doctor_widget.button.connect_signal('clicked', self.doit) for radio in self.doctor_widget.radios: radio.connect_signal('toggled', self.update_selection) self.re.add_widget( self.doctor_widget.table ) # {'SIGNALS_KEYS': (2, 3), # 'SIGNALS_MOUSE': (5, 4, 6), # 'SIG_ACTIVATED': 'activated', # 'SIG_CLICKED': 'clicked', # 'SIG_DESTROYED': 'destroyed', # 'SIG_DIALOGRESPONSE': 'dialog-response', # 'SIG_DOUBLECLICKED': 'double-clicked', # 'SIG_ENTER': 'entered', # 'SIG_FOCUSED': 'focused', # 'SIG_INPUT': 'input', # 'SIG_KEYDOWN': 2, # 'SIG_KEYUP': 3, # 'SIG_LEAVE': 'left', # 'SIG_LISTCHANGED': 'list-changed', # 'SIG_MOUSEDOWN': 5, # 'SIG_MOUSEMOVE': 4, # 'SIG_MOUSEUP': 6, # 'SIG_SCREENCHANGED': 28, # 'SIG_SELECTCHANGED': 'selection-changed', # 'SIG_TICK': 25, # 'SIG_TOGGLED': 'toggled', # 'SIG_TWISTED': 26, # 'SIG_UPDATED': 27, # 'SIG_VALCHANGED': 'value-changed'} # RADIOBUTTON SIGNALS # {2: None, # 4: [], # 5: [], # 6: [], # 'clicked': [], # 'destroyed': [], # 'entered': [], # 'focused': [], # 'left': [], # 'toggled': []} self.update_selection() def doit(self): radios = self.doctor_widget.radios data.sounds.Play("fx02laughter") #data.sounds.Play("fx03hit1") #data.sounds.sounds["fx02laughter"].play() #print data.sounds.sounds["fx02laughter"].get_length() #pygame.mixer.music.load(os.path.join("data","sounds","fx02laughter.ogg")) #pygame.mixer.music.play() selection = [btn.text for btn in radios if btn.state == 2][0] if selection == "Fix my eye": data.where_to = 'eyefix' if selection == "Leave doctors surgery": data.where_to = 'gig_select' def update_selection(self, *args): print args radios = self.doctor_widget.radios selection = [btn.text for btn in radios if btn.state == 2][0] self.selected = DOCTOR_CHOICES[ selection ] self.changed = True print selection def handle_events(self, events): Game.handle_events(self, events) for e in events: if e.type == KEYDOWN and e.key == K_ESCAPE: self.stop() break self.re.distribute_events (*events) # TODO: WHERE SHOULD THIS GO? # if self.doctor_widget.button.state == 2: # self.stop() def update(self, elapsed_time): Game.update(self, elapsed_time) if not pygame.mixer.music.get_busy(): self.play_random_music() def draw(self, screen): rects = Game.draw(self, screen) self.re.screen = screen if self.changed: # self.re.screen.fill ((234, 228, 223)) self.re.screen.blit(self.selected, (0,0)) self.changed = 0 self.re.refresh () #rects.extend([screen.get_rect()]) return rects def stop(self): """ """ print 'gig_select stopped' self.going = False pygame.mixer.music.fadeout(100) def start(self): """ """ print 'doctors_surgery started' self.going = True self.changed = True self.re.refresh () self.elapsed_time = 0.0 self.play_random_music() def play_random_music(self): import random #fname = random.choice("loop01.ogg loop02.ogg loop03.ogg loop04doctor.ogg loop05.ogg loop06doctor2.ogg loop07.ogg loop08end.ogg opener.ogg".split()) fname = random.choice("loop01.ogg loop02.ogg loop03.ogg loop04doctor.ogg loop05.ogg loop06doctor2.ogg loop07.ogg loop08end.ogg".split()) pygame.mixer.music.load(os.path.join("data","music",fname)) pygame.mixer.music.play()
class GigSelect(Game): def __init__(self, screen, *args, **kw): Game.__init__(self, *args, **kw) self.re = Renderer () self.re.screen = screen self.gig_widget = GigWidget() self.gig_widget.button.connect_signal('clicked', self.done_it) self.gig_widget.doctor_button.connect_signal('clicked', self.go_doctor) for radio in self.gig_widget.radios: radio.connect_signal('toggled', self.update_selection) self.re.add_widget( self.gig_widget.table ) # {'SIGNALS_KEYS': (2, 3), # 'SIGNALS_MOUSE': (5, 4, 6), # 'SIG_ACTIVATED': 'activated', # 'SIG_CLICKED': 'clicked', # 'SIG_DESTROYED': 'destroyed', # 'SIG_DIALOGRESPONSE': 'dialog-response', # 'SIG_DOUBLECLICKED': 'double-clicked', # 'SIG_ENTER': 'entered', # 'SIG_FOCUSED': 'focused', # 'SIG_INPUT': 'input', # 'SIG_KEYDOWN': 2, # 'SIG_KEYUP': 3, # 'SIG_LEAVE': 'left', # 'SIG_LISTCHANGED': 'list-changed', # 'SIG_MOUSEDOWN': 5, # 'SIG_MOUSEMOVE': 4, # 'SIG_MOUSEUP': 6, # 'SIG_SCREENCHANGED': 28, # 'SIG_SELECTCHANGED': 'selection-changed', # 'SIG_TICK': 25, # 'SIG_TOGGLED': 'toggled', # 'SIG_TWISTED': 26, # 'SIG_UPDATED': 27, # 'SIG_VALCHANGED': 'value-changed'} # RADIOBUTTON SIGNALS # {2: None, # 4: [], # 5: [], # 6: [], # 'clicked': [], # 'destroyed': [], # 'entered': [], # 'focused': [], # 'left': [], # 'toggled': []} self.update_selection() def done_it(self): """ we have selected a gig. """ data.where_to = "note_guess" def go_doctor(self): """ """ data.where_to = "doctors_surgery" print "asdf" def update_selection(self, *args): print args radios = self.gig_widget.radios selection = [btn.text for btn in radios if btn.state == 2][0] self.selected = GIG_CHOICES[ selection ] self.changed = True print selection def handle_events(self, events): Game.handle_events(self, events) for e in events: if e.type == KEYDOWN and e.key == K_ESCAPE: #self.stop() break self.re.distribute_events (*events) # TODO: WHERE SHOULD THIS GO? # if self.gig_widget.button.state == 2: # self.stop() def update(self, elapsed_time): Game.update(self, elapsed_time) def draw(self, screen): rects = Game.draw(self, screen) self.re.screen = screen if self.changed: # self.re.screen.fill ((234, 228, 223)) self.re.screen.blit(self.selected, (0,0)) self.changed = 0 self.re.refresh () # update the whole screen. #rects.extend([screen.get_rect()]) return rects def stop(self): """ """ print 'gig_select stopped' self.going = False def start(self): """ """ print 'gig_select started' self.going = True self.changed = True self.re.refresh () self.elapsed_time = 0.0
class DoctorsSurgery(Game): def __init__(self, screen, *args, **kw): Game.__init__(self, *args, **kw) self.re = Renderer() self.re.screen = screen self.doctor_widget = DoctorWidget() self.doctor_widget.button.connect_signal('clicked', self.doit) for radio in self.doctor_widget.radios: radio.connect_signal('toggled', self.update_selection) self.re.add_widget(self.doctor_widget.table) # {'SIGNALS_KEYS': (2, 3), # 'SIGNALS_MOUSE': (5, 4, 6), # 'SIG_ACTIVATED': 'activated', # 'SIG_CLICKED': 'clicked', # 'SIG_DESTROYED': 'destroyed', # 'SIG_DIALOGRESPONSE': 'dialog-response', # 'SIG_DOUBLECLICKED': 'double-clicked', # 'SIG_ENTER': 'entered', # 'SIG_FOCUSED': 'focused', # 'SIG_INPUT': 'input', # 'SIG_KEYDOWN': 2, # 'SIG_KEYUP': 3, # 'SIG_LEAVE': 'left', # 'SIG_LISTCHANGED': 'list-changed', # 'SIG_MOUSEDOWN': 5, # 'SIG_MOUSEMOVE': 4, # 'SIG_MOUSEUP': 6, # 'SIG_SCREENCHANGED': 28, # 'SIG_SELECTCHANGED': 'selection-changed', # 'SIG_TICK': 25, # 'SIG_TOGGLED': 'toggled', # 'SIG_TWISTED': 26, # 'SIG_UPDATED': 27, # 'SIG_VALCHANGED': 'value-changed'} # RADIOBUTTON SIGNALS # {2: None, # 4: [], # 5: [], # 6: [], # 'clicked': [], # 'destroyed': [], # 'entered': [], # 'focused': [], # 'left': [], # 'toggled': []} self.update_selection() def doit(self): radios = self.doctor_widget.radios data.sounds.Play("fx02laughter") #data.sounds.Play("fx03hit1") #data.sounds.sounds["fx02laughter"].play() #print data.sounds.sounds["fx02laughter"].get_length() #pygame.mixer.music.load(os.path.join("data","sounds","fx02laughter.ogg")) #pygame.mixer.music.play() selection = [btn.text for btn in radios if btn.state == 2][0] if selection == "Fix my eye": data.where_to = 'eyefix' if selection == "Leave doctors surgery": data.where_to = 'gig_select' def update_selection(self, *args): print args radios = self.doctor_widget.radios selection = [btn.text for btn in radios if btn.state == 2][0] self.selected = DOCTOR_CHOICES[selection] self.changed = True print selection def handle_events(self, events): Game.handle_events(self, events) for e in events: if e.type == KEYDOWN and e.key == K_ESCAPE: self.stop() break self.re.distribute_events(*events) # TODO: WHERE SHOULD THIS GO? # if self.doctor_widget.button.state == 2: # self.stop() def update(self, elapsed_time): Game.update(self, elapsed_time) if not pygame.mixer.music.get_busy(): self.play_random_music() def draw(self, screen): rects = Game.draw(self, screen) self.re.screen = screen if self.changed: # self.re.screen.fill ((234, 228, 223)) self.re.screen.blit(self.selected, (0, 0)) self.changed = 0 self.re.refresh() #rects.extend([screen.get_rect()]) return rects def stop(self): """ """ print 'gig_select stopped' self.going = False pygame.mixer.music.fadeout(100) def start(self): """ """ print 'doctors_surgery started' self.going = True self.changed = True self.re.refresh() self.elapsed_time = 0.0 self.play_random_music() def play_random_music(self): import random #fname = random.choice("loop01.ogg loop02.ogg loop03.ogg loop04doctor.ogg loop05.ogg loop06doctor2.ogg loop07.ogg loop08end.ogg opener.ogg".split()) fname = random.choice( "loop01.ogg loop02.ogg loop03.ogg loop04doctor.ogg loop05.ogg loop06doctor2.ogg loop07.ogg loop08end.ogg" .split()) pygame.mixer.music.load(os.path.join("data", "music", fname)) pygame.mixer.music.play()