Using Sprites

From TRCCompSci - AQA Computer Science
Jump to: navigation, search

Sprites have many built in features in pygame, such as collision detection.

Simple Sprite

#Import statements are to enable the code to use the functions from the library
import pygame
import sys
import os

#initialize pygame & window
os.environ["SDL_VIDEO_CENTERED"] = "1"
pygame.init()
SCREENWIDTH = 500
SCREENHEIGHT = 500
SCREENSIZE = [SCREENWIDTH, SCREENHEIGHT]
SCREEN = pygame.display.set_mode(SCREENSIZE)
COLOR=[0,0,0]

b = pygame.sprite.Sprite() # create sprite
b.image = pygame.image.load("hero.png").convert() # load hero image
b.rect = b.image.get_rect()# use image extent values
b.rect.topleft = [0, 0] # put the hero in the top left corner

#game loop
while True:
    SCREEN.fill(COLOR)
    for events in pygame.event.get(): #get all pygame events
        if events.type == pygame.QUIT: #if event is quit then shutdown window and program
            pygame.quit()
            sys.exit()

    SCREEN.blit(b.image, b.rect)
    pygame.display.update()

Example with movement

#Import statements are to enable the code to use the functions from the library
import pygame
import sys
import os

#initialize pygame & window
os.environ["SDL_VIDEO_CENTERED"] = "1"
pygame.init()
SCREENWIDTH = 500
SCREENHEIGHT = 500
SCREENSIZE = [SCREENWIDTH, SCREENHEIGHT]
SCREEN = pygame.display.set_mode(SCREENSIZE)
COLOR=[0,0,0]

pos = [0,0] # position of sprite on the screen

b = pygame.sprite.Sprite() # create sprite
b.image = pygame.image.load("hero.png").convert() # load hero image
b.rect = b.image.get_rect()# use image extent values
b.rect.topleft = pos # put the hero at position

#game loop
while True:
    SCREEN.fill(COLOR)
    for events in pygame.event.get(): #get all pygame events
        if events.type == pygame.KEYDOWN:
            if events.key == pygame.K_LEFT:
                pos[0]=pos[0]-10
            elif events.key == pygame.K_RIGHT:
               pos[0]=pos[0]+10
            elif events.key == pygame.K_UP:
                pos[1]=pos[1]-10
            elif events.key == pygame.K_DOWN:
                pos[1]=pos[1]+10
            b.rect.topleft = pos

        if events.type == pygame.QUIT: #if event is quit then shutdown window and program
            pygame.quit()
            sys.exit()

    SCREEN.blit(b.image, b.rect)
    pygame.display.update()