def createHowToObjectives(window):
    sprites = [
        common.createTitle("Objectives"),
        common.createCenteredImage("objectives")
    ]
    drawer.drawList(sprites, window)
    return sprites
def submitScoreState(window, control, score):
    '''The playing screen for submitting a new score'''

    sprites,            \
    errorMessage,       \
    inputBox,           \
    submitScoreButton   = makeSubmitMenuGUI(score, window)

    drawer.drawList(sprites[:-2] + [inputBox], window)
    isError = False

    while not window.closed:
        point = window.checkMouse()
        if button.isButtonPressed(point, submitScoreButton, window):
            name = inputBox.getText()
            if (len(name) < 3 or len(name) > 25) or "`" in name:
                if not isError:
                    errorMessage.draw(window)
                    isError = True
            else:
                name = inputBox.getText()
                highscores.submitScore(name, score)
                break
        gfx.update(common.UPDATE_SPEED)
    drawer.undrawList(sprites + [inputBox, errorMessage])
def createHowToAppleTypes(window):
    sprites = [
        common.createTitle("Apple Types", y=common.WINDOW_HEIGHT / 12),
        common.createCenteredImage("apple_types")
    ]
    drawer.drawList(sprites, window)
    return sprites
def createHowToControls(window):
    sprites = [
        common.createTitle("Controls"),
        common.createCenteredImage("controls")
    ]
    drawer.drawList(sprites, window)
    return sprites
def createHowToPlayMenu(window):
    '''Creates the GUI for the "how to play" menu'''
    sprites = [common.createTitle("How To Play")]
    drawer.drawList(sprites, window)

    guiY = common.WINDOW_HEIGHT / 10 + 50

    controlsSprites, \
    controlsButton   = button.create(guiY, "Controls", window)

    guiY += button.HEIGHT * 2

    objectivesSprites, \
    objectivesButton   = button.create(guiY, "Objectives", window)

    guiY += button.HEIGHT * 2

    appleTypesSprites, \
    appleTypesButton   = button.create(guiY, "Apple Types", window)

    #This is a list of sprites that have no purpose but to be shown, hence stored in a list
    #for ease of undrawing.
    sprites += objectivesSprites + controlsSprites + appleTypesSprites

    return sprites, controlsButton, objectivesButton, appleTypesButton
 def displayMenu(guiCreateFunction=None):
     drawer.undrawList([titleText] + sprites)
     showMenu(window, control, apples, guiCreateFunction)
     if window.closed:
         return True
     drawer.drawList([titleText] + sprites, window)
     return False
 def displayMenu(guiCreateFunction):
     drawer.undrawList(sprites + backButtonSprites)
     showMenu(window, control, apples, guiCreateFunction)
     if window.closed:
         return True
     drawer.drawList(sprites + backButtonSprites, window)
     return False
def runMenuState(window, control):
    '''Says it on the tin'''
    titleText = common.createTitle(common.GAME_NAME, window)

    sprites,         \
    playButton,      \
    howToPlayButton, \
    highscoreButton, \
    exitButton       = createFrontMenuButtons(window)

    bg = common.createCenteredImage("menu_bg")
    bg.draw(window)

    menu_top = common.createCenteredImage("menu_top")
    menu_top.draw(window)

    apples = []
    for i in range(50):
        addApple(apples, window)

    def displayMenu(guiCreateFunction=None):
        drawer.undrawList([titleText] + sprites)
        showMenu(window, control, apples, guiCreateFunction)
        if window.closed:
            return True
        drawer.drawList([titleText] + sprites, window)
        return False

    start = time.time()
    while control["state"] == states.STATE_MENU and not window.closed:
        key = common.getKeyPress(window)
        point = window.checkMouse()
        elapsed = common.calculateTime(start)

        if button.isButtonPressed(point, playButton, window):
            common.switchState(window, control, states.STATE_PLAYING)
        elif button.isButtonPressed(point, howToPlayButton, window):
            drawer.undrawList([titleText] + sprites)
            displayHowToPlayMenu(window, control, apples)
            if window.closed:
                break
            drawer.drawList([titleText] + sprites, window)
        elif button.isButtonPressed(point, highscoreButton, window):
            if displayMenu(highscores.createHighscoresDisplay):
                break
        elif button.isButtonPressed(point, exitButton, window):
            common.switchState(window, control, states.EXIT)

        updateApples(apples, window)
        #make it so the title is ALWAYS on front
        drawer.redrawSprite(menu_top, window)
        drawer.redrawList([titleText] + sprites, window)
        gfx.update(common.UPDATE_SPEED)

    drawer.undrawList([titleText, bg, menu_top] + sprites + apples)
Exemplo n.º 9
0
def createTiles(window):
    y = BASE_HEIGHT + 50
    tiles  = []
    active = []
    for x in range(WINDOW_WIDTH // TILE_SIZE):
        tiles.append(gfx.Image(gfx.Point(x * TILE_SIZE + 25, y), "../res/tile.gif"))
        active.append(True)

    drawer.drawList(tiles, window)
        
    return tiles, active
def runGameOverState(window, control, score, elapsed):
    '''Runs after the player has run out of lives'''
    bg = common.createCenteredImage("menu_bg")
    bg.draw(window)
    overallScore = score * round(elapsed)
    messages = [
        addMessage(window, "GAME OVER", 30, "red", reset=True, bold=True),
        addMessage(window, "Score: " + str(score)),
        addMessage(window, "Time:  " + str(round(elapsed)) + " seconds"),
        addMessage(window, "Final Score:  " + str(overallScore))
    ]

    sprites,            \
    playAgainButton,    \
    submitScoreButton,  \
    exitToMenuButton    = makeGameOverButtons(len(messages), window)
    sprites += messages

    scoreSubmitted = False
    while control["state"] is states.STATE_GAME_OVER and not common.shouldExit(
            window, control):
        mouseClick = window.checkMouse()
        if button.isButtonPressed(mouseClick, playAgainButton, window):
            common.switchState(window, control, states.STATE_PLAYING)
        elif button.isButtonPressed(mouseClick, submitScoreButton,
                                    window) and not scoreSubmitted:
            drawer.undrawList(sprites)
            submitScoreState(window, control, overallScore)
            if window.closed:
                break
            drawer.drawList(sprites, window)
            scoreSubmitted = True
            sprites[0].setFill("dim gray")
            sprites[1].setFill("gray")
        elif button.isButtonPressed(mouseClick, exitToMenuButton, window):
            common.switchState(window, control, states.STATE_MENU)

        gfx.update(common.UPDATE_SPEED)

    drawer.undrawList(sprites + [bg])
Exemplo n.º 11
0
def createHighscoresDisplay(window):
    '''Creation of the GUI for the highscores screen'''
    highscores = getScoresList()
    sprites = []

    #Create title bar
    sprites.append(common.createTitle("Highscores"))

    colours = ["gray90", "cornsilk4"] * (len(highscores) // 2 + 1)
    for i in range(len(highscores) + 1):
        rank  = str(i)
        name  = str(highscores[i - 1][0])
        score = str(highscores[i - 1][1])
        y     = i * 20 + 100 + 10
        createBackgroundRect(sprites, y, colours[i])
        if i == 0:
            addHighscoreTitles(sprites, y)
            continue
        addField(sprites, name, rank, score, y)
        if i + 1 == 26: #Maximum of 25 highscore fields can be displayed
            break

    drawer.drawList(sprites, window)
    return sprites