Пример #1
0
    def nodeInit(self):
        self.sg = self.view.getSceneGraph()
        self.coord = CoinNodes.coordinate3Node([(0, 0, 0)])
        self.markers = CoinNodes.markerSetNode((1, 0.35, 0.8), 70)
        self.polygon = coin.SoLineSet(
        )  #CoinNodes.sensorPolyNode((0.0,0.5,0.0),1)
        #self.polygon.transparency = 0.7
        #self.polygon.linkTo(self.coord)
        self.switch = coin.SoSwitch()
        self.empty = coin.SoSeparator()
        self.sepa = coin.SoSeparator()
        self.switch.addChild(self.sepa)
        self.switch.addChild(self.empty)
        self.switch.whichChild = 0
        self.sepa.addChild(self.coord)
        self.sepa.addChild(self.markers)
        self.sg.addChild(self.switch)

        self.info = [
            "LMB : add pole", "Del : remove last pole",
            "I / D : Increase / Decrease degree", "Left CTRL : snap",
            "Enter : Accept", "Esc : Abort"
        ]
        self.Block1 = HUD.textArea()
        self.Block1.setFont("Sans", 12.0, (0., 0., 0.))
        self.Block1.text = self.info + ["Degree : %s" % self.curve.Degree]

        self.myHud = HUD.HUD()
        self.myHud.addBlock(self.Block1)
        self.myHud.add()
Пример #2
0
def get_newgame():
    '''returns the game scene'''
    scene = Scene()

    # model
    model = GameModel()

    # controller
    ctrl = GameCtrl(model)

    # view
    hud = HUD()
    view = GameView(model, hud)

    # set controller in model
    model.set_controller(ctrl)

    # add controller
    scene.add(ctrl, z=1, name="controller")

    # add view
    scene.add(hud, z=3, name="hud")
    scene.add(BackgroundLayer(), z=0, name="background")
    scene.add(view, z=2, name="view")

    return scene
Пример #3
0
 def __init__(self, **kwargs):
     super(TestApp, self).__init__(**kwargs)
     Window.bind(on_key_down=self.onKeyDown)
     self.key_label = CoreLabel(text='', font_size=15)
     self.hud = HUD(self.canvas)
     self.gps_status_label = CoreLabel(text='', font_size=12)
     self.gps_location_label = CoreLabel(text='', font_size=12)
     self.uid_label = CoreLabel(text='UID: ', font_size=12)
     self.my_lat = 0
     self.my_lon = 0
     self.my_heading = 0
Пример #4
0
	def __init__(self):
		super(Scene, self).__init__()

		self.all_object_list = pygame.sprite.Group()
		self.troll_list = pygame.sprite.Group()
		self.bullet_list = pygame.sprite.Group()
		self.player = Player()
		self.background = Object()
		self.hud = HUD()
		self.score = 0
		self.game_over = False
Пример #5
0
    def __init__(self):
        pygame.init()

        # Initializing file manager and loading icon
        self.fileManager = FileManager.FileManager('Textures', 'Sounds')

        # Display properties
        pygame.display.set_icon(self.fileManager.icon)
        self.screen = pygame.display.set_mode((800, 600))
        pygame.display.set_caption('Pulse')

        # Setting background
        self.fileManager.loadBackground()
        self.background = self.fileManager.backgroundTexture
        # Display update
        self.cleanWindow()
        pygame.display.flip()

        # Initializing game files
        self.fileManager.loadGameFiles()
        # Initializing game objects
        self.gameObjects = GameObjects.GameObjects()
        # Initializing level manager
        self.levelManager = LevelManager.LevelManager(self.fileManager,
                                                      self.gameObjects)
        # Initializing menues
        self.menues = Menues.Menues(self.fileManager, self.levelManager)

        # Initializing HUD
        self.HUD = pygame.sprite.RenderPlain()
        self.HUDObject = HUD.HUD(self.levelManager.currentLevel(), True)
        self.HUD.add(self.HUDObject)

        # Adding notifieras to gameObjects
        self.gameObjects.addNotifier(self.HUDObject)
        self.gameObjects.addNotifier(self.levelManager)

        # Initializing clock
        self.clock = pygame.time.Clock()

        # Game running. Showing nenu on False.
        self.gameRunning = False

        # Starting music
        pygame.mixer.music.play(-1)

        # Showing main menu
        self.menues.main()
Пример #6
0
 def __init__(self, **kwargs):
     super(TestApp, self).__init__(**kwargs)
     Window.bind(on_key_down=self.onKeyDown)
     Window.bind(on_touch_down=self.onTouch)  #TOUCH CAPABILITY
     self.touch_count = 0  #TOUCH CAPABILITY DEBUGGING COUNTER
     self.touch_count_label = CoreLabel(
         text='', font_size=15)  #TOUCH CAPABILITY DEBUGGING COUNTER
     self.key_label = CoreLabel(text='', font_size=15)
     self.hud = HUD(self.canvas)
     self.gps_status_label = CoreLabel(text='', font_size=12)
     self.gps_location_label = CoreLabel(text='', font_size=12)
     self.uid_label = CoreLabel(text='UID: ', font_size=12)
     self.my_lat = 0
     self.my_lon = 0
     self.my_heading = 0
     self.my_accuracy = 0
     self.DEBUG = True
Пример #7
0
    def __init__(self, main):
        #print 'In HUDWindow() __init__'
        #Create HUD background screen
        self.hud = HUD()
        self.main = main

        #Create canvas on which HUD image will be drawn and load basic image
        self.canvas = Canvas(self.main, width=HUD_WIDTH, height=HUD_HEIGHT)
        self.canvas.grid(row=0, column=0)
        self.image = ImageTk.PhotoImage(self.hud.scope_canvas.display_image)
        self.canvas_image = self.canvas.create_image(0,
                                                     0,
                                                     anchor=NW,
                                                     image=self.image)

        #Call redraw initially
        self.main.after(1000, self.redraw)
Пример #8
0
def main():
    from Mediator import Mediator
    pygame.init()

    WINDOW_SIZE = (1024, 768)
    clock = pygame.time.Clock()

    screen = pygame.display.set_mode(WINDOW_SIZE, 0, 32)
    display = pygame.Surface((256, 192))

    player = Player(display, 'player', Mediator)
    print(Mediator.i)
    Mediator.all_game_entities.append(player)

    gameMap = GameMap(display, 'tiles', Mediator, player)
    hud = HUD(display, player)

    while True:
        display.fill((57, 138, 215))
        Mediator.all_game_tiles.clear()
        gameMap.draw_map()
        hud.draw_overlay()

        for object in Mediator.all_game_entities:
            object.loop()
            object.draw()

        Mediator.all_game_entities = [
            object for object in Mediator.all_game_entities
            if object not in Mediator.to_be_removed
        ]
        Mediator.to_be_removed.clear()

        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit(
                    0
                )  #TODO remember to exit with a code so we dont throw an exception i think

        surf = pygame.transform.scale(display, WINDOW_SIZE)
        screen.blit(surf, (0, 0))
        pygame.display.update()
        clock.tick(60)
Пример #9
0
    def Debug_modeINIT(self):
        self.zombies = []

        self.level_cam()

        self.pistol = gc.Gun(self.screen, self.mouse, 'pistol', -1)
        self.AR = gc.Gun(self.screen, self.mouse, 'AR', 50)
        self.SG = gc.Gun(self.screen, self.mouse, 'shootgun', 25)

        self.pistol.InHands = True

        self.guns = [self.pistol, self.AR, self.SG]

        self.player = hc.Players_Hero('Синий', self.screen, self.guns)

        self.hud = HUD.HUD(self.screen, self.hud_sprites,
                           100, self.player.GunType)

        self.pistol.Taken = True
Пример #10
0
    def nodeInit(self):
        self.sg = self.view.getSceneGraph()
        self.coord = CoinNodes.coordinate3Node([(0, 0, 0)])
        self.markers = CoinNodes.markerSetNode((1, 0.35, 0.8), 70)
        self.polygon = CoinNodes.sensorPolyNode((0.0, 0.5, 0.0), 1)
        self.polygon.transparency = 0.7
        self.polygon.linkTo(self.coord)
        self.sg.addChild(self.coord)
        self.sg.addChild(self.markers)

        self.info = [
            "LMB : add pole", "Del : remove last pole",
            "Page Up / Down : degree", "Left CTRL : snap", "Enter : Accept",
            "Esc : Abort"
        ]
        self.Block1 = HUD.textArea()
        self.Block1.setFont("Sans", 10.0, (0., 0., 0.))
        self.Block1.text = self.info + ["Degree : %s" % self.curve.Degree]

        self.myHud = HUD.HUD()
        self.myHud.addBlock(self.Block1)
        self.myHud.add()
Пример #11
0
    def main():
        pygame.init()

        # Constant variables
        SCREEN_SIZE = (600, 800)
        DISPLAY_SIZE = (300, 400)
        DARK_GREY = (50, 50, 50)

        RUNNING = True
        FPS = 60
        timer = 0

        fpsClock = pygame.time.Clock()
        #The real screen
        screen = pygame.display.set_mode(SCREEN_SIZE)
        #To cast to

        display = pygame.Surface((DISPLAY_SIZE))
        player = Player(display, 'player')
        generator = Generator(display)

        Soundplayer.load_music(Soundplayer())
        Soundplayer.play_music(Soundplayer())

        hud = HUD(display, player, DISPLAY_SIZE, generator)
        menu = Menu(display, DISPLAY_SIZE)
        # Title and Icon
        pygame.display.set_caption("The Falcon")
        icon = pygame.image.load(
            menu.resource_path('Game/sprites/playerLV1.png'))
        pygame.display.set_icon(icon)
        ## git ignore
        while RUNNING:

            ## Draw Menu ##
            if menu.get_menu:
                menu.draw_background()
                menu.draw_menu()
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        RUNNING = False
                        pygame.quit()
                        sys.exit()
                    menu.menu_input(event)
                if not menu.get_menu:
                    Mediator.all_game_objects.append(player)

                surf = pygame.transform.scale(display, SCREEN_SIZE)
                screen.blit(surf, (0, 0))
                pygame.display.update()

            else:
                ## Game loop ##
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        RUNNING = False

                menu.draw_background_scrolling(display, DISPLAY_SIZE)

                for object in Mediator.all_game_objects:
                    object.loop()
                    object.draw()

                generator.generate()

                Mediator.all_game_objects = [
                    i for i in Mediator.all_game_objects
                    if i not in Mediator.to_be_removed
                ]
                hud.draw_HUD()

                Mediator.to_be_removed.clear()

                ## Check if player is dead or game is completed
                if player.player_dead() or generator.get_game_complete():
                    generator = Generator(display)
                    hud = HUD(display, player, DISPLAY_SIZE, generator)
                    Mediator.all_game_objects.clear()
                    menu.player_dead()
                    player.reset_player()

                surf = pygame.transform.scale(display, SCREEN_SIZE)
                screen.blit(surf, (0, 0))
                pygame.display.update()
                fpsClock.tick(FPS)
Пример #12
0
from HUD import *
pygame.init()

WINDOW_SIZE = (1024,768)
clock = pygame.time.Clock()


screen = pygame.display.set_mode(WINDOW_SIZE,0,32)
display = pygame.Surface((256,192))

mediator = Mediator()
player = Player(display, 'player', mediator)
mediator.all_game_entities.append(player)

gameMap = GameMap(display, 'tiles', mediator, player)
hud = HUD(display,player)


while True:
    display.fill((57, 138, 215))
    mediator.all_game_tiles.clear()
    gameMap.draw_map()
    hud.draw_overlay()

    for object in mediator.all_game_entities:
        object.loop()
        object.draw()
    

    mediator.all_game_entities = [object for object in mediator.all_game_entities if object not in mediator.to_be_removed]
    mediator.to_be_removed.clear()
Пример #13
0
def Level(levelName, saveName):
    """
	\"Level\" type constructor
	@param levelName: levelName containing all informations about the level
	@type levelName: str

	@param saveName: Path to save levelName of current player
	@type saveName: str

	@return: Dictionnary containing all informations about level
	@rtype: dict
	"""
    assert type("Levels/" + levelName) is str

    lsFiles = os.listdir("Levels/" + levelName)
    assert "background.pic" in lsFiles, "Load level from %r failed : missing file : background.pic" % levelName
    assert "foreground.pic" in lsFiles, "Load level from %r failed : missing file : foreground.pic" % levelName

    bgItem0 = Item.Item(
        Tools.createDatasFromPic("Levels/" + levelName + "/background.pic",
                                 True), 0, 0, [70, 70, 70], fgSpeed + 30)
    bgItem1 = Item.Item(
        Tools.createDatasFromPic("Levels/" + levelName + "/background.pic",
                                 True), Item.getBaseWidth(bgItem0), 0,
        [70, 70, 70], fgSpeed + 30)

    fgItem0 = Item.Item(
        Tools.createDatasFromPic("Levels/" + levelName + "/foreground.pic"), 0,
        0, [0, 170, 0], fgSpeed)
    fgItem1 = Item.Item(
        Tools.createDatasFromPic("Levels/" + levelName + "/foreground.pic"),
        Item.getBaseWidth(fgItem0) - 1, 0, [0, 170, 0], fgSpeed)

    playerItem = loadPlayer(saveName)

    object = {
        "levelName": levelName,
        "bgItem0": bgItem0,
        "bgItem1": bgItem1,
        "fgItem0": fgItem0,
        "fgItem1": fgItem1,
        "playerItem": playerItem,
        "keyBinder": None,
        "enemyList": [],
        "playerScore": 0
    }

    kb = KeyBinder.KeyBinder(levelName[levelName.rfind("/") + 1:])
    KeyBinder.addAction(kb, "z", movePlayerUp, object)
    KeyBinder.addAction(kb, "q", movePlayerLeft, object)
    KeyBinder.addAction(kb, "s", movePlayerDown, object)
    KeyBinder.addAction(kb, "d", movePlayerRight, object)

    object["keyBinder"] = kb

    Item.setVX(object["playerItem"], 2.)
    Item.setVY(object["playerItem"], 1.)

    #load datas from config file :
    file = open("Levels/" + levelName + "/config", "r")
    content = file.read()
    file.close()
    exec(content)
    object["scoreObjective"] = scoreObjective
    object["maxEnemysNumber"] = maxEnemysNumber
    object["availableEnemys"] = availableEnemys

    hud = HUD.HUD(scoreObjective, Player.getMaxLife(playerItem))
    object["HUD"] = hud

    #print start screen
    Tools.sysExec("clear")
    startText = "\033[18;" + str(
        int(round((Object.SCREEN_WIDTH / 2) + (len(str(scoreObjective)) / 2)))
    ) + "H\033[4;1m\033[38;2;200;0;0m" + str(scoreObjective) + "\033[0m"
    Menu.printScreen("Pictures/startLevelScreen.pic", 110)
    sys.stdout.write(startText)
    print("")
    KeyBinder.waitForKeyPressed()

    for i in range(0, maxEnemysNumber):
        addEnemy(object)

    return object
Пример #14
0
def playGame(screen, character, currentInfoText):
    screen_rect = screen.get_rect()
    
    level = LevelTutorial("level/tutorial/tutorial.txt", character, currentInfoText)
    world = level.world
    crashman = level.crashman
    pygame.mouse.set_visible(True)

    camera = Camera(screen, crashman.rect, level)
    all_sprite = level.all_sprite

    
    clock = pygame.time.Clock()

    up = down = left = right = False
    x, y = 0, 0


    #randomly selects an enemy port
    enemy_list=[]
    activePortIndex=random.randrange(len(level.enemy_ports))
    activePort=level.enemy_ports[activePortIndex]




    #untilNextSpawn=level.spawn_delay
    untilNextSpawn=0
    totalTime=0
    enemyCount=0

    hud=HUD()



    #this is the while true loop
    while crashman.alive :
        for event in pygame.event.get():

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



            if event.type == KEYDOWN and (event.key == K_ESCAPE or event.key==K_RETURN):
                up=down=left=right=False
                pauseScreen(screen,character)
                
            #control crashman
            keys = pygame.key.get_pressed()  #checking pressed keys
            if keys[pygame.K_UP] or keys[pygame.K_SPACE]:
                up=True
            else:
                up=False
                
            if keys[pygame.K_DOWN]:
                down=True
            else:
                down=False
                
            if keys[pygame.K_LEFT]:
                left=True
            else:
                left=False
                
            if keys[pygame.K_RIGHT]:
                right=True
            else:
                right=False

        #sequential spawn order
        if untilNextSpawn<=0 and enemyCount<level.enemy_max:
            print "ENEMY HERE NOW"
            e=Enemy(activePort[0],activePort[1],activePort[2],level)
            enemy_list.append(e)
            level.all_sprite.add(e)
            world.append(e)
            activePortIndex+=1
            if activePortIndex>=len(level.enemy_ports):
                activePortIndex=0
            activePort=level.enemy_ports[activePortIndex]
            untilNextSpawn=level.spawn_delay
            enemyCount+=1

        #random spawn order
        """if untilNextSpawn<=0 and enemyCount<level.enemy_max:
            print "ENEMY HERE NOW"
            e=Enemy(activePort[0],activePort[1],activePort[2],level)
            enemy_list.append(e)
            level.all_sprite.add(e)
            world.append(e)
            activePortIndex=random.randrange(len(level.enemy_ports))
            activePort=level.enemy_ports[activePortIndex]
            untilNextSpawn=level.spawn_delay
            enemyCount+=1"""


        #removes dead enemies
        for e in enemy_list:
            if e.alive==False:
                print "ded del thjo"
                enemy_list.remove(e)
                all_sprite.remove(e)
                world.remove(e)
                enemyCount-=1

            if e.freshkick==True:
                hud.enemies_defeated+=1
                hud.update()
                e.freshkick=False


        

        #timer and spawn countdown
        #updates hud time
        tpt = tps(clock, FPS)
        totalTime+=tpt
        if hud.time!=math.floor(totalTime):
            hud.time=math.floor(totalTime)
            hud.update()
        
        if enemyCount<level.enemy_max:
            untilNextSpawn-=tpt
            print str(enemyCount)+": "+str(untilNextSpawn)


        #DRAW ORDER:
        #bg, world, elemental, hud
        #camera.draw_sprites(screen, all_sprite)
        level.drawBG(screen)
        camera.draw_sprites_prio(screen, all_sprite, crashman)

        if level.elemental:
            level.elementalOverlay.draw(screen)

        hud.draw(screen)
        level.drawInfo(screen)

        #final updates
        crashman.update(up, down, left, right)
        for e in enemy_list:
            e.update(tpt)
        camera.update()
        pygame.display.flip()


    #################################
    #game complete
    #pygame.display.flip()
    playGame(screen,character, level.currentInfoBlock.infoText)
Пример #15
0
def main():
    app = QApplication([])
    gui = HUD()
    app.exec_()
    print("Search Complete!")
Пример #16
0
class GameManager(object):
    screen = None
    buffer = None
    gameObject = None
    targetFPS = 60
    clock = None
    buttonHandler = None
    hud = HUD.HUD()
    drawHUD = True
    piFaceManager = None
    gameState = None
    needQuit = False
    sound = None

    def __init__(self,
                 initialGameObject,
                 targetFPS,
                 buttonHandler,
                 piFaceManager,
                 test=False):
        if test:
            self.initializeTest()
        else:
            self.gameState = GameStateSaver.GameStateSaver()
            self.gameObject = initialGameObject
            self.hud.gameState = self.gameState
            self.targetFPS = targetFPS
            self.buttonHandler = buttonHandler
            self.piFaceManager = piFaceManager
            self.initialize()
        return super(GameManager, self).__init__()

    def setCurrentGameObject(self, gameObject):
        if not gameObject.initialized:
            pygame.time.set_timer(USEREVENT + 1, 0)
            pygame.time.set_timer(USEREVENT + 2, 0)
            gameObject.gameManager = self
            gameObject.initialize()
            self.buttonHandler.unlock()
        self.gameObject = gameObject
        self.gameObject.sound = self.sound
        self.sound.resetGameObjectSound()
        self.piFaceManager.setPlayerButtonColor(0, "off")
        gameObject.switchedTo()
        self.gameState.save()

    def update(self, time, events):
        self.gameObject.update(time, events)
        self.hud.update(time, events)

    def draw(self):
        '''Draws current GameObject. 
        Since fbcon seems to have most performance on raspi but doesn't support double buffering, 
        a surface is used to simulate double buffering to prevent flickering (won't solve all problems though)'''
        self.gameObject.draw(self.buffer)
        if self.drawHUD:
            self.hud.draw(self.buffer)
        self.screen.blit(self.buffer, (0, 0))

    def initialize(self):
        pygame.init()
        self.screen = pygame.display.set_mode(
            (1024, 768),
            pygame.DOUBLEBUF | pygame.HWSURFACE | pygame.FULLSCREEN)
        pygame.mouse.set_visible(True)
        self.buffer = pygame.Surface(self.screen.get_size())
        self.buffer = self.buffer.convert()
        self.buffer.fill((250, 0, 250))
        self.screen.blit(self.buffer, (0, 0))
        pygame.display.flip()
        print "Using driver", pygame.display.get_driver()
        print "Set SDL_VIDEODRIVER to change"
        print "-----------------------------"
        print "Driver Info:"
        print pygame.display.Info()
        self.clock = pygame.time.Clock()
        self.hud.initialize()
        self.sound = SoundObject.SoundObject(self.gameState.appdir)
        self.gameObject.sound = self.sound

    def initializeTest(self):
        pygame.init()
        self.screen = pygame.display.set_mode(
            (1024, 768), pygame.DOUBLEBUF | pygame.HWSURFACE)
        pygame.mouse.set_visible(True)
        self.buffer = pygame.Surface(self.screen.get_size())
        self.buffer = self.buffer.convert()
        self.buffer.fill((250, 0, 250))
        self.screen.blit(self.buffer, (0, 0))
        pygame.display.flip()
        print "Using driver", pygame.display.get_driver()
        print "Set SDL_VIDEODRIVER to change"
        print "-----------------------------"
        print "Driver Info:"
        print pygame.display.Info()
        self.clock = pygame.time.Clock()

        font = pygame.font.Font(pygame.font.get_default_font(), 45)
        size = font.size("OK")
        r = 0
        g = 0
        b = 255
        tor = True
        tog = False
        tob = False

        while 1:
            if tor:
                r += 1
                b -= 1
                if b == 0:
                    tor = False
                    tog = True
            if tog:
                g += 1
                r -= 1
                if r == 0:
                    tog = False
                    tob = True
            if tob:
                b += 1
                g -= 1
                if g == 0:
                    tob = False
                    tor = True
            currentMillis = self.clock.tick(self.targetFPS)
            events = pygame.event.get()
            self.buffer.fill((r, g, b))
            self.buffer.blit(font.render("OK", True, (255, 255, 255)),
                             ((1024 - size[0]) / 2, (768 - size[1]) / 2))
            self.screen.blit(self.buffer, (0, 0))
            pygame.display.flip()

            #Handle Input Events - FOR TESTING ONLY - Events have to be checked by the GameObjects...
            for event in events:
                if event.type == QUIT:
                    pygame.display.quit()
                    return
                elif event.type == KEYDOWN and event.key == K_ESCAPE:
                    pygame.display.quit()
                    return

    def run(self):
        # try:
        while 1:
            currentMillis = self.clock.tick(self.targetFPS)
            events = pygame.event.get()
            self.update(currentMillis, events)
            self.draw()
            pygame.display.flip()

            #Handle Input Events - FOR TESTING ONLY - Events have to be checked by the GameObjects...
            for event in events:
                if event.type == QUIT:
                    pygame.display.quit()
                    self.sound.resetGameObjectSound()
                    return
                elif event.type == KEYDOWN and event.key == K_ESCAPE:
                    pygame.display.quit()
                    self.sound.resetGameObjectSound()
                    return
            if self.needQuit:
                pygame.display.quit()
                self.sound.resetGameObjectSound()
                return
Пример #17
0
from time import sleep
from HUD import *
from Game import Game

hud = HUD()
game = Game()

game.start()

while game.isRunning:
    gameState = game.getState()
    game.clearWithHUD()
    game.update()
    hud.update(gameState[0], gameState[1], gameState[2])
    hud.print()
    game.render()
    # print(game.balls[0].position, game.balls[0].dir, game.balls[0].speed, "         ")
    sleep(0.06)
Пример #18
0
def playGame(screen, level):
    screen_rect = screen.get_rect()

    level.reset()
    world = level.world
    crashman = level.crashman
    pygame.mouse.set_visible(True)

    camera = Camera(screen, crashman.rect, level)
    all_sprite = level.all_sprite

    clock = pygame.time.Clock()

    up = down = left = right = False
    x, y = 0, 0

    #randomly selects an enemy port
    enemy_list = []
    activePortIndex = random.randrange(len(level.enemy_ports))
    activePort = level.enemy_ports[activePortIndex]

    #untilNextSpawn=level.spawn_delay
    untilNextSpawn = 0
    totalTime = 0
    enemyCount = 0

    hud = HUD()

    pygame.mixer.music.load(level.musicPath)
    pygame.mixer.music.play(-1)

    #this is the while true loop
    while crashman.alive and not (objectiveComplete(
            objectiveProgress(level.objectiveType, hud.enemies_defeated,
                              totalTime), level.objectiveMax)
                                  or crashman.foundFlag):
        for event in pygame.event.get():

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

            if event.type == KEYDOWN and (event.key == K_ESCAPE
                                          or event.key == K_RETURN):
                #import MainScreen
                if level.hasVideo == True:
                    level.movie.pause()
                up = down = left = right = False
                pauseScreen(screen, level)
                if level.hasVideo == True:
                    level.movie.pause()

            #cheat to end level
            if event.type == KEYDOWN and event.key == K_BACKSPACE:
                crashman.foundFlag = True

            #control crashman
            keys = pygame.key.get_pressed()  #checking pressed keys
            if keys[pygame.K_UP] or keys[pygame.K_SPACE]:
                up = True
            else:
                up = False

            if keys[pygame.K_DOWN]:
                down = True
            else:
                down = False

            if keys[pygame.K_LEFT]:
                left = True
            else:
                left = False

            if keys[pygame.K_RIGHT]:
                right = True
            else:
                right = False

        #sequential spawn order
        """
        if untilNextSpawn<=0 and enemyCount<level.enemy_max:
            print "ENEMY HERE NOW"
            e=Enemy(activePort[0],activePort[1],activePort[2],level)
            enemy_list.append(e)
            level.all_sprite.add(e)
            world.append(e)
            activePortIndex+=1
            if activePortIndex>=len(level.enemy_ports):
                activePortIndex=0
            activePort=level.enemy_ports[activePortIndex]
            untilNextSpawn=level.spawn_delay
            enemyCount+=1"""

        #random spawn order
        if untilNextSpawn <= 0 and enemyCount < level.enemy_max:
            print "ENEMY HERE NOW"
            e = Enemy(activePort[0], activePort[1], activePort[2], level)
            enemy_list.append(e)
            level.all_sprite.add(e)
            world.append(e)
            activePortIndex = random.randrange(len(level.enemy_ports))
            activePort = level.enemy_ports[activePortIndex]
            untilNextSpawn = level.spawn_delay
            enemyCount += 1

        #removes dead enemies
        for e in enemy_list:
            if e.alive == False:
                print "ded del thjo"
                enemy_list.remove(e)
                all_sprite.remove(e)
                world.remove(e)
                enemyCount -= 1

            if e.freshkick == True:
                hud.enemies_defeated += 1
                hud.update()
                e.freshkick = False

        #timer and spawn countdown
        #updates hud time
        tpt = tps(clock, FPS)
        totalTime += tpt
        if hud.time != math.floor(totalTime):
            hud.time = math.floor(totalTime)
            hud.update()

        if enemyCount < level.enemy_max:
            untilNextSpawn -= tpt
            print str(enemyCount) + ": " + str(untilNextSpawn)

        #DRAW ORDER:
        #bg, world, elemental, hud
        #camera.draw_sprites(screen, all_sprite)
        level.drawBG(screen)
        camera.draw_sprites_prio(screen, all_sprite, crashman)

        if level.elemental:
            level.elementalOverlay.draw(screen)

        hud.draw(screen)

        #final updates
        crashman.update(up, down, left, right)
        for e in enemy_list:
            e.update(tpt)
        camera.update()
        pygame.display.flip()

    #################################
    #game complete
    #pygame.display.flip()
    pygame.mixer.music.stop()
    crashman.update(False, False, False, False)

    level.drawBG(screen)
    camera.draw_sprites_prio(screen, all_sprite, crashman)

    if level.elemental:
        level.elementalOverlay.draw(screen)

    hud.draw(screen)
    pygame.display.flip()

    if crashman.direction == "right":
        crashman.image = crashman.jump_right
    else:
        crashman.image = crashman.jump_left
    """if objectiveComplete(objectiveProgress(level.objectiveType,hud.enemies_defeated,totalTime),level.objectiveMax):
        win(screen, camera, level, enemy_list, clock)
    else:
        lose(screen, camera, level, enemy_list, clock)"""

    if crashman.alive == False:
        lose(screen, camera, level, enemy_list, clock, hud)
    else:
        win(screen, camera, level, enemy_list, clock, hud, crashman.character)