def __reset(self):
        bgmPlayer("play", "main.ogg")
        self.level = 1
        self.score = 0
        self.maxlevel = self.lvl.readMaxLevel()

        self.cont = util.loadText("Continue  <-  " + str(self.level) + "  ->", 16, (0xFF, 0xFF, 0xFF), "modernab")
        self.hlcont = util.loadText("Continue  <-  " + str(self.level) + "  ->", 16, (0xFF, 0xF6, 0x0), "modernab")
	def __init__(self, pos):
		pygame.sprite.Sprite.__init__(self, self.containers)
		self.image = pygame.Surface((512, 32))
		self.image.set_colorkey((0x00,0xff,0x00))
		self.rect=self.image.get_rect()
		self.rect.topleft=pos
		self.image.fill((0x00,0xff,0x00))
		
		fontcolor=(0xe0,0x79,0x00)
		self.scoretxt=util.loadText('SCORE', 12, fontcolor, 'ltypewriter')
		self.remainstxt=util.loadText('REMAINS', 12, fontcolor, 'ltypewriter')
		self.leveltxt=util.loadText('LEVEL', 12, fontcolor, 'ltypewriter')
		self.paytxt=util.loadText('PAY', 12, fontcolor, 'ltypewriter')
		self.hightxt=util.loadText('HIGHSCORE', 12, fontcolor, 'ltypewriter')
    def __gameInput(self):
        self.input.handleInput()

        menucolor = (0xFF, 0xFF, 0xFF)
        hgcolor = (0xFF, 0xF6, 0x0)

        if self.input.lookup(UP):
            self.menu -= 1
            if self.menu < 0:
                self.menu = 4
        if self.input.lookup(DOWN):
            self.menu += 1
            if self.menu > 4:
                self.menu = 0
        if self.input.lookup(LEFT):
            if self.menu == 1:
                if self.level > 1:
                    self.level -= 1
                else:
                    self.level = self.maxlevel
                self.cont = util.loadText("Continue  <-  " + str(self.level) + "  ->", 16, menucolor, "modernab")
                self.hlcont = util.loadText("Continue  <-  " + str(self.level) + "  ->", 16, hgcolor, "modernab")
        if self.input.lookup(RIGHT):
            if self.menu == 1:
                if self.level < self.maxlevel:
                    self.level += 1
                else:
                    self.level = 1
                self.cont = util.loadText("Continue  <-  " + str(self.level) + "  ->", 16, menucolor, "modernab")
                self.hlcont = util.loadText("Continue  <-  " + str(self.level) + "  ->", 16, hgcolor, "modernab")
        if self.input.lookup(ENTER):
            if self.menu == 0:
                self.__run()
            elif self.menu == 1:
                self.__run()
            elif self.menu == 2:
                HighScoreScreen(self.screen, self.highscore)
                # AskNameScreen(self.screen)
            elif self.menu == 3:
                HowtoScreen(self.screen)
            elif self.menu == 4:
                exit(0)
        if self.input.lookup(EXIT):
            exit(0)
        if self.input.lookup(BGMUSIC):
            if pygame.mixer.music.get_volume() == 0:
                pygame.mixer.music.set_volume(1.0)
            else:
                pygame.mixer.music.set_volume(0.0)
    def __init__(self, screen, highscore):
        self.screen = screen
        self.highscore = highscore
        self.clock = pygame.time.Clock()
        self.fps = 60
        self.quit = False

        self.input = input.Input()
        self.input.bindKey(ENTER, pygame.K_RETURN, False)
        # self.input.bindKey(ENTER, pygame.K_ESCAPE, False)

        fontsize = 14
        fontcolor = (0xFF, 0xFF, 0xFF)

        title = util.loadText("Best Workers", 20, fontcolor, "vera")
        text = []
        for i in range(len(self.highscore.topscore)):
            name = util.loadText(str(self.highscore.topscore[i][0]), fontsize, fontcolor, "vera")
            money = util.loadText("$" + str(self.highscore.topscore[i][1]), fontsize, fontcolor, "vera")
            text.append((name, money))

        back = util.loadText("Press 'ENTER' to return menu", 10, fontcolor, "vera")

        image = pygame.Surface((300, 300))
        image.fill((0x43, 0x43, 0x43))
        pygame.draw.rect(image, (0x0, 0x0, 0x0), (0, 0, 300, 300), 1)

        while not self.quit:
            self.clock.tick(self.fps)
            self.__gameInput()
            offset = 50

            cx, cy = title.get_size()
            image.blit(title, ((image.get_width() - cx) / 2, 16))
            for i in range(len(text)):
                image.blit(text[i][0], (50, offset + i * 20))
                cx, cy = text[i][1].get_size()
                image.blit(text[i][1], (150 + ((150 - cx) / 2), offset + i * 20))

            cx, cy = back.get_size()
            image.blit(back, ((image.get_width() - cx) / 2, 270))

            self.screen.blit(image, ((self.screen.get_width() - image.get_width()) / 2, 100))
            pygame.display.flip()
 def __loadingScreen(self):
     self.screen.fill((0x0, 0x0, 0x0))
     text = util.loadText("Loading...", 26, (0xFF, 0xFF, 0xFF), "engex")
     cx, cy = text.get_size()
     self.screen.blit(text, ((512 - cx) / 2, 220))
     pygame.display.flip()
    def __init__(self, screen, level, score, highscore):
        self.screen = screen
        self.__loadingScreen()
        self.level = level
        self.score = score
        self.quit = 0
        self.FPS = 60
        self.rdy_delay = self.FPS * 1.5
        self.win_delay = self.FPS * 3
        self.win = None
        self.pause = False
        self.fast = False
        self.clock = pygame.time.Clock()
        self.highscore = highscore
        self.gamingZone = pygame.Rect(0, 0, 448, 448)

        self.__loadSfx()

        self.PAYMENT = 500 * self.level
        self.MIN_PIPES = self.__calculateMinPipes()
        self.TERRAIN = 0  # Loaded from level
        self.MAX_START_DELAY = 1632 - (self.level * 72)  # (192 - 1632)
        self.MAX_FLOW_VALUE = 456 - (self.level * 18)  # (96 - 456)
        self.MIN_FLOW_VALUE = 32

        self.limit_flow_value = self.MAX_FLOW_VALUE
        self.num_pipes = self.MIN_PIPES
        self.usedpipes = 0
        self.currentpipe = None
        self.alarm = False
        self.pumpframe = 0
        self.pumpcount = 0
        self.pipetypes = [
            "rightup",
            "leftup",
            "rightdown",
            "leftdown",
            "horizontal",
            "vertical",
            "cross",
            "horizontal",
            "vertical",
        ]
        self.bartiles = [util.loadPng("lateral0.png"), util.loadPng("lateral1.png"), util.loadPng("scorebar.png")]
        self.stack = []

        self.input = input.Input()
        self.input.bindKey(EXIT, pygame.K_ESCAPE)
        self.input.bindKey(TURBO, pygame.K_SPACE)
        self.input.bindKey(PAUSE, pygame.K_RETURN, False)
        self.input.bindKey(MOTION, input.MOUSE_MOTION)
        self.input.bindKey(BUTTON1, input.MOUSE_BUTTON1, False)

        cursorGroup = pygame.sprite.RenderUpdates()
        pipeGroup = pygame.sprite.RenderUpdates()
        uiGroup = pygame.sprite.RenderUpdates()
        self.messageGroup = pygame.sprite.RenderUpdates()

        objects.Cursor.containers = cursorGroup
        objects.Oil.containers = cursorGroup
        objects.StackBar.containers = uiGroup
        objects.ScoreBar.containers = uiGroup
        objects.Pipe.containers = pipeGroup
        objects.Well.containers = pipeGroup
        objects.Refinery.containers = pipeGroup
        objects.Obstacle.containers = pipeGroup

        self.cursor = objects.Cursor((self.screen.get_width() / 2, self.screen.get_height() / 2))  # (0,0))
        self.stackbar = objects.StackBar((self.screen.get_width() - 64, 0))
        self.scorebar = objects.ScoreBar((0, self.screen.get_height() - 32))

        textcolor = (0xFF, 0xFF, 0xFF)  # (0x02,0x4e,0x02)
        self.leveltxt = util.loadText("Level " + str(self.level), 18, textcolor, "engex")
        self.readytxt = util.loadText("Ready!", 36, textcolor, "engex")
        self.pausetxt = util.loadText("Pause", 36, textcolor, "engex")

        losearray = [
            util.loadText("You have failed", 26, textcolor, "engex"),
            util.loadText("You lost the contract", 26, textcolor, "engex"),
            util.loadText("You're fired!", 26, textcolor, "engex"),
            util.loadText("What are you doing?", 26, textcolor, "engex"),
            util.loadText("Next!", 26, textcolor, "engex"),
            util.loadText("You're a mess!", 26, textcolor, "engex"),
        ]

        self.morepipestxt = util.loadText("You needed more pipes", 26, textcolor, "engex")

        winarray = [
            util.loadText("Good job!", 26, textcolor, "engex"),
            util.loadText("Mission accomplished!", 26, textcolor, "engex"),
            util.loadText("You did it!", 26, textcolor, "engex"),
            util.loadText("Way to go!", 26, textcolor, "engex"),
            util.loadText("Well done!", 26, textcolor, "engex"),
            util.loadText("You're the boss!", 26, textcolor, "engex"),
            util.loadText("You rock!", 26, textcolor, "engex"),
        ]

        self.losetxt = random.choice(losearray)
        self.wintxt = random.choice(winarray)
        self.dialog = util.loadPng("dialog.png")

        for i in range(4):
            self.__pushStack()

        tile = util.loadPng("grounds.png")
        self.bg = pygame.Surface((448, 448))

        lvl = levelparser.LevelParser()
        lvl.saveMaxLevel(self.level)
        level = lvl.parseLevel(self.level)
        offset = 0
        for i in range(14):
            for j in range(14):
                if level[i][j] == (0xB8, 0x16, 0x16, 0xFF):
                    self.oil = objects.Oil((j * 32, i * 32), "right")
                    self.well = objects.Well((j * 32, i * 32))
                    self.bg.blit(tile, (j * 32, i * 32), (0, 0, 32, 32))
                elif level[i][j] == (0xFF, 0xFF, 0xFF, 0xFF):
                    self.refinery = objects.Refinery((j * 32, i * 32))
                    self.bg.blit(tile, (j * 32, i * 32), (32, 0, 32, 32))
                elif level[i][j] == (0x81, 0x81, 0x81, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 32]), 0, 32, 32))
                    objects.Obstacle((j * 32, i * 32), "rock1")
                elif level[i][j] == (0x60, 0x4A, 0x20, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 32]), 0, 32, 32))
                    objects.Obstacle((j * 32, i * 32), "rock2")
                elif level[i][j] == (0x18, 0x67, 0x00, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 32]), 0, 32, 32))
                    objects.Obstacle((j * 32, i * 32), "cactus1")
                elif level[i][j] == (0x3F, 0x9C, 0x22, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 32]), 0, 32, 32))
                    objects.Obstacle((j * 32, i * 32), "cactus2")
                elif level[i][j] == (0xC6, 0xC1, 0xB0, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 32]), 0, 32, 32))
                    objects.Obstacle((j * 32, i * 32), "bones")
                elif level[i][j] == (0x18, 0x85, 0x51, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 32]), 0, 32, 32))
                    objects.Obstacle((j * 32, i * 32), "palmtree")
                elif level[i][j] == (0x0, 0x27, 0x08, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 64]), 0, 32, 32))
                    objects.Obstacle((j * 32, i * 32), "shrub1")
                elif level[i][j] == (0xCC, 0xAF, 0x4D, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 64]), offset, 32, 32))
                elif level[i][j] == (0xBF, 0xA4, 0x48, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (random.choice([0, 64]), offset, 32, 32))
                elif level[i][j] == (0xB2, 0x99, 0x43, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (96, offset, 32, 32))
                elif level[i][j] == (0xA6, 0x8E, 0x3F, 0xFF):
                    self.bg.blit(tile, (j * 32, i * 32), (128, offset, 32, 32))
                else:
                    continue

        contract = ContractScreen(
            self.screen, self.level, self.MIN_PIPES, self.TERRAIN, self.MAX_FLOW_VALUE, self.PAYMENT
        )
        self.quit = not contract.accept

        bgm = random.choice(["bgm-1.ogg", "bgm-2.ogg", "bgm-3.ogg", "bgm-4.ogg"])
        bgmPlayer("play", bgm)

        while not self.quit:
            self.clock.tick(self.FPS)
            self.screen.blit(self.bg, (0, 0))

            val = self.__prepareGame(pipeGroup, uiGroup, cursorGroup)
            if val == -1:
                continue
            elif val == 1:
                return

            self.__gameInput()

            if self.oil.state == "next":
                list = pygame.sprite.spritecollide(self.oil, objects.Pipe.containers, False)
                if len(list) > 0:
                    self.currentpipe = list[0]
                    if self.oil.dir in self.currentpipe.inarray:
                        if self.num_pipes > 0:
                            self.num_pipes -= 1
                        self.usedpipes += 1
                        self.moneysnd.play()
                        self.score += 50
                        # self.highscore.appendScore('', self.score)
                        self.messageGroup.add(
                            util.Message(self.currentpipe.rect.center, "+50", (0x12, 0x3D, 0x15), 15)
                        )  # (0x02,0x4e,0x02)
                        self.currentpipe.startFlow()
                        i = self.currentpipe.inarray.index(self.oil.dir)
                        self.oil.dir = self.currentpipe.outarray[i]
                        self.oil.flowing()
                    else:
                        self.__spillOil()
                else:
                    self.__spillOil()
            elif (self.oil.state == "flowing") and not self.pause:
                # print 'flow',self.oil.flow_value, self.limit_flow_value
                self.oil.flow_value += self.oil.speed
                if self.currentpipe != None:
                    self.currentpipe.update(self.oil.flow_value, self.limit_flow_value, self.oil.dir)
                if self.oil.flow_value >= self.limit_flow_value:
                    self.oil.moveNext()

                # Check Win (Refinery)
            if self.oil.rect == self.refinery.rect:
                if self.num_pipes == 0:
                    bgmPlayer("stop")
                    self.winsnd.play()
                    self.win = True
                else:
                    self.losesnd.play()
                    self.losetxt = self.morepipestxt
                    self.win = False

            if not self.pause:
                cursorGroup.update()
                self.messageGroup.update()
                pipeGroup.draw(self.screen)
                cursorGroup.draw(self.screen)
                self.messageGroup.draw(self.screen)
            else:
                cx, cy = self.pausetxt.get_size()
                dx, dy = self.dialog.get_size()

                self.screen.blit(self.dialog, ((448 - dx) / 2, (448 - dy) / 2))
                self.screen.blit(self.pausetxt, ((448 - cx) / 2, (416 - cy) / 2 + 16))

            uiGroup.update(self)
            uiGroup.draw(self.screen)

            pygame.display.flip()
    def __init__(self, screen):
        self.screen = screen
        self.clock = pygame.time.Clock()
        self.fps = 60
        self.quit = False

        self.input = input.Input()
        self.input.bindKey(ENTER, pygame.K_RETURN, False)
        self.input.bindKey(ENTER, pygame.K_ESCAPE, False)

        fontsize = 11
        fontcolor = (0xFF, 0xFF, 0xFF)
        self.text = [
            util.loadText(
                "You have been contracted by Pixoil, an Oil Company. They need you", fontsize, fontcolor, "vera"
            ),
            util.loadText(
                "build oil pipelines to transport oil from oil wells to their refineries.", fontsize, fontcolor, "vera"
            ),
            util.loadText("", fontsize, fontcolor, "vera"),
            util.loadText("You must use at least the minimum number of pipes demanded by", fontsize, fontcolor, "vera"),
            util.loadText(
                "the company, otherwise you will lose the contract. If the oil is", fontsize, fontcolor, "vera"
            ),
            util.loadText("spilled you will lose the contract too.", fontsize, fontcolor, "vera"),
            util.loadText("", fontsize, fontcolor, "vera"),
            util.loadText(
                "For each pipe installed successfully you will earn a money bonus", fontsize, fontcolor, "vera"
            ),
            util.loadText(
                "and if oil is transported successfully to the refinery you will receive", fontsize, fontcolor, "vera"
            ),
            util.loadText("the payment.", fontsize, fontcolor, "vera"),
            util.loadText("", fontsize, fontcolor, "vera"),
            util.loadText(
                "Use the MOUSE to place the cursor at any part of the map and LEFT", fontsize, fontcolor, "vera"
            ),
            util.loadText(
                "CLICK to build the first pipe in the pipes queue. Use SPACEBAR to", fontsize, fontcolor, "vera"
            ),
            util.loadText(
                "accelerate the oil flow. In the main screen press F11 to turn on/off", fontsize, fontcolor, "vera"
            ),
            util.loadText("the background music", fontsize, fontcolor, "vera"),
            util.loadText("", fontsize, fontcolor, "vera"),
            util.loadText("GOOD LUCK!", fontsize, fontcolor, "vera"),
        ]

        back = util.loadText("Press 'ENTER/ESCAPE' to return menu", 10, fontcolor, "vera")

        image = pygame.Surface((416, 340))
        image.fill((0x43, 0x43, 0x43))
        pygame.draw.rect(image, (0x0, 0x0, 0x0), (0, 0, 416, 340), 1)
        image.set_alpha(128, pygame.locals.RLEACCEL)

        while not self.quit:
            self.clock.tick(self.fps)
            self.__gameInput()
            offset = 100

            self.screen.blit(image, (40, 80))
            for i in range(len(self.text)):
                self.screen.blit(self.text[i], (60, offset + i * 16))

            cx, cy = back.get_size()
            self.screen.blit(back, ((512 - cx) / 2, 384))

            pygame.display.flip()
    def __init__(self, screen):
        self.screen = screen
        self.clock = pygame.time.Clock()
        self.fps = 60
        self.menu = 0
        self.askname = False

        self.lvl = levelparser.LevelParser()

        self.input = input.Input()
        self.input.bindKey(EXIT, pygame.K_ESCAPE)
        self.input.bindKey(UP, pygame.K_UP, False)
        self.input.bindKey(DOWN, pygame.K_DOWN, False)
        self.input.bindKey(LEFT, pygame.K_LEFT, False)
        self.input.bindKey(RIGHT, pygame.K_RIGHT, False)
        self.input.bindKey(ENTER, pygame.K_RETURN, False)
        self.input.bindKey(BGMUSIC, pygame.K_F11, False)

        menucolor = (0xFF, 0xFF, 0xFF)
        hgcolor = (0xFF, 0xF6, 0x0)
        self.start = util.loadText("New Game", 16, menucolor, "modernab")
        self.hlstart = util.loadText("New Game", 16, hgcolor, "modernab")
        self.cont = util.loadText("Continue   <-  1  ->", 16, menucolor, "modernab")
        self.hlcont = util.loadText("Continue   <-  1  ->", 16, hgcolor, "modernab")
        self.howto = util.loadText("How to play", 16, menucolor, "modernab")
        self.hlhowto = util.loadText("How to play", 16, hgcolor, "modernab")
        self.high = util.loadText("High Scores", 16, menucolor, "modernab")
        self.hlhigh = util.loadText("High Scores", 16, hgcolor, "modernab")
        self.quit = util.loadText("Quit", 16, menucolor, "modernab")
        self.hlquit = util.loadText("Quit", 16, hgcolor, "modernab")

        self.bg = util.loadPng("mainscreen.png")
        self.menuicon = util.loadPng("menuicon.png")
        self.copyright = util.loadText("Created by Wil Alvarez (C) Copyright 2008", 10, (0xA, 0xA, 0xA), "vera")

        self.highscore = objects.HighScore(top=100000, nonames=False)

        self.__reset()

        while True:
            self.clock.tick(self.fps)
            self.__gameInput()

            self.screen.blit(self.bg, (0, 0))
            cx, cy = self.copyright.get_size()
            self.screen.blit(self.copyright, ((512 - cx) / 2, 140))
            self.__updateMenu()

            pygame.display.flip()
    def __init__(self, screen, level, pipes, terrain, pumping, pay):
        self.screen = screen
        self.clock = pygame.time.Clock()
        self.fps = 60
        self.accept = False
        quit = False

        self.input = input.Input()
        self.input.bindKey(ENTER, pygame.K_RETURN, False)
        self.input.bindKey(EXIT, pygame.K_ESCAPE, False)

        fontsize = 11
        fontcolor = (0x0, 0x0, 0x0)

        if terrain == 0:
            type = "Plain"
        elif terrain == 1:
            type = "Rocky"
        elif terrain == 2:
            type = "Wooded"
        elif terrain == 3:
            type = "Mixed"

        if 300 < pumping <= 448:
            pump = "Slow"
        elif 150 < pumping <= 300:
            pump = "Medium"
        else:
            pump = "Fast"

        back = util.loadText("Press 'ENTER' to Accept, 'ESCAPE' to Quit", 10, (0x0, 0x0, 0x0), "vera")
        contracttxt = util.loadText("Contract  " + str(level), 20, (0x0, 0x0, 0x0), "vera")
        mintxt = util.loadText("Minimun Pipes: " + str(pipes), 10, (0x0, 0x0, 0x0), "vera")
        terraintxt = util.loadText("Terrain: " + type, 10, (0x0, 0x0, 0x0), "vera")
        temptxt = util.loadText("Pumping: " + pump, 10, (0x0, 0x0, 0x0), "vera")
        paytxt = util.loadText("Payment: $" + str(pay), 20, (0x0, 0x0, 0x0), "vera")
        leveltxt = util.loadText("A", 20, (0xFF, 0xFF, 0xFF), "vera")

        image = util.loadPng("contract.png")

        bgmPlayer("play", "bgm-contract.ogg")

        while not quit:
            self.clock.tick(self.fps)
            quit = self.__gameInput()

            xoffset = 95
            yoffset = 32
            self.screen.fill((0xA7, 0xA7, 0xA7))
            self.screen.blit(image, (95, 32))

            self.screen.blit(contracttxt, (23 + xoffset, 95 + yoffset))
            self.screen.blit(mintxt, (42 + xoffset, 275 + yoffset))
            self.screen.blit(terraintxt, (42 + xoffset, 295 + yoffset))
            self.screen.blit(temptxt, (42 + xoffset, 315 + yoffset))
            self.screen.blit(paytxt, (42 + xoffset, 340 + yoffset))
            self.screen.blit(leveltxt, (290 + xoffset, 40 + yoffset))
            cx, cy = back.get_size()
            self.screen.blit(back, ((512 - cx) / 2, 420))

            pygame.display.flip()

        bgmPlayer("stop")
    def __init__(self, screen):
        self.screen = screen
        self.clock = pygame.time.Clock()
        self.fps = 60
        self.quit = False

        self.input = input.Input()
        self.input.bindKey(ENTER, pygame.K_RETURN, False)
        self.input.bindKey(ENTER, pygame.K_ESCAPE, False)

        fontsize = 11
        fontcolor = (0xFF, 0xFF, 0xFF)

        self.title = util.loadText("CONGRATULATIONS!", 24, fontcolor, "vera")
        self.text = [
            util.loadText(
                "Well done!  You have done a great job. Now, you are prepared to ", fontsize, fontcolor, "vera"
            ),
            util.loadText("conquer the world of the Oil Industries.", fontsize, fontcolor, "vera"),
            util.loadText("", fontsize, fontcolor, "vera"),
            util.loadText(
                "Next step will be to found your oil company and try to rule the", fontsize, fontcolor, "vera"
            ),
            util.loadText("oil bussiness, the world and the whole universe! (In", fontsize, fontcolor, "vera"),
            util.loadText("", fontsize, fontcolor, "vera"),
            util.loadText("", fontsize, fontcolor, "vera"),
            util.loadText("Design, graphics and development by:", fontsize, fontcolor, "vera"),
            util.loadText("Wil A. Alvarez", fontsize, fontcolor, "vera"),
            util.loadText("<*****@*****.**>", fontsize, fontcolor, "vera"),
            util.loadText("", fontsize, fontcolor, "vera"),
            util.loadText("THANKS FOR PLAYING!", 18, fontcolor, "vera"),
        ]
        back = util.loadText("Press 'ENTER/ESCAPE' to exit", 10, fontcolor, "vera")

        image = pygame.Surface((416, 340))
        image.fill((0x43, 0x43, 0x43))
        pygame.draw.rect(image, (0x0, 0x0, 0x0), (0, 0, 416, 340), 1)
        # image.set_alpha(128, pygame.locals.RLEACCEL)

        while not self.quit:
            self.clock.tick(self.fps)
            self.__gameInput()
            offset = 150

            self.screen.blit(image, (40, 80))
            cx, cy = self.title.get_size()
            self.screen.blit(self.title, ((512 - cx) / 2, 100))
            for i in range(len(self.text)):
                cx, cy = self.text[i].get_size()
                self.screen.blit(self.text[i], ((512 - cx) / 2, offset + i * 16))

            cx, cy = back.get_size()
            self.screen.blit(back, ((512 - cx) / 2, 384))

            pygame.display.flip()
    def __init__(self, screen):
        self.screen = screen
        self.clock = pygame.time.Clock()
        self.fps = 60
        self.blink_delay = self.fps / 2
        self.show = True
        self.quit = False

        white = (0xFF, 0xFF, 0xFF)
        black = (0x0, 0x0, 0x0)
        bg = (0x9A, 0x89, 0x2B)  # (0x43,0x43,0x43)

        title = util.loadText("Enter your name:", 20, white, "vera")
        footer = util.loadText("and press 'ENTER'", 11, white, "vera")

        self.name = ""
        image = pygame.Surface((200, 110))

        while not self.quit:
            self.clock.tick(self.fps)

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RETURN:
                        self.quit = True
                    elif (32 <= event.key < 127) or (256 <= event.key < 266):
                        self.name += event.unicode
                    elif event.key == K_BACKSPACE:
                        self.name = self.name[:-1]

                    if len(self.name) > 15:
                        self.name = self.name[:15]

            image.fill(bg)
            pygame.draw.rect(image, black, (0, 0, 200, 110), 1)

            image.blit(title, (10, 16))
            cx, cy = footer.get_size()
            image.blit(footer, ((image.get_width() - cx) / 2, 90))

            pygame.draw.rect(image, white, (10, 52, 180, 25), 0)
            pygame.draw.rect(image, black, (10, 52, 180, 25), 1)

            name = util.loadText(self.name, 16, black, "vera")
            cx, cy = name.get_size()
            image.blit(name, (11, 54))

            self.blink_delay -= 1
            if self.blink_delay == 0:
                self.show = not self.show
                self.blink_delay = self.fps / 2

            if self.show:
                cx, cy = name.get_size()
                pygame.draw.line(image, black, (cx + 11, 56), (cx + 11, 71), 1)

            self.screen.blit(
                image,
                (
                    (self.screen.get_width() - image.get_width()) / 2,
                    (self.screen.get_height() - image.get_height()) / 2,
                ),
            )
            pygame.display.flip()
	def update(self, game):
		x=10
		xtab=20
		xspacing=-5
		fontsize=11
		ytitle=3
		self.image.fill((0x0,0xff,0x0), (5,5,496,24))
		
		xscore=10
		xremains=100
		xlevel=170
		xpay=230
		xhighs=300
		self.image.blit(self.scoretxt, (xscore, ytitle))
		x = xscore + self.scoretxt.get_size()[0]+xspacing
		text=util.loadText('$'+str(game.score), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		
		self.image.blit(self.remainstxt, (xremains, ytitle))
		x = xremains+ self.remainstxt.get_size()[0]+xspacing
		text=util.loadText(str(game.num_pipes), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		
		self.image.blit(self.leveltxt, (xlevel, ytitle))
		x = xlevel+self.leveltxt.get_size()[0]+xspacing
		text=util.loadText(str(game.level), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		
		self.image.blit(self.paytxt, (xpay, ytitle))
		x = xpay+self.paytxt.get_size()[0]+xspacing
		text=util.loadText('$'+str(game.PAYMENT), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		
		self.image.blit(self.hightxt, (xhighs, ytitle))
		x = xhighs+self.hightxt.get_size()[0]+(xspacing*5)
		name, score=game.getTopScore()
		text=util.loadText(name+': $'+str(score), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		
		'''
		self.image.blit(self.scoretxt, (x, ytitle))
		x += self.scoretxt.get_size()[0]+xspacing
		text=util.loadText('$'+str(game.score), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		x += text.get_size()[0]+xtab
		
		self.image.blit(self.remainstxt, (x, ytitle))
		x += self.remainstxt.get_size()[0]+xspacing
		text=util.loadText(str(game.num_pipes), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		x += text.get_size()[0]+xtab
		
		self.image.blit(self.leveltxt, (x, ytitle))
		x += self.leveltxt.get_size()[0]+xspacing
		text=util.loadText(str(game.level), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		x += text.get_size()[0]+xtab
		
		self.image.blit(self.paytxt, (x, ytitle))
		x += self.paytxt.get_size()[0]+xspacing
		text=util.loadText('$'+str(game.PAYMENT), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		x += text.get_size()[0]+xtab
		
		self.image.blit(self.hightxt, (x, ytitle))
		x += self.hightxt.get_size()[0]+(xspacing*5)
		name, score=game.getTopScore()
		text=util.loadText(name+': $'+str(score), fontsize, (255,255,255), 'vera')
		self.image.blit(text, (x, ytitle+10))
		'''
		text=util.loadText('FPS: ' + str (int (game.clock.get_fps ())), 10, (255,255,255))
		self.image.blit(text, (self.rect.width-50, 10))