class SceneStackTests(unittest.TestCase): def setUp(self): self.stack = SceneStack() self.stack.append( SceneA() ) self.stack.append( SceneB() ) self.stack.append( SceneA() ) def test_stack_sequence(self): self.assertEqual(self.stack.head().get_number(), 0) # First Scene A self.stack.next() self.assertEqual(self.stack.head().get_number(), 10) # Scene B self.stack.next() self.assertEqual(self.stack.head().get_number(), 0) # Second Scene A self.stack.next() def test_update(self): dt = 1 # meaningless `dt` value self.stack.head().update(dt) self.assertEqual(self.stack.head().get_number(), 1) self.stack.next() self.stack.head().update(dt) self.assertEqual(self.stack.head().get_number(), 11) # Scene B
def main(): print "Hello, World!" pygame.init() screen = pygame.display.set_mode( conf.window.dimensions ) stack = SceneStack() #stack += [ splash.Splash(), menu.Menu() ] stack.append( menu.Menu() ) run = True while (len(stack)): for event in pygame.event.get(): if event.type == pygame.QUIT: run = False break stack.head().process_event(event) if not run: # are we still running? break stack.head().update(1) try: screen.fill( conf.clear_color ) stack.head().render(screen) pygame.display.flip() except IndexError: pass # no head, so I guess no more scenes on stack pygame.time.delay(10) if stack.head().has_ended() is True: stack.next() print "Goodbye!"