def level_loop(self, level=1, cheat_lives=False, cheat_weaps=False, toLoad=False): '''Looper that ensures everything is set up for main(), while also allowing a loaded file to work correctly.''' pygame.mouse.set_visible(False) ##turn the mouse back off if not toLoad: self.loader = levelLoader.LevelLoader(level) curr_score = 0 curr_time = 0 playerShip = None if cheat_lives: curr_lives = 100 else: curr_lives = 3 if cheat_weaps: playerShip = Entity.Player( 'master_lazer', MISC_SPRITES_PATH.joinpath('SweetShip.png'), "arrows") else: pickled_goods = loadGame() ##[health, shield, weapon, bombs, score, lives, time_of_save, self.loader.levelNumber] playerShip = Entity.Player( pickled_goods[2], MISC_SPRITES_PATH.joinpath('SweetShip.png'), 'arrows') playerShip.health = pickled_goods[0] playerShip.shield = pickled_goods[1] playerShip.bombs_remaining = pickled_goods[3] curr_score = pickled_goods[4] curr_lives = pickled_goods[5] curr_time = pickled_goods[6] self.loader = levelLoader.LevelLoader(pickled_goods[7]) still_playing = True while still_playing: curr_lives, curr_score, next_level, playerShip = self.main( curr_lives, curr_score, playerShip, curr_time) is_next_level = self.loader.nextLevel() if not next_level: still_playing = False elif not is_next_level: still_playing = False self.victory() if self.hs_list.belongsOnList(curr_score): name = self.add_to_hs( 'You set a new high score! Enter your initials!') self.hs_list.add(name, curr_score) self.hs_list.writeToFile( EVENT_SCROLL_PATH.joinpath('highscores.asset')) self.loader = levelLoader.LevelLoader() pygame.mouse.set_visible(True)
def test_nextLevel(self): pygame.init() screen = pygame.display.set_mode((1, 1)) screen.fill((0, 0, 0)) pygame.display.set_caption('Testy mcTetsterson') loader = levelLoader.LevelLoader(0) level0 = loader.level self.assertTrue(loader.nextLevel()) level1 = loader.level self.assertFalse(level0 == level1)
def test_getEndBehavior(self): pygame.init() screen = pygame.display.set_mode((1, 1)) screen.fill((0, 0, 0)) pygame.display.set_caption('Testy mcTetsterson') loader = levelLoader.LevelLoader(0) e = loader.getEndBehavior() self.assertTrue(e["boss"]) self.assertEqual(e['time'], 80)
def test__init__(self): pygame.init() screen = pygame.display.set_mode((1, 1)) screen.fill((0, 0, 0)) pygame.display.set_caption('Testy mcTetsterson') loader = levelLoader.LevelLoader(0) events = loader.level e = loader.getEvents(0) self.assertEqual(os.path.basename(e['player'][0].imageFile), "SweetShip.png") self.assertEqual(os.path.basename(e['background']), "starfield.png") self.assertEqual(e['player'][0].rect.x, 920) #these come from library self.assertEqual(e['player'][0].rect.y, 860) self.assertEqual(e['player'][0].control_scheme, "arrows") self.assertEqual(e['player'][0].weapon.name, 'blue_lazer')
def test__getEvent__(self): pygame.init() screen = pygame.display.set_mode((1, 1)) screen.fill((0, 0, 0)) pygame.display.set_caption('Testy mcTetsterson') loader = levelLoader.LevelLoader(0) self.assertFalse(loader.getEvents("not a valid time")) sprite = loader.getEvents(3) self.assertFalse(loader.getEvents(3)) #should erase from loader #make sure proper enemy is created speed = sprite["enemy"][0].speed acceleration = sprite["enemy"][0].acceleration angle = sprite["enemy"][0].angle health = sprite["enemy"][0].health itemDropTable = sprite["enemy"][0].itemDropTable self.assertEqual(speed, 3) self.assertEqual(acceleration, 0) self.assertEqual(angle, 0) self.assertEqual(health, 1) self.assertEqual(itemDropTable, ('spitfire_powerup', 1))
def test_loader_setter(self): window = GUI.GUI() loader = levelLoader.LevelLoader() window.loader = loader self.assertEqual(window.loader, loader) flag = False try: window.loader = '42' except RuntimeError as rte: flag = True finally: self.assertTrue(flag) flag = True try: window.loader = None except RuntimeError as rte: flag = False finally: self.assertTrue(flag) pygame.quit()