90 lines
3.7 KiB
Python
90 lines
3.7 KiB
Python
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)
|
|
|
|
# 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
|
|
running = True
|
|
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() |