[Tutor] How to make object disappear?
Lisa Hasler Waters
lwaters at flinthill.org
Mon May 9 13:05:36 EDT 2016
Thank you all so much for your guidance! We will try these out during our
next class and will hopefully find success. We can't thank you enough for
your support!
Best, Lisa and students
On Mon, May 9, 2016 at 12:34 PM, Alan Gauld via Tutor <tutor at python.org>
wrote:
> On 09/05/16 16:55, boB Stepp wrote:
>
> >> class dot:
> >> def __init__(self, canvas, color):
> >> self.canvas = canvas
> >> self.id = canvas.create_oval(15, 15, 30, 30, fill='Blue',
> >> tags='dot1')
> >>
> >> this = dot(canvas, 'blue')
>
> You create an instance of your class called this.
> But you never refer to it again.
>
> >> def ball(n, x, y):
> >> canvas.move(n, x, y)
> >>
> >> def restart():
> >> if (canvas.find_overlapping(x, y, x2, y2) == (1, 2)) or
> >> (canvas.find_overlapping(x, y, x2, y2) == (1, 3)) or
> >> (canvas.find_overlapping(x, y, x2, y2) == (1, 4)) or
> >> (canvas.find_overlapping(x, y, x2, y2) == (1, 5)) or
> >> (canvas.find_overlapping(x, y, x2, y2) == (1, 6)) == True:
> >> canvas.delete('dot1')
>
> Here you delete the shape that your object, this, drew on
> the canvas but you do not delete the object. 'this' is
> still there.
>
> The normal way to do this kind of thing in a GUI program
> is to have the class have a paint/draw method that makes
> it visible and a hide/erase method that makes it invisible
> (by drawing itself with the background colour). You probably
> need a move() method too. You can then manipulate the "dot"
> (although Ball is probably a more suitable name?) by
> calling move() draw() and erase() on the object itself.
> You might want an isOverlapping() method too, that simply
> returns a boolean. That will hide all that horrible if/else
> nastiness (or even the dictionary lookup if you adopt
> Bob's (excellent) option.
>
> You then wind up with something like
>
> ball.move(x,y)
> if ball.isOverlapping(X,Y,X1,Y1):
> ball.erase()
> else:
> ball.draw()
>
> Which is a lot more readable IMHO.
>
> A more indirect solution to your problem would be to use
> pyGame to build the game where sprites etc come as standard.
> But pyGame itself does not of course come as standard... :-(
>
> --
> Alan G
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
> http://www.amazon.com/author/alan_gauld
> Follow my photo-blog on Flickr at:
> http://www.flickr.com/photos/alangauldphotos
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
--
Lisa Waters, PhD
Technology Integration
Flint Hill School
More information about the Tutor
mailing list