logo animation 

include star1

logo backcolor "black"
logo textsize 20
set what = buttonchoice "What do you want to bounce around?" "Star|Word(s)|Triangle"
if :what = "word(s)" [ set word = typein "Enter your word(s):" "" ]

moveto middle
logo turtledir = (random 360)
pd

set rotangle = 0
logo linecolor = "yellow"
message "Bounce!" "Stop"
repeat untilbreak [
  if keypress = yes  [ break ]

  if :what = "star" [ star1 30 :rotangle ]
  elseif :what = "word(s)" [ sayc :word ]
  elseif :what = "triangle" [ pd; polygon 50 3 :rotangle; pu ]

  // wait 2/100 second...
  wait 2

  // now erase the object..
  logo linecolor = backcolor
  if :what = "star" [ star1 30 :rotangle ]
  elseif :what = "word(s)" [ sayc :word; ]
  elseif :what = "triangle" [ pd; polygon 50 3 :rotangle; pu ]
  logo linecolor = "yellow"


  // see if object has reached the edge figure out how to bounce it..
  if turtley > winhigh or turtlex > winwide or turtley < 0 or turtlex < 0 
    [
    // top edge...
    if turtley > winhigh and inrange turtledir 0 90 = 1        [ set basedeg = 90 ]
    elseif turtley > winhigh and inrange turtledir 270 360 = 1 [ set basedeg = 270 ]

    // right edge...
    elseif turtlex > winwide and inrange turtledir 90 180 = 1 [ set basedeg = 180 ]
    elseif turtlex > winwide and inrange turtledir 0 90 = 1   [ set basedeg = 0 ]

    // bottom edge...
    elseif turtley < 0 and inrange turtledir 180 270 = 1  [ set basedeg = 270 ]
    elseif turtley < 0 and inrange turtledir 90 180 = 1   [ set basedeg = 90 ]

    // left edge...
    elseif turtlex < 0 and inrange turtledir 270 360 = 1  [ set basedeg = 360 ]
    elseif turtlex < 0 and inrange turtledir 180 270 = 1  [ set basedeg = 180 ]

    // compute new direction and add a little randomness..
    set newdir = calc :basedeg - turtledir    
    set newdir = calc :newdir + :basedeg
    set newdir = calc :newdir + random 10

    // back up a bit to eliminate confusion..
    bk 8

    // handle dir < 0 and dir >= 360...
    if :newdir < 0  [ set newdir = calc :newdir + 360 ]
    if :newdir >= 360  [ set newdir = calc :newdir - 360 ]

    logo turtledir = :newdir
    ]

  // adjust position forward a little...
  pu fd 8

  // spin the star.. higher number here makes star spin faster..
  incr rotangle by 3
  if :rotangle >= 360 [ make rotangle = 0 ]

  ]
  
