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])
'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