[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Math.Vector2()



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
Sent from the pygame-users mailing list archive at Nabble.com.