Hi,

the issue to track this is here:
    https://bitbucket.org/pygame/pygame/issue/172

The patch has been applied, but we still need unit tests.

regards,

ps. Lorenz, there should be an invitation for the pygame hg repository in
your email somewhere.




On Tue, Aug 13, 2013 at 3:42 PM, Lorenz Quack <d...@amberfisharts.com> wrote:

> Hi List,
>
> I think it's a bug in the lib.
> The inplace operators didn't increment the reference count.
> But according to the Docs [1] they should return a "New reference".
> patch included.
>
> cheers,
> Lorenz
>
> [1] 
> http://docs.python.org/2/c-**api/number.html#PyNumber_**InPlaceAdd<http://docs.python.org/2/c-api/number.html#PyNumber_InPlaceAdd>
>
>
>
> On 07/12/2013 02:18 AM, Aikiman wrote:
>
>> heres the code, just one class and main. Ive commented out the problem
>> code
>> so you need to uncomment to see the errors. Like I said anything where
>> vec*=vec or vec+=vec causes malloc errors. Thanks for helping.
>>
>> import pygame, math, random
>>
>> pygame.init()
>>
>> class Circle(pygame.sprite.Sprite):
>>      def __init__(self, screen):
>>          pygame.sprite.Sprite.__init__(**self)
>>          self.screen = screen
>>          self.position =
>> pygame.math.Vector2(random.**randrange(20,self.screen.get_**width()),
>> self.screen.get_height()/3)
>>          self.velocity = pygame.math.Vector2(0.0, 0.0)
>>          self.acceleration = pygame.math.Vector2(0.0, 0.1)
>>          self.netForce =  pygame.math.Vector2(0.0, 0.0)
>>          self.x = random.randrange(20,self.**screen.get_width())
>>          self.y = self.screen.get_height()/2
>>          self.radius = random.randrange(5,30)
>>          self.image = pygame.Surface((self.radius*2,**self.radius*2))
>>          self.image.set_colorkey((0,0,**0))
>>          self.image.set_alpha(120)
>>          self.mass = self.radius/15.0
>>          pygame.draw.circle(self.image, (175,255,0),
>> (self.radius,self.radius), self.radius)
>>          self.image = self.image.convert_alpha()
>>          self.rect = self.image.get_rect()
>>          self.rect.center = self.position
>>
>>      def update(self):
>>          self.calcPos()
>>          self.checkBounds()
>>          self.rect.center = self.position
>>          #self.netForce *= 0.0
>>
>>
>>      def calcPos(self):
>>          self.acceleration = self.netForce
>>          #self.velocity += self.acceleration
>>          #self.position += self.velocity
>>
>>
>>      def applyForce(self, force):
>>          force /self.mass
>>          #self.netForce += force
>>
>>      def checkBounds(self):
>>          if self.position[1] > self.screen.get_height():
>>              self.acceleration[1] *= -1.0
>>              self.position[1] = self.screen.get_height()
>>          if self.position[0] > self.screen.get_width():
>>              self.acceleration[0] *= -1.0
>>              self.position[0] = self.screen.get_width()
>>          if self.position[1] < 0:
>>              self.acceleration[1] *= -1.0
>>          if self.position[0] < 0:
>>              self.acceleration[0] *= -1.0
>>
>> def main():
>>      screen = pygame.display.set_mode((600,**400))
>>      background = pygame.Surface((screen.get_**size()))
>>      background.fill((150,150,150))
>>      background = background.convert()
>>
>>      circleGRP = pygame.sprite.Group() #Add balls
>>      for x in range(10):
>>          circleGRP.add(Circle(screen))
>>
>>      wind = pygame.math.Vector2(1.0, 0)
>>      gravity = pygame.math.Vector2(0, 1.0)
>>
>>      clock = pygame.time.Clock()
>>      mainLoop = True
>>
>>      while mainLoop:
>>          clock.tick(30) #Clock
>>          for event in pygame.event.get(): #Key events
>>              if event.type == pygame.QUIT:
>>                  mainLoop = False
>>              elif event.type == pygame.KEYDOWN:
>>                  if event.key == pygame.K_ESCAPE:
>>                      mainLoop = False
>>              elif event.type == pygame.MOUSEBUTTONDOWN: #Add wind
>>                  if pygame.mouse.get_pressed()[0]:
>>                      for circle in circleGRP:
>>                          circle.applyForce(wind)
>>
>> #-----------------------------**------------------------------**
>> -----------------
>>          for circle in circleGRP: #Add gravity
>>              gravity = gravity * circle.mass
>>              circle.applyForce(gravity)
>>              #pass
>>
>>              #circleX = circle.dx * -1 #Add drag
>>              #circleY = circle.dy * -1
>>              #drag = (circleX/80* circle.mass* (circle.radius/5),
>> circleY/80*
>> circle.mass* (circle.radius/5))
>>              #circle.applyForce(drag)
>>
>> #-----------------------------**------------------------------**
>> -----------------
>>          circleGRP.update()
>>          screen.blit(background, (0,0))
>>          circleGRP.draw(screen)
>>          pygame.display.flip()
>>
>>      pygame.quit()
>>
>> if __name__ == "__main__":
>>      main()
>>
>>
>>
>>
>> --
>> View this message in context: http://pygame-users.25799.x6.**
>> nabble.com/pygame-Math-**Vector2-tp798p801.html<http://pygame-users.25799.x6.nabble.com/pygame-Math-Vector2-tp798p801.html>
>> Sent from the pygame-users mailing list archive at Nabble.com.
>>
>>
>

Reply via email to