Ejemplo n.º 1
0
def create_game_levels():
    """
    :return: a list of level objects
     Creates the levels used in this game, in sequential order
    """

    return [level.Level1(),
            level.Level2(),
            level.Level3()]
Ejemplo n.º 2
0
 def getLevel(self, levelNumber):
     if self.levelNumber == 0:
         self.currLevel = level.Level0(self.avengersObj)
     elif self.levelNumber == 1:
         self.currLevel = level.Level1(self.avengersObj)
     elif self.levelNumber == 2:
         self.currLevel = level.Level2(self.avengersObj)
     elif self.levelNumber == 3:
         self.currLevel = level.Level3(self.avengersObj)
     elif self.levelNumber == 4:
         self.currLevel = level.Level4(self.avengersObj)
     elif self.levelNumber == 5:
         self.currLevel = level.Level5(self.avengersObj)
     else:
         self.currLevel = None
Ejemplo n.º 3
0
 def getCurrentLevel(self):
     if self.levelNumber == -1:
         return level.LevelNeg1(self)
     elif self.levelNumber == 0:
         return level.Level0(self)
     elif self.levelNumber == 1:
         return level.Level1(self)
     elif self.levelNumber == 2:
         return level.Level2(self)
     elif self.levelNumber == 3:
         return level.Level3(self)
     elif self.levelNumber == 4:
         return level.Level4(self)
     elif self.levelNumber == 5:
         return level.Level5(self)
     else:
         return None
Ejemplo n.º 4
0
def begin_game():
    # setup
    sprite_groups.tower_icon_sprites.add(
        icon.create_tower_icon(icon.LINEAR_TOWER_ICON, (300, 100)),
        icon.create_tower_icon(icon.THREE_SIXTY_TOWER_ICON, (300, 150)),
        icon.create_tower_icon(icon.EXPLOSION_TOWER_ICON, (300, 200)),
        icon.create_tower_icon(icon.TELEPORTATION_TOWER_ICON, (300, 250)))

    basic_dashboard = pygame.draw.rect(DISPLAYSURF, colours.GRAY,
                                       (0, 300, 400, 100))

    # select font type
    bank_balance_font = game_utility.set_bank_balance_font()
    life_point_font = game_utility.set_life_point_font()

    levels = [level.Level1(), level.Level2(),
              level.Level3()]  # game_utility.create_game_levels()
    current_level = levels.pop(0)

    make_new_balloon_countdown = 10  # called every frame and dictates when to make new balloon

    # create left button click event handlers
    null_click_handler = NullClickHandler(None)
    create_new_tower_click_handler = CreateNewTowerClickHandler(
        null_click_handler)
    sell_tower_icon_click_handler = SellTowerIconClickHandler(
        create_new_tower_click_handler)
    upgrade_icon_click_handler = UpgradeIconClickHandler(
        sell_tower_icon_click_handler)
    tower_click_handler = TowerClickHandler(upgrade_icon_click_handler)
    tower_icon_click_handler = TowerIconClickHandler(tower_click_handler)

    while True:

        # if player finished this level and there are other levels remaining, start them, otherwise, proceed to "Win screen"
        if player_has_completed_level(current_level):
            if levels:
                current_level = levels.pop(0)
            else:
                return show_win_screen

        #check if the player still has life points. If not, player lost
        if life_point.life_balance <= 0:
            return show_lose_screen

        # if it's time to make a new balloon and the next balloon exists, then add that balloon to the balloon_sprites and restart countdown. If it doesn't exist, don't add it
        # if it isn't time to make a new balloon, decrement countdown
        if make_new_balloon_countdown == 0:
            if current_level.next_balloon_exists():
                sprite_groups.balloon_sprites.add(
                    current_level.get_next_balloon())
            make_new_balloon_countdown = 10
        else:
            make_new_balloon_countdown -= 1

        # handle events
        for event in pygame.event.get():
            '''Left mouse button clicked
            1. If clicked on tower icon: the mouse cursor will contain an identical tower icon, set a flag to indicate that a tower
            icon had been selected so that the next mouse click would make that tower
            2. If clicked on tower icon, show sell icon and upgrade icon
            3. If clicked on upgrade icon, notify the upgrade icon
            4. If clicked on sell tower icon, notify the sell tower icon
            5. Anywhere else
                a) if the flag to indicate to create a new tower had been set (user had clicked on a tower icon), create new tower there, and withdraw from bank
                b) nothing happens
            '''

            if event.type == pygame.locals.MOUSEBUTTONUP and event.button == 1:
                mouse_position = pygame.mouse.get_pos()
                handle_left_mouse_click(
                    tower_icon_click_handler,
                    mouse_position)  # start of chain of responsibility.

            # right mouse button is clicked. Remove the tower icon currently on the cursor (if it exists)
            elif event.type == pygame.locals.MOUSEBUTTONUP and event.button == 3:
                sprite_groups.selected_tower_icon_sprite.empty()
                sprite_groups.sell_tower_icon_sprite.empty()
                sprite_groups.upgrade_icon_sprites.empty()

            elif event.type == pygame.locals.QUIT:
                pygame.quit()
                sys.exit()

        DISPLAYSURF.fill(colours.BLACK)

        # draw dashboard and upgrade sprites
        pygame.draw.rect(DISPLAYSURF, colours.GRAY,
                         (0, 300, 400, 100))  # draw dashboard
        sprite_groups.tower_sprites.update(sprite_groups.balloon_sprites,
                                           sprite_groups.bullet_sprites)
        sprite_groups.balloon_sprites.update(sprite_groups.bullet_sprites)
        sprite_groups.bullet_sprites.update()
        sprite_groups.selected_tower_icon_sprite.update(pygame.mouse.get_pos())

        for sprite_group in sprite_groups.all_sprites:
            sprite_group.draw(DISPLAYSURF)

        # render text
        bank_balance_label = bank_balance_font.render(
            "Bank balance: {}".format(bank.balance), True, (255, 255, 0))
        DISPLAYSURF.blit(bank_balance_label, (300, 50))

        life_balance_label = life_point_font.render(
            "Life points: {}".format(life_point.life_balance), True,
            (255, 255, 0))
        DISPLAYSURF.blit(life_balance_label, (300, 30))

        fpsClock.tick(15)
        pygame.display.update()
Ejemplo n.º 5
0
import level
import time
# import gui
from solver import NaiveSolver, ParallelSolver

if __name__ == "__main__":

    lvls = [level.Level3(), level.Level13(),
            level.Level22(), level.Level26(),
            level.Level27(), level.Level29(),
            level.Level35(), level.Level50()]

    jobs = 3
    # for lvl in  lvls:
    # #     # level.SetLevelState(lvl, lvl.getSolution())
    # #     # gui.Gui(lvl).showLevel()
    #     print("######################################################################")
    #     print("solve_process Level: ", lvl)

    #     start_time = time.time()
    #     state = ParallelSolver(lvl, jobs=jobs).solve_process()
    #     print("--- %s seconds ---" % (time.time() - start_time))

    #     print("solve_pool Level: ", lvl)
    #     start_time = time.time()
    #     state = ParallelSolver(lvl, jobs=jobs).solve_pool()
    #     print("--- %s seconds ---" % (time.time() - start_time))

    #     # if (state):
    #     #     level.SetLevelState(lvl, state)
    #     #     gui.Gui(lvl).showLevel()