# Main Command: Go # Screen_Saver by Guy Walker # www.logoarts.co.uk to new # set default screen, pen and turtle ResetAll SetScreenSize [400 400] HideTurtle SetSC Black SetPC Green SetPS 1 PenUp end to init # initialise starting speeds and coordinate lists Make "dX RanSpeed Make "dY RanSpeed Make "P 0 Make "Q 0 Make "eX RanSpeed Make "eY RanSpeed Make "R 0 Make "S 0 Make "Pp [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] Make "Qp [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] Make "Rp [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] Make "Sp [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] end to drawline # move to point PQ and draw a line to point RS Make "P :P+:dX Make "Q :Q+:dY If :P > 180 [Make "dX Minus RanSpeed] If :P < -180 [Make "dX RanSpeed] If :Q > 180 [Make "dY Minus RanSpeed] If :Q < -180 [Make "dY RanSpeed] PenUp SetXY :P :Q Make "Pp LPut First Pos :Pp Make "Qp LPut Last Pos :Qp Make "R :R+:eX Make "S :S+:eY If :R > 180 [Make "eX Minus RanSpeed] If :R < -180 [Make "eX RanSpeed] If :S > 180 [Make "eY Minus RanSpeed] If :S < -180 [Make "eY RanSpeed] PenDown SetXY :R :S Make "Rp LPut First Pos :Rp Make "Sp LPut Last Pos :Sp end to eraseline # move to point PQ and draw a black line to point RS PenUp SetXY (First :Pp) (First :Qp) PenDown SetPC Black SetXY (First :Rp) (First :Sp) Make "Pp ButFirst :Pp Make "Qp ButFirst :Qp Make "Rp ButFirst :Rp Make "Sp ButFirst :Sp end to ranspeed # return a random speed between 4 and 13 Output 4 + Random 10 end to go New Init Forever [ SetPC Hue :P+:Q+:R+:S DrawLine EraseLine Wait 4] end To Hue :Theta # Output RGB hue list from angle :Theta Make "Red Round 127.5*(1+Sin :Theta) Make "Green Round 127.5*(1+Sin (:Theta+120)) Make "Blue Round 127.5*(1+Sin (:Theta+240)) Output (List :Red :Green :Blue) End