I put some thought into your suggestions, but I'm still not piecing it together. I tried to use the inflate, transform.scale in my update function, but that didn't work. Also, I don't understand your hint (hint: move some of the constructor code to a resize method and call that from in constructor, as well as the main) By constructor you mean the first __init__( variable, variable...) ? This stuff doesn't come naturally to me, but I find it fascinating. If you could just show me (more explicitly) how to do this, that would help. Thanks for the links, I will check them out. On Wed, Oct 6, 2010 at 10:02 PM, B W <stabbingfin...@gmail.com> wrote:
> You have to resize the rect *and* the image. You can use pygame functions > Rect.inflate* and transform.scale, respectively, or you can do-it-yerself > (hint: move some of the constructor code to a resize method and call that > from in constructor, as well as the main loop). > > Also, the += and -= in the event handler cases are probably not doing what > you intend. If you get the resize working so you can see the circle change > and it grows or moves at a strange rate, re-examine those calculations. > > Gumm > > > On Wed, Oct 6, 2010 at 6:07 PM, kevin hayes <kevino...@gmail.com> wrote: > >> >> Hi, >> >> Well, I got it working. The circle moves correctly according to keyboard >> input. The trouble I am having is with resizing the circle/sprite. >> Everything looks logical to me, but it won't function the way I want it to. >> I tried using the rect.inflate(x,y) method, but I couldn't see how to >> incorporate it. If someone could show me how to add the some resizing >> functionality, that would be great. I am going to be getting a tutor soon, >> so I won't be bringing my beginner questions to this board. Thanks again to >> everyone who has assisted me. >> >> Here she is: >> >> """ MoveCircleSizeCircle.py >> Makes a circle that changes >> it's position and size by the >> keyboard, 10/3/10""" >> >> import pygame >> pygame.init() >> >> screen = pygame.display.set_mode((640, 480)) >> >> class Circle(pygame.sprite.Sprite): >> def __init__(self, startPos, direction, reSize): >> pygame.sprite.Sprite.__init__(self) >> self.image = pygame.Surface((50, 50)) >> self.image.fill((255, 255, 255)) >> pygame.draw.circle(self.image, (0, 0, 255), (25, 25), 25) >> self.rect = self.image.get_rect() >> self.rect.center = startPos >> self.dx,self.dy = direction >> self.da,self.db = reSize >> >> def update(self): >> >> self.rect.width += self.da #add to rects size by (x,y) values >> self.rect.height += self.db >> >> if self.rect.height > 199: >> self.rect.height = 200 >> if self.rect.width > 199: >> self.rect.width = 200 >> if self.rect.height < 1: >> self.rect.height = 1 >> if self.rect.width < 1: >> self.rect.width = 1 >> >> self.rect.centerx += self.dx #move rect (x, y) >> self.rect.centery += self.dy >> >> if self.rect.right > screen.get_width(): >> self.rect.left = screen.get_width() - 50 >> if self.rect.left < 0: >> self.rect.right = 50 >> if self.rect.bottom > screen.get_height(): >> self.rect.top = screen.get_height() - 50 >> if self.rect.top < 0: >> self.rect.bottom = 50 >> def main(): >> pygame.display.set_caption("Move the Circle with Arrows, Resize it >> with(0)+(9)-") >> >> background = pygame.Surface(screen.get_size()) >> background.fill((255, 255, 255)) >> screen.blit(background, (0, 0)) >> >> >> circle = Circle([320, 240], [0, 0], [0, 0]) >> pygame.mouse.set_visible(False) >> allSprites = pygame.sprite.Group(circle) >> clock = pygame.time.Clock() >> keepGoing = True >> >> while keepGoing: >> clock.tick(30) >> for event in pygame.event.get(): >> if event.type == pygame.QUIT: >> keepGoing = False >> elif event.type == pygame.KEYDOWN: >> if event.key == pygame.K_DOWN: >> circle.dy += 2 >> if event.key == pygame.K_UP: >> circle.dy -= 2 >> if event.key == pygame.K_RIGHT: >> circle.dx += 2 >> if event.key == pygame.K_LEFT: >> circle.dx -= 2 >> if event.key == pygame.K_ESCAPE: >> keepGoing = False >> if event.key == pygame.K_9: #resize by -2 >> circle.da += -2 >> if event.key == pygame.K_0: >> circle.db += 2 #resize by +2 >> >> elif event.type == pygame.KEYUP: >> if event.key == pygame.K_DOWN: >> circle.dy = 0 >> if event.key == pygame.K_UP: >> circle.dy = 0 >> if event.key == pygame.K_LEFT: >> circle.dx = 0 >> if event.key == pygame.K_RIGHT: >> circle.dx = 0 >> if event.key == pygame.K_9: >> circle.da = 0 >> if event.key == pygame.K_0: >> circle.db = 0 >> >> allSprites.clear(screen, background) >> allSprites.update() >> allSprites.draw(screen) >> >> pygame.display.flip() >> >> pygame.mouse.set_visible(True) >> >> if __name__ == "__main__": >> main() >> >> pygame.quit() >> >> >> >