Hey, I am new to these forums, first post!
Any who. I made a program that has 20 balls of random size and shape. the only problem is i cant figure out how to make the balls bounce off of each other. They bounce off the walls fine. But not each other. I understand that i need to do it by checking the radius of each ball. I'm not sure how to implement it
here is my code
# Define some colors
black = ( 0, 0, 0)
white = ( 255, 255, 255)
green = ( 0, 255, 0)
red = ( 255, 0, 0)
#creats ball class.
# x and y cordiates starting points before random.
x = 0
y = 0
change_x = 0
change_y = 0
size = 5
#function to move the ball on the x and y at the same time.
self.x = self.x + self.change_x
self.y = self.y + self.change_y
#when ball hits the wall it changes the direction of movement.
if self.x <= 0:
self.change_x = 1
if self.x == 691:
self.change_x = -1
if self.y <= 0:
self.change_y = 1
if self.y == 491:
self.change_y = -1
def draw(self, screen):
pygame.draw.circle(screen, self.color, [self.x, self.y], self.size )
# Set the width and height of the screen [width,height]
pygame.display.set_caption("Quintens bouncing balls")
# Used to manage how fast the screen updates
#Loop until the user clicks the close button.
# -------- Main Program Loop -----------
#ball1 = Ball()
ball = [Ball() for i in range(0,20)]
#for loop to creat all random atribures for balls.
for i in range (0, 20):
ball[i].x = random.randrange(0,686)
ball[i].y = random.randrange(0, 486)
ball[i].color = [random.randrange(0, 256), random.randrange(0,256),random.randrange(0,256)]
ball[i].size = random.randrange(5,20)
ball[i].change_x = random.randrange(-2, 2, 1)
ball[i].change_y = random.randrange(-2, 2, 1)
print( i, ball[i].x, ball[i].y)
# ALL EVENT PROCESSING SHOULD GO BELOW THIS COMMENT
for event in pygame.event.get(): # User did something
if event.type == pygame.QUIT: # If user clicked close
done=True # Flag that we are done so we exit this loop
# ALL EVENT PROCESSING SHOULD GO ABOVE THIS COMMENT
# ALL GAME LOGIC SHOULD GO BELOW THIS COMMENT
# ALL GAME LOGIC SHOULD GO ABOVE THIS COMMENT
# ALL CODE TO DRAW SHOULD GO BELOW THIS COMMENT
# First, clear the screen to white. Don't put other drawing commands
# above this, or they will be erased with this command.
#creates the screen and draws 20 balls.
for i in range(20):
# Draw on the screen a green line from (0 ,0) to (100 ,100)
# 5 pixels wide .
# ALL CODE TO DRAW SHOULD GO ABOVE THIS COMMENT
# Go ahead and update the screen with what we've drawn.
# Limit to 20 frames per second
# Close the window and quit.
# If you forget this line, the program will 'hang'
# on exit if running from IDLE.