[Tutor] Livewires questions

Tonu Mikk tmikk at umn.edu
Thu Jul 26 21:20:29 CEST 2007


Eric Brunson wrote:
> Tiger12506 wrote:
>   
>>> Based on your guidance, I figured it out.  I need to use a return 
>>> statement, which I had not encountered before.  Now I wrote my 
>>> definitions in this way:
>>>
>>> def collided():
>>>    if player_x == robot_x+0.5 and player_y == robot_y+0.5:
>>>       return True
>>>     
>>>       
>
> Granting that I have not looked at any of the Livewires modules, I just 
> wanted to say...
>
> A general check for collision would probably involve the distance 
> formula from geometry
>
> collided( (x1,y1), (x2,y2) ):
>    return( sqrt( (x1-x2)**2 + (y1-y2)**2 ) < 1 )
>
> but could probably be simplified to something like:
>
> def collided( (x1,y1), (x2,y2) ):
>    return( abs( x1 - x2 ) < .5 and abs( y1 - y2 ) < .5 )
>
>   
Thanks Eric for your suggestions.  I believe Livewires modules have 
simplified collision checking for programming novices like myself.  
There are two shapes that I am working with, a circle and a square.  The 
position of the circle is defined by the center coordinates whereas the 
position of the square is defined by the lower left corner of the 
square.  When my circle is 0.5 points in diameter, I can add this much 
to both x and y coordinates of the square which will then give me the 
point where the square is sitting on top of the circle.  It took me a 
long time to figure this out.  I had to re-read the Graphics guide sheet 
that came with Livewires multiple times to try to get it to work 
correctly.  I believe this part of my code is OK. 

Tonu


More information about the Tutor mailing list