After a few days of rest, today I have continued my pygame project again and will keep on working on my new pygame projects without stopping anymore starting from today. Today I have created two game sprite classes to render the player and the background on the game scene.
The player sprite class is almost the same as the background sprite class, the only reason I have created two game sprite classes is because I want to create extra custom methods for the background sprite class.
The player class (GameSprite.py) will look like this.
import pygame class GameSprite(object): def __init__(self, image, rect): self.image = image self.rect = rect self.sprite = pygame.image.load(image).convert_alpha() # return a pygame surface object def getImage(self): # this method will return a subsurface which is the child of the self.sprite surface return self.sprite.subsurface(self.rect)
The background class (BgSprite.py) is almost the same for now.
import pygame class BgSprite(object): def __init__(self, image, rect): self.image = image self.rect = rect self.sprite = pygame.image.load(image).convert() # return a pygame surface object def getImage(self): # this method will return a subsurface which is the child of the self.sprite surface return self.sprite.subsurface(self.rect)
Here is the modify version of the main file, the background and the player image has been displayed.
import sys, pygame from pygame import math as mt from pygame.locals import * from GameSprite import GameSprite from BgSprite import BgSprite pygame.init() size = width, height = 660, 660 pygame.display.set_caption("Hello World") # set the title of the window screen = pygame.display.set_mode(size) pygame.mixer_music.load('Music/winternight.ogg') pygame.mixer_music.play(-1) player_sprite = 'Asset/player.png' bg_sprite = 'Asset/bg.png' player_pos = mt.Vector2(width/2, height/2) # initialize the position of the player sprite rect = Rect(0, 0, 40, 40) # the rectangle object uses to clip the sprite area game_sprite = GameSprite(player_sprite, rect) game_sprite_surface = game_sprite.getImage() # get the player sprite surface rect = Rect(0, 0, 660, 660) game_bg_sprite = BgSprite(bg_sprite, rect) game_bg_surface = game_bg_sprite.getImage() # get the background sprite surface player_draw_pos = mt.Vector2(player_pos.x , player_pos.y) bg_draw_pos = mt.Vector2(0 , 0) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.mixer_music.stop() sys.exit() screen.blit(game_bg_surface, bg_draw_pos) screen.blit(game_sprite_surface, player_draw_pos) pygame.display.flip()
Run the above program will get this outcome.
The files under the project file explorer will now look like this.
In the next session we will deal with keyboard input so we can move the player around the game scene.