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 createFrontMenuButtons(window):
    '''Creates the main buttons for the main menu'''
    guiY = common.WINDOW_HEIGHT / 10 + 50

    playGameSprites, \
    playGameButton   = button.create(guiY, "Play Game", window)

    guiY += button.HEIGHT * 2
    howToPlaySprites, \
    howToPlayButton   = button.create(guiY, "How To Play", window)

    guiY += button.HEIGHT * 2
    highScoresSprites, \
    highScoresButton   = button.create(guiY, "Highscores", window)

    guiY += button.HEIGHT * 2
    exitSprites, \
    exitButton   = button.create(guiY, "Exit Game", 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 = playGameSprites   + \
              howToPlaySprites  + \
              highScoresSprites + \
              exitSprites

    return sprites, playGameButton, howToPlayButton, highScoresButton, exitButton
def makeGameOverButtons(messageLength, window):
    '''Makes buttons for game over screen'''
    guiY = WINDOW_HEIGHT / 10 + 50 * messageLength
    playAgainSprites, \
    playAgainButton   = button.create(guiY, "Play Again", window)

    guiY += button.HEIGHT + 10
    submitSprites, \
    submitButton   = button.create(guiY, "Submit Score", window)

    guiY += button.HEIGHT + 10
    exitSprites, \
    exitButton   = button.create(guiY, "Exit", window)

    return submitSprites + playAgainSprites + exitSprites, \
           playAgainButton, submitButton, exitButton
def makeSubmitMenuGUI(score, window):
    '''Creates the GUI for the submission screen'''
    message = "Score To Submit: " + str(score)

    messText = gfx.Text(gfx.Point(WINDOW_WIDTH // 2, WINDOW_HEIGHT // 6 * 2),
                        message)
    nameText = gfx.Text(
        gfx.Point(WINDOW_WIDTH // 2, WINDOW_HEIGHT // 6 * 3 - 50),
        "Enter your name:")
    inputBox = gfx.Entry(gfx.Point(WINDOW_WIDTH // 2, WINDOW_HEIGHT // 6 * 3),
                         25)

    submitSprites,   \
    submitButton     = button.create(WINDOW_HEIGHT// 6 * 4, "Submit", window)

    messText.setFill("red")
    messText.setSize(36)
    error = "Text must be between 3 and 25 chars, and contain no '`' character."
    errorMessage = gfx.Text(
        gfx.Point(WINDOW_WIDTH // 2, WINDOW_HEIGHT // 6 * 3.50), error)
    errorMessage.setStyle("bold")
    errorMessage.setFill("red")

    return [messText, nameText
            ] + submitSprites, errorMessage, inputBox, submitButton
def showMenu(window, control, apples, guiCreateFunction):
    '''Shows a basic menu which only has a back button (eg how to play, highscores)'''
    sprites = guiCreateFunction(window)
    backButtonSprites, \
    backButtonBounds   = button.create(BACK_BTN_Y, "Back", window)

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

    sprites += backButtonSprites
    while not window.closed:
        mouseClickPoint = window.checkMouse()
        updateApples(apples, window)
        if button.isButtonPressed(mouseClickPoint, backButtonBounds, window):
            break
        drawer.redrawSprite(menu_top, window)
        drawer.redrawList(sprites, window)
        gfx.update(common.UPDATE_SPEED)
    drawer.undrawList(sprites + [menu_top])
def displayHowToPlayMenu(window, control, apples):
    '''Displays the how to play menu, eg it's buttons'''
    sprites, ctrlButton, objButton, typeButton = createHowToPlayMenu(window)
    backButtonSprites, \
    backButtonBounds   = button.create(BACK_BTN_Y, "Back", window)

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

    def displayMenu(guiCreateFunction):
        drawer.undrawList(sprites + backButtonSprites)
        showMenu(window, control, apples, guiCreateFunction)
        if window.closed:
            return True
        drawer.drawList(sprites + backButtonSprites, window)
        return False

    while not window.closed:
        mouseClickPoint = window.checkMouse()
        updateApples(apples, window)
        if button.isButtonPressed(mouseClickPoint, backButtonBounds, window):
            break
        if button.isButtonPressed(mouseClickPoint, ctrlButton, window):
            if displayMenu(createHowToControls):
                break
        if button.isButtonPressed(mouseClickPoint, objButton, window):
            if displayMenu(createHowToObjectives):
                break
        if button.isButtonPressed(mouseClickPoint, typeButton, window):
            if displayMenu(createHowToAppleTypes):
                break

        drawer.redrawSprite(menu_top, window)
        drawer.redrawList(sprites, window)
        gfx.update(common.UPDATE_SPEED)
    drawer.undrawList(sprites + backButtonSprites + [menu_top])
Exemple #7
0
          'grey66', 'grey67', 'grey68', 'grey69', 'grey70', 'grey71', 'grey72', 'grey73', 'grey74',
          'grey75', 'grey76', 'grey77', 'grey78', 'grey79', 'grey80', 'grey81', 'grey82', 'grey83',
          'grey84', 'grey85', 'grey86', 'grey87', 'grey88', 'grey89', 'grey90', 'grey91', 'grey92',
          'grey93', 'grey94', 'grey95', 'grey97', 'grey98', 'grey99']

canvasHeight, canvasWidth = 600, 700
canvasBG = "white"

canvas = tkinter.Canvas(width=canvasWidth, height=canvasHeight, background=canvasBG)
canvas.pack()

colors = []
colors2 = []
drawings = []

moreColor = button.create(6*40, 20, 40, 40, 0, "gray", "MORE", canvas)
currentColor = button.create(0, 0, canvasWidth, 20, 0, "black", "CURRENT", canvas)
lastColor = button.create(canvasWidth-40, 20, 40, 40, 0, "white", "LAST", canvas)
RGB = button.create(7*40, 20, 40, 40, 0, "light gray", "RGB", canvas)

modeLine = penStamp.create(8*40, 20, 40, 40, 0, canvas, "LINE")
modeCircle = penStamp.create(9*40, 20, 40, 40, 0, canvas, "CIRCLE")
modeSquare = penStamp.create(10*40, 20, 40, 40, 0, canvas, "SQUARE")
modeHouse = penStamp.create(11*40, 20, 40, 40, 0, canvas, "HOUSE")
modeFlower = penStamp.create(12*40, 20, 40, 40, 0, canvas, "FLOWER")
currentMode = penStamp.create(canvasWidth - 80, 20, 40, 40, 0, canvas, "LINE")

mode = Modes.DRAWING
pen = Pen.LINE
stamp = Stamp.HOUSE