Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from guizero import App, Box, MenuBar, Picture, PushButton, Text
- import os
- from random import randint
- from random import shuffle
- no_success = 0
- no_failures = 0
- def setup_round():
- global emojis_save
- global pictures
- global buttons
- emojis = emojis_save.copy()
- shuffle(emojis)
- for idx in range(0, len(pictures)):
- pictures[idx].visible = False
- buttons[idx].visible = False
- buttons[idx].update_command(match_emoji, [False])
- # select the matching emoji
- matched_emoji = emojis.pop()
- # select a random picture index for this emoji
- idx_picture = randint(0, 8)
- # select a random button index for this emoji
- idx_button = randint(0, 8)
- # set the chosen picture's image to the matched_emoji
- pictures[idx_picture].image = matched_emoji
- pictures[idx_picture].visible = True
- # set the chosen button's image to the matched_emoji
- buttons[idx_button].image = matched_emoji
- buttons[idx_button].visible = True
- # set the command to be called and pass True, as this is the matching emoji
- buttons[idx_button].update_command(match_emoji, [True])
- # set all image properties to an emoji
- # if the related visible property is False
- for idx in range(0, len(pictures)):
- if not pictures[idx].visible:
- pictures[idx].image = emojis.pop()
- pictures[idx].visible = True
- if not buttons[idx].visible:
- buttons[idx].image = emojis.pop()
- buttons[idx].visible = True
- def match_emoji(matched):
- global no_success
- global no_failures
- if matched:
- no_success = no_success + 1
- result.value = 'correct (' + str(no_success) + '/' + str(no_failures) + ')'
- else:
- no_failures = no_failures + 1
- result.value = 'incorrect (' + str(no_success) + '/' + str(no_failures) + ')'
- setup_round()
- def exit_app():
- global app
- app.destroy()
- def about_app():
- global app
- app.info('About', "The Emoji Matching Game")
- # set the path to the emoji folder on your computer
- emojis_dir = "emojis"
- # create a list of the locations of the emoji images
- # in each round we copy this data to the emojis array
- emojis_save = [os.path.join(emojis_dir, f) for f in os.listdir(emojis_dir) if os.path.isfile(os.path.join(emojis_dir, f))]
- app = App("Emoji Match Game")
- app.when_closed = exit_app
- menubar = MenuBar(app,
- # menu bar
- toplevel=["File", "Help"],
- # menu items
- options=[
- # File
- [
- # items in File
- ["Exit", exit_app]
- ],
- # Help
- [
- # items in Help
- ["About", about_app]
- ]
- ])
- result = Text(app)
- game_box = Box(app, border=True)
- pictures_box = Box(game_box, layout="grid", align="left")
- buttons_box = Box(game_box, layout="grid", border="3", align="left")
- # create empty lists to which pictures and buttons will be added
- # we use the property visible to distinguish between set and not
- pictures = []
- buttons = []
- for x in range(0, 3):
- for y in range(0, 3):
- # put the pictures into the list
- picture = Picture(pictures_box, grid=[x,y])
- pictures.append(picture)
- # put the buttons into the list
- button = PushButton(buttons_box, grid=[x, y])
- # set the command to be called and pass False, as these emoji wont be the matching ones
- buttons.append(button)
- setup_round()
- # now all image properties are set and we can display the GUI
- app.display()
Advertisement
Add Comment
Please, Sign In to add comment