0

I am trying to draw circle in the upper left corner of a graphics window, and then move that circle at a diagonal to the bottom right corner, and then bounce it back to the upper left, and so on until my loop is exhausted. I can't get my moving circle to reverse direction at the first bounce point (first if-statement inside for loop), and I don't know why...

from graphics import*

def main():
    # create a 200 x 200 graphics window
    win = GraphWin()
    x = 10
    y = 10
    # create a circle of radius 10 at point (10, 10)
    circle = Circle(Point(x, y), 10)
    circle.setFill("Red")
    circle.setOutline("black")
    # draw the circle in the graphics window
    circle.draw(win)
    # wait for a mouse click
    win.getMouse()
    dx = .01
    dy = .01
    for i in range (100000):
        # move the circle 
        circle.move(dx, dy)
        x = x + dx
        y = y + dy
        # when x reaches 190, reverse the direction of movement in
        # the x direction
        if x == 190:
            dx = -1*dx
        else:
            dx = dx
        # when y reaches 190, reverse the direction of movement in
        # the y direction
        if y == 190:
            dy = -1*dy
        else:
            dy = dy
        # when x reaches 10, reverse the direction of movement in
        # the x direction
        if x == 10:
            dx = -1*dx
        else:
            dx = dx
        # when y reaches 10, reverse the direction of movement in
        # the y direction
        if y == 10:
            dy = -1*dy
        else:
            dy = dy
    #wait for a mouse click
    win.getMouse()
    win.close()
main()

Edited by peter_budo: Correcting code tags

2
Contributors
1
Reply
3
Views
5 Years
Discussion Span
Last Post by woooee
0

Using == is always dicey. Add a print statement to see what happens, and instead of ==190, use > 189.

for i in range (100000):
        print x, y
        # move the circle 
        circle.move(dx, dy)
        x = x + dx
        y = y + dy
        # when x reaches 190, reverse the direction of movement in
        # the x direction
        if x > 189:
            dx = -1*dx
#        else:
#            dx = dx   ## Huh...this statement does nothing

Edited by woooee: n/a

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.