Pygame surfaces and their Rects
Posted
by
Jaka Novak
on Game Development
See other posts from Game Development
or by Jaka Novak
Published on 2012-12-17T15:21:43Z
Indexed on
2012/12/17
17:14 UTC
Read the original article
Hit count: 410
pygame
I am trying to understand how pygame surfaces work. I am confused about Rect position of Surface object. If I try blit surface on screen at some position then Surface is drawn at right position, but Rect of the surface is still at position (0, 0)... I tried write my own surface class with new rect, but i am not sure if is that right solution. My goal is that i could move surface like image with rect.move() or something like that. If there is any solution to do that i would be happy to read it.
Thanks for answer and time for reading this awful English
If helps i write some code for better understanding my problem. (run it first, and then uncomment two lines of code and run again to see the diference):
import pygame
from pygame.locals import *
class SurfaceR(pygame.Surface):
def __init__(self, size, position):
pygame.Surface.__init__(self, size)
self.rect = pygame.Rect(position, size)
self.position = position
self.size = size
def get_rect(self):
return self.rect
def main():
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Screen!?")
clock = pygame.time.Clock()
fps = 30
white = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
surface = pygame.Surface((70,200))
surface.fill(red)
surface_re = SurfaceR((300, 50), (100, 300))
surface_re.fill(blue)
while True:
for event in pygame.event.get():
if event.type == QUIT:
return 0
screen.blit(surface, (100,50))
screen.blit(surface_re, surface_re.position)
#pygame.draw.rect(screen, white, surface.get_rect())
#pygame.draw.rect(screen, white, surface_re.get_rect())
pygame.display.update()
clock.tick(fps)
if __name__ == "__main__":
main()
© Game Development or respective owner