import os os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide" import pygame import sys pygame.init() # Some variables used to initialize the window # The width and height are in pixels win_width = 600 win_height = 480 win_bg_color = (26, 110, 43) text_color = (242, 238, 10) running = True # We create a window object used to draw pygame things # It is initialized with set_mode((width, height)) window = pygame.display.set_mode((win_width, win_height)) pygame.display.set_caption('PyGame Fancy Basics') # In order to work with images they must be turned into # an object. The image.load() method is used to read in an # image and create an object which can be manipulated. icon = pygame.image.load(os.path.join("img", "melon_icon_64.png")) # If the image has transparent portions the convert_alpha() method # must be called to properly render the image when used icon.convert_alpha() # This will set the icon used on the title bar and in the # system tray. A 64x64 icon should be used. pygame.display.set_icon(icon) # This will fill the entire window with a single color # The color parameter must be a three element tuple (r, g, b) window.fill(win_bg_color) # Here we use the Font() method to import a True Type font # from the "font/" folder with a size of 200 pixeboy_200 = pygame.font.Font(os.path.join("font", "Pixeboy.ttf"), 200) # We create two lines of text with the font.render() method # Parameters are: # text to display (a string) # is font antialiased (pretty much always True) # color of text (this is a R, G, B tuple) # This is called a "text surface" title_text_1 = pixeboy_200.render("HELLO", True, text_color) title_text_2 = pixeboy_200.render("WORLD", True, text_color) # Text is drawn on the screen by specifying the top left # corner of an imaginary rectangle that contains the text # We want to center this text in the window so we # subtract half the width of the text (get_width()) # from half the width of the program window text_x = (win_width // 2) - (title_text_1.get_width() // 2) # We'll start 25 pixels from the top of the window text_y = 25 # The blit() method draws a text surface in the specified # window at the coordinates specified (a (x, y) tuple) # Note: This just draws the text. It won't show up until # display.flip() or display.update() is called window.blit(title_text_1, (text_x, text_y)) # Now we do the same thing for the second line of text # just moved down (y) by the height of the first line of # text plus an extra 25 pixels for separation text_x = (win_width // 2) - (title_text_2.get_width() // 2) text_y = 25 + title_text_2.get_height() + 25 window.blit(title_text_2, (text_x, text_y)) # Just like the icon used for the title bar # Any other images can be loaded into an object emoji = pygame.image.load(os.path.join("img", "poop_emoji_sm.png")) emoji.convert_alpha() # Let's place the image 25 pixels from the bottom of the window emoji_x = (win_width // 2) - (emoji.get_width() // 2) emoji_y = win_height - 25 - emoji.get_height() # And we blit/draw it onto the window the same way as we do text window.blit(emoji, (emoji_x, emoji_y)) clock = pygame.time.Clock() # The main loop. This while loop runs until "running" is False while running is True: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # pygame.KEYDOWN happens the moment a key is pressed down if event.type == pygame.KEYDOWN: # If the pressed key is "ESC" button, then let's exit if event.key == pygame.K_ESCAPE: running = False pygame.display.flip() clock.tick(60) # We get to this poince once "running" is False. # Clean up pygame with the quit() method, then exit program. pygame.quit() sys.exit()